可以的,定时中断的优先级较高,中断后会执行中断里面的程序,当中断里面的程序执行完成之后,你可以初始化定时器或者关闭定时器,程序就会从中断中退出,继续执行while中的程序
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业博望免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
你要先理解什么是中断。知道中断是怎么回事了,你才好理解的。
这块是讲中断的。
主函数里面执行的都是顺序执行的,当中断发生的时候就执行中断程序里面的东西的。串口中断就是当发送或接收完毕时,产生的中断,发生中断过后,就将主函数暂停执行,保存这个时候正在运行的一些变量,一些内存值之类的。然后当中断函数执行完毕过后再回来接着执行主函数里面的东西的。
首先你要写中断函数
然后在主程序中像调用子函数一样调用就可以了
举个例子吧
#define uchar unsigned char
#define uchar unsigned char
sbit D1=P1^0;
uchar aa;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(aa==20)
{
D1=~D1;
aa=0;
}
}
}
void T0time()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
这个问题很泛哦
把上电后只做一次的任务写到主函数里, 比如基本的初始化
把需要不断循环做的任务放到while(1)里,比如轮询,IO状态查询
把不知道什么时间会发生(比如外部中断,按键中断等)以及需要保证准时发生的任务(比如定时器时间到)放到中断里