?lang_form?
?lang_select?
?lang_submit?
?lang_endform?
{HEADER END}
{FILE START}
library
?curdirlinks? - Rev 3
?prevdifflink? - Blame - ?getfile?
////////////////////////////////////////////////////////////////
// Program pro otestovani funkci knihovny KBD.C
// Jde o pouziti funkci pod prerusovacimi rutinami
////////////////////////////////////////////////////////////////
//
// (c) PEFI 2003
// Verze 0.00 - uvodni verze
//
////////////////////////////////////////////////////////////////
#include <16F876.h>
#use delay(clock=4000000)
#fuses XT,NOBROWNOUT,NOPROTECT,NOLVP,NOWDT
// prepinace programu
#define FCE_GETC
//#define FCE_WAITC // pouzijeme funkci, ktera ceka na klavesu a spi
//#define FCE_TIMEOUTC // pouzije funkci, ktera ceka na klavesu jen po urcitou dobu
// LCD Display
#define LCD_RS PIN_B2 // rizeni registru LCD displeje
#define LCD_E PIN_B3 // enable LCD displeje
#define LCD_DATA_LSB PIN_A0 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou)
#include <lcd.c>
// klavesnice
#include <kbd.c>
// prerusovaci rutina od zmeny na klavesnici
//
#int_RB
void RB_handler()
{
kbd_pullkbd();
}
// perusovaci rutina pro odmerovani doby zakmitu a timeoutu
#int_timer1
void timer0_handler()
{
kbd_ticktimer();
set_timer1(-600l); // nastaven tik po 10ms
}
/****************************************/
/********* HLAVNI SMYCKA ****************/
/****************************************/
void main() {
int c;
setup_timer_1(T1_EXTERNAL | T1_CLK_OUT ); // povol oscilator na timeru1, slouzi k mereni casu i behem spanku
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_RB);
lcd_init();
kbd_init();
enable_interrupts(GLOBAL);
#ifdef FCE_GETC
printf(lcd_putc,"Int: kbd_getc ");
#endif
#ifdef FCE_WAITC
printf(lcd_putc,"Int: kbd_waitc ");
#endif
#ifdef FCE_TIMEOUTC
printf(lcd_putc,"Int:kbd_timeoutc");
#endif
while(1)
{
#ifdef FCE_GETC
c=kbd_getc();
#endif
#ifdef FCE_WAITC
c=kbd_waitc();
#endif
#ifdef FCE_TIMEOUTC
delay_ms(1000);
lcd_gotoxy(1,2);
printf(lcd_putc,"Ceka na stisk ");
c=kbd_timeoutc(1000); // timeout nastaven na cca 10s
#endif
if (c!=0)
{
lcd_gotoxy(1,2);
printf(lcd_putc,"Stisknuto %2X ",c); // vypise kod klavesy
}
#ifdef FCE_TIMEOUTC
else {
lcd_gotoxy(1,2);
printf(lcd_putc,"timeout vyprsel "); // vypie kod klavesy
}
#endif
}
}
// End of File
|
{FILE END}
{FOOTER START}
Powered by WebSVN v2.8.3