Blame | Last modification | View Log | Download
// Prijimac
#include "main.h"
#include "..\common.h"
#DEFINE LCD_RS PIN_B1 // rizeni registru LCD displeje
#DEFINE LCD_E PIN_B0 // enable LCD displeje
#DEFINE LCD_DATA_LSB PIN_B2 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou)
#INCLUDE "MYLCD.C"
#DEFINE PRIJIMAC PIN_A3 // pin na ktery je pripojen prijimac
#DEFINE SERVO_X PIN_A2 // pin na ktery je pripojeno servo
#DEFINE SERVO_Y PIN_B0
#INCLUDE "prijimac.c"
int8 x,y,tlacitka;
int8 xc,yc; // pocitadla aktualizace x a y
int e1,e2,e3,e4; // pocitadla chyb - ladici
void main()
{
lcd_init(); // zinicializuj LCD display
delay_ms(5);
printf(lcd_putc,"Ahoj...");
delay_ms(300);
x = 0;
y = 0;
xc = 0;
yc = 0;
e1 = 0;
e2 = 0;
e3 = 0;
e4 = 0;
while (true)
{
int8 kanal, data;
if (prijmi_ramec(&kanal,&data))
e1++;
else
{
switch (kanal) // rozeskoc se podle adresy osy
{
case OSA_X:
{
x=data;
xc++;
break;
};
case OSA_Y:
{
y=data;
yc++;
break;
};
case TLs:
{
tlacitka=data;
break;
};
};
// ladici vypisy
lcd_gotoxy(1,1); // vytiskni X a Y
printf(lcd_putc,"X%2U %3U%3U%3U ", x, xc, e1, e2);
lcd_gotoxy(1,2);
printf(lcd_putc,"Y%2U %3U%3U%3U ", y, yc, e3, tlacitka);
// ovladani serv
output_high(SERVO_X);
delay_ms(1);
for (data=x; data--; data>0)
delay_us(65);
output_low(SERVO_X);
output_high(SERVO_Y);
delay_ms(1);
for (data=y; data--; data>0)
delay_us(65);
output_low(SERVO_Y);
for (data=30-x-y; data--; data>0)
delay_us(65);
// Vystupy tlacitek
// if (bit_test(tlacitka,1)) output_high(pin_A2); else output_low(pin_A2);
output_bit(PIN_A2,bit_test(tlacitka,1));
}
}
}