【单片机】中断嵌套


 

要求:使用一个外部中断和定时器中断,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元件图:

 

posted @ 2020-12-29 11:05  北冰洋L  阅读(1100)  评论(0编辑  收藏  举报