?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