ui.c By Zhi-Hern Loh

Home
Design
Results
A 2nd try
Schematics
Code
Files
Links
Contact

//ui.c
//user interface            
   
//initialize the user interface
void UI_Init(void)
begin                          
PushState = NoPush;
Button_DDR = 0x00;//set as inputs
Button_PORT = 0xff;//pull up on
Clr_Butnum;
//Use Timer3 for debounce timing
//prescalar 64
//ovrfl at 0xffff = 0.262 ms
TCCR3B = 0x03;//ck/64
end

//debounces the push buttons
void debounce(void)
begin
unsigned char Butnum;
Butnum = ~Button_PIN;           
switch(PushState)
     begin
     case NoPush:      
        if (Butnum > 0) PushState=MaybePush;
        else PushState=NoPush;
        break;
     case MaybePush:
        if (Butnum > 0) 
        begin
           PushState=Pushed;   
           Current_Butnum=Butnum;
        end
        else PushState=NoPush;
        break;
     case Pushed: 
        if (Butnum > 0) 
          begin
          PushState=Pushed; 
          //current_Butnum = Butnum;
          end
        else PushState=MaybeNoPush;    
        break;
     case MaybeNoPush:
        if (Butnum > 0) 
          begin
          PushState=Pushed; 
          end
        else                   
           begin               
           Set_Butnum;
           PushState=NoPush;
           //current_Butnum=Butnum;
           end 
     end//switch
end//debounce keypad

Home | Design | Results | A 2nd try | Schematics | Code | Files | Links | Contact

For problems or questions regarding this web contact Zhi-Hern Loh.
Last updated: 05/02/02.