单片机C语言中断函数的定义形式是怎样的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机C语言中断函数的定义形式是怎样的?相关的知识,希望对你有一定的参考价值。

形式如下:

void 中断名(void) inerrupt 中断号 using 工作寄存器组

比如外部中断0

void ext0(void) interrupt 0 using 1 //后面的using 1可以省略,缺省为0

定时器1

void t1isr() interrupt 3

扩展资料:

单片机内部结构

1、CPU

它的名字没有改,还是称为CPU(Central Processing Unit)。它是单片机的核心部件,包括运算器和控制器。

运算器既是算术逻辑单元ALU(Arithmetic logic Unit),其功能是进行算术运算和逻辑运算。

控制器一般由指令寄存器、指令译码器、时序电路和控制电路组成。其作用是完成取指令、将指令译码形成各种微操作并执行指令,同时控制计算机的各个部件有条不紊地工作。

2、单片机内部结构之一ROM

“硬盘”,改了名字,称为程序存储器,也叫只读存储器。用ROM(Read only memery)表示。其作用和计算机的硬盘差不多,用来存放用户编写的程序。特点是:掉电后不会丢失数据(程序)。

参考技术A 对于C51单片机,其内部总共有五级中断源
分别为外部中断0、定时器0、外部中断1、定时器1及串行中断。
C51单片机的中断使用时,主要是通过中断服务号来决定的。
如你定义一个中断服务函数:
void KEY(void) intterrupt 0



当外部中断0申请中断时
会自动根据interrupt后面的0,找到上面定义的这个中断服务函数。
对于其他四个中断源,其对应的中断号分别为1、2 、3、4
参考技术B 对51而言,形式如下:
void 中断名(void) inerrupt 中断号 using 工作寄存器组
比如外部中断0
void ext0(void) interrupt 0 using 1 //后面的using 1可以省略,缺省为0
定时器1
void t1isr() interrupt 3
等等本回答被提问者采纳
参考技术C

举例:


串口中断函数

void Int_uart(void)  interrupt 4 //using x  (注:using x 是可选的)

     if(RI==1)
    
         ......
    
    if(TI==1)
   
       .......
    

注意,中断函数不能有参数和返回值


参考技术D 函数名() interrupt 0 (1,2,3,4) using 工作组

求教怎么在C语言中使用定时器

是51单片机吗? 如果是51单片机,你可以使用TMOD设置两个定时器,然后使用TR0、TR1分别启动两个定时器。PT0置为“1”,就可以中断定时器1的服务函数,相反,如果PT1置为“1”就可以中断定时器0的服务函数。 如果不设置PT的值,默认为“0”,这样的话,T0和T1谁也不能中断谁。 参考技术A 简单使用,比如初始化,回读计数值,可以通过访问定时器的寄存器的方式完成
如果需要定时器中断服务,要编写中断服务程序,并设置中断向量表
参考技术B 使用回调函数,代码如下:

void SetTimer(void interrupt (*handle)())

oldhandle=getvect(TIMER);
disable();
setvect(TIMER,handle);
enable();


void CloseTimer()

disable();
setvect(TIMER,oldhandle);
enable();


上面代码的编译环境:TC2.0本回答被提问者采纳

以上是关于单片机C语言中断函数的定义形式是怎样的?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,用于设置中断、中断信号的函数都有哪些?怎么设置一个发送中断信号(自己定义的)的函数?

单片机C语言如何满足条件就立即退出中断函数

求51单片机中,用C语言写的五个中断源的中断函数的书写规则,就是进入中断函数时的那个函数名,并说明...

51单片机c语言中断函数不能进行参数传递,是啥意思,谁能解释一下

单片机C语言中,中断子程序后面为啥要加interrupt这个单词?

单片机C程序的入口程序是啥?