實(shí)現(xiàn)功能
P1口接8個(gè)發(fā)光二極管,P3.2和P3.3各接一按鍵。 1.無(wú)按鍵按下時(shí),8個(gè)發(fā)光二極管亮滅交替,間隔時(shí)間200 ms。 2.按鍵S3按下時(shí),觸發(fā)外中斷0,使發(fā)光二極管左移16次,間隔時(shí)間為100ms。 3.按鍵S4按下時(shí),觸發(fā)外中斷1,使發(fā)光二極管右移8次,間隔時(shí)間為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; //開(kāi)中斷總開(kāi)關(guān) EX0=1; //允許外部中斷0中斷 EX1=1; //允許外部中斷1中斷 IT0=1; //外部中斷0為下降沿觸發(fā)中斷 IT1=1; //外部中斷1為下降沿觸發(fā)中斷 PX0=0; //外部中斷0為低優(yōu)先級(jí) PX1=1; //外部中斷1為高優(yōu)先級(jí) while(1) { P1=0x00; delayms(200); P1=0xff; delayms(200); } }
void int0(void) interrupt 0 //外部中斷0,中斷號(hào)0,按P3.2觸發(fā) { uchar i; P1=0Xfe; for(i=0;i<16;i++) { P1=_crol_(P1,1); delayms(100); } }
void int1(void) interrupt 2 //外部中斷1,中斷號(hào)2,按P3.3觸發(fā) { uchar i; P1=0Xfe; for(i=0;i<8;i++) { P1=_cror_(P1,1); delayms(200); } }
|