實現功能
P1口接8個發光二極管,P3.2和P3.3各接一按鍵。 1.無按鍵按下時,8個發光二極管亮滅交替,間隔時間200 ms。 2.按鍵S3按下時,觸發外中斷0,使發光二極管左移16次,間隔時間為100ms。 3.按鍵S4按下時,觸發外中斷1,使發光二極管右移8次,間隔時間為200ms。 4.能夠使外部中斷1嵌套外部中斷0 程序代碼: #include <reg51.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char
void delayms (uint ms) { uint i; while (ms--) for (i=0;i<123;i++); }
void main(void) { EA=1; //開中斷總開關 EX0=1; //允許外部中斷0中斷 EX1=1; //允許外部中斷1中斷 IT0=1; //外部中斷0為下降沿觸發中斷 IT1=1; //外部中斷1為下降沿觸發中斷 PX0=0; //外部中斷0為低優先級 PX1=1; //外部中斷1為高優先級 while(1) { P1=0x00; delayms(200); P1=0xff; delayms(200); } }
void int0(void) interrupt 0 //外部中斷0,中斷號0,按P3.2觸發 { uchar i; P1=0Xfe; for(i=0;i<16;i++) { P1=_crol_(P1,1); delayms(100); } }
void int1(void) interrupt 2 //外部中斷1,中斷號2,按P3.3觸發 { uchar i; P1=0Xfe; for(i=0;i<8;i++) { P1=_cror_(P1,1); delayms(200); } }
|