PIC单片机(PIC16F877A)外部中断程序

2019-04-15 11:46发布

正常运行为流水灯,发生中断则灯全亮。 #include __CONFIG(0x3B31); //4M #define uchar unsigned char #define uint unsigned int #define DELAY 500 uint j=50000; void delay(uint x) //1ms { uint y,z; for(y=x;y>0;y--) for(z=25;z>0;z--); } void init(void) { TRISB0=0; RB0=1; //为下降沿创造高电平的初始条件 TRISB0=1; //输入模式 INTEDG=0; //0下降沿触发,1为上升沿触发 INTF=0; //清零标志位 INTE=1; //开中断允许 GIE=1; //开全局中断 } void interrupt INT() //查询式中断 { if(INTE&&INTF) { INTF=0; PORTD=0xff; while(j--); j=50000; TRISB0=0; //RB0设为输出 RB0=1; //输出高电平,以便检测中断条件(下降沿) TRISB0=1; //设为输入,等待中断 } } void main(void) { uchar i,temp; TRISD=0x00; PORTD=0xff; init(); while(1) { temp=0x01; for(i=0;i<8;i++) { PORTD=temp; delay(DELAY); temp<<=1; } } }