1.中断系统,是为使CPU具有对外界紧急事件的实时处理能力而设置的。
当中央处理器CPU正在处理某件事情的时候,要求CPU暂停当前任务或工作,转而去处理这这个紧急事件。处理完以后,再回到原来的被中断的地方,继续原来的工作。这个过程叫做---中断
2.代码例子:
#include "reg52.h"
sbit led1 = P3^6;
sbit led2 = P3^7;
int cnt = 0;//cnt要定为全局变量void Time0Init()
{
//1.配置定时器0工作模式位16位计时
TMOD = 0x01;
//2.给初值,定一个10ms出来
TL0 = 0x00;
TH0 = 0xDC;
//3.开始计时
TR0 = 1;
TF0 = 0;
//4.打开定时器中断
ET0 = 1;
//5.打开总中断EA
EA = 1;
}void Delay300ms() //@11.0592MHz
{
unsigned char i, j, k;//_nop_(); //这个地方报错,是因为缺少一个头文件:#include<intrins.h> 添加即可,不添加可以把_nop_();注释掉,用到再添加
i = 3;
j = 26;
k = 223;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
int cnt = 0;
led2 = 1;
Time0Init();
while(1){
//假设场景:女朋友在看电视,快递打电话说快递到,中断看电视,取快递
led1 = 0;
Delay300ms();
led1 = 1;
Delay300ms();
}
}//封装一个中断函数
void Time0Handler() interrupt 1
{
cnt++;//统计爆表次数
//重新给初值
TL0 = 0x00;
TH0 = 0xDC;
if(cnt == 100){//cnt爆表了100次,经过了1s
cnt = 0;//当经过了1s,重新让cnt从0开始,计算下一次的1s.
led2 = !led2;//每经过1s,翻转led的状态
}}
3.效果图:
4._nop_(); //这个地方报错,是因为缺少一个头文件:#include<intrins.h> 添加即可,不添加可以把_nop_();注释掉,用到再添加也可。