实现功能
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); } }
|