INT0_INTERRUPT_EDGE_DETECTION_TEST_18f4550


       
Led changes it's state whenever there is rising edge at RB0.


 // Int0 Test
 //Input at RB0

#define led PORTb.f1

sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections
 char txt1[] = "INT0_RISING_EDGES";

 char str[12],lcd[12],i,j;
 int cnt;
 
void main()

     {
      OSCCON=0xff;
      TRISB=0x01;
      ADCON1 = 0x0F;
      CMCON = 0x07;
      INTCON2.INTEDG0=1; //interrupt on rising edge
      INTCON.GIE=1;
      INTCON.INT0IE=1;
      INTCON.INT0IF=0;
      Lcd_Init();
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,txt1);
   
     
      while(1)

      {

  if(cnt==255)  //refresh led
           {
           cnt=0;
           Lcd_Cmd(_LCD_CLEAR);
           Lcd_Cmd(_LCD_CURSOR_OFF);
           Lcd_Out(1,1,txt1);
         
           }
       IntToStr(cnt,str);     // long to string
        j=0;
      for(i=0;i<=9;i++)
         {
         if(str[i]!=' ')       // remove blanks
         {
         lcd[j]=str[i];
          j=j+1;
         }
         }
       
        Lcd_Out(2,7,lcd);


     }
   
     }
   
 void interrupt()
 {
 led=~led  ;

 cnt=cnt+1;


 INTCON.INT0IF=0;
 }

Comments

Popular posts from this blog

Inductance caculator

Pointer to object array