中断服务子函数C语言 中断服务程序和子函数的调用过程不一样

怎样在C语言中使用中断函数

首先你要写中断函数

10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有鹿寨免费网站建设让你可以放心的选择与我们合作。

然后在主程序中像调用子函数一样调用就可以了

举个例子吧

#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语言中中断服务子程序与其他子程序的区别

中断是单片机的一个重要功能,中断子程序专为执行中断功能,它是在发生中断后,自动执行的,不需要主程序调用;普通子函数要主程序调用才能执行。

汇编里的区别:

普通子函数用RET返回;中断子程序用RETI返回,RETI返回时要清除中断标志的;

普通子函数调用时直接进入函数入口地址,中断函数在中断发生时先进中断入口

03H、08H、13H、18H、23H后随即写一个跳转指令,再跳转到相应语句。

C语言区别:

普通子函数用的是C语言里的主函数调用子函数的方法,子函数可以有参数,有返回值;中断函数没有参数,没有返回值;

中断函数的写法也不一样,以80c51为例:

void

INT0()

interrupt

using

1

{

}

interrupt

0不是是外部中断0引发的中断,必须写;

using

1

表示在中断函数里用第一组寄存器R0-R7.这个可以省略。

C语言中断正在执行的子程序

在子程序中用While(一个全局变量){这里执行子程序的操作}

要中断时把这个变量设为0,

则那个子程序就退出了.

这里假设你的子程序是个重复反复执行的操作.如果不是,那么你的需求本身就是错的做法你需要重新评估你的设计合理性.


分享名称:中断服务子函数C语言 中断服务程序和子函数的调用过程不一样
本文网址:http://azwzsj.com/article/hpeiis.html