【单片机】中断嵌套
要求:使用一个外部中断和定时器中断,P1口连接的8个发光二极管;
系统通过定时器中断的方式使得LED呈流水灯显示,外部中断打断定时器中断,控制8个流水灯闪烁显示。
代码如下:
#include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit s=P3^2;//外部中断信号 void delay(uint i) { uchar t; while(i--) { for(t=0;t<120;t++); } } void main() { TMOD=0x01; TH0=0xee; TL0=0X00;//赋初值 EA=1; ET0=1;//允许定时器T0中断 TR0=1; EX0=1;//允许外部中断0中断 IT0=1; while(1); {;} } //定时器T0中断 void timer0() interrupt 1 using 1 { TH0=0xee; TL0=0x00; P1=0xfe; while(s==1){ delay(200); P1=_crol_(P1,1); } } //外部中断0中断 void int0() interrupt 0 using 0 { EX0=0; while(s==0) { P1=0x00; EX0=1; } }
proteus元件图: