然后在主程序中像调用子函数一样调用就可以了
举个例子吧
#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++
}
标准c语言没有中断调用机制,但是不同编译器都有相应的中断处理方式,可以使用户实现中断功能。解决方案:
1、采取轮询的方式解决,就是每10毫秒检查一下是否有键盘请求,总的来说,这样基本上可以解决问题,而且简单易行,但每10毫秒都要检查,系统消耗太大。
2、采取中断的方式:
(1)用高级语言调用中断来处理问题。中断是cpu响应一个中断外围设备8259A的一个过程,当键盘敲击,cpu保存断点暂停执行并且跳到相应的中断处理程序继续执行,结束后根据断点再跳回来。通过这种方式可以轻松+愉快地解决这个问题。但是需要用到高级语言调用汇编,根据编译器的不同而有所差别。
(2)自己模拟中断。可以另外建立一个线程专门响应键盘的敲击,如果有敲击则打断主线程。这样做实现起来很复杂,而且涉及到不少复杂的关键技术,比如信号量之类的东西。
3、强大的vc
vc采取了消息映射的机制来处理外部设备的请求,比如时钟中断、键盘中断等等。通过此可以灰常灰常容易的处理外部中断。
C语言,进入中断后如果中断程序中什么都不执行会直接跳出中断函数,返回去执行之前的程序,如果中断中有任务,那么完成后会跳出中断,或者中断中是一些子程序,会先跳去执行子程序,直到全部完成后就跳出中断,恢复原来的程序运行环境,执行进入中断之前的程序。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)