单片机中中断指令怎么学为什么C中主函数不用调用void 函数名(void)interrupt n(using m)函数呢

单片机中中断指令怎么学为什么C中主函数不用调用void 函数名(void)interrupt n(using m)函数呢,第1张

单片机有个中断入口地址,产生中断后CPU自动从中断向量取得入口地址,然后从这个地址执行程序 。如果你用汇编写代码,你会发现main函数其实也是一个中断函数,是个复位中断,和其它中断不同处是main没有返回。要执行中断里面的代码必须让程序指针指到中断里的代码,一是通过触发中断,二是手动改变PC指针(汇编直接用jmp指令跳转C由于编译器的限制比较难实现,可以嵌入汇编实现)

(void)interrupt n(using m)函数是个中断函数,当这个中断产生后,CPU就会通过中断向量找到这个函数的地址(中断入口),然后执行此函数,结束后返回主函数

函数名称:interrupt

头文件:dosh

函数用途:申明一个函数为中断函数,该中断函数的中断号为intr

函数原型:void interrupt(getvect(int intr)) (void)

其它说明:以上不是一个函数,实际上是说明了中断函数的格式,比如我们要将一个函数fun()说明成中断函数,可写成: void interrupt( fun )();

具体不知道,上网找找

8051的中断系统包括5个中断源,并提供两个优先级,允许用户对中断源进行独立控制和中断优先级设置

8051支持的5个中断源分别为外部中断0、定时器0溢出中断、外部中断1、定时器1溢出中断和串口中断。

对应的中断号为0、1、2、3、4;

寄存器有4个工作组可以切换,为0-3;

C51中,中断服务程序是以中断函数的方式来时实现的。中断函数格式如下:

void 函数名() interrupt 中断号 using 工作组

{

中断服务程序内容;

}

>

关于中断服务函数的函数名必须跟()里面预先设置的一样,如果写错,系统就

在中断向量表中找不到中断服务函数的入口,直接跳转到启动文件里面预先写好的空函数,

并且在里面无限循环,实现不了中断

以上就是关于单片机中中断指令怎么学为什么C中主函数不用调用void 函数名(void)interrupt n(using m)函数呢全部的内容,包括:单片机中中断指令怎么学为什么C中主函数不用调用void 函数名(void)interrupt n(using m)函数呢、C语言中的interrupt是怎么回事、C51中定时器中断的函数中interrupt和using如何使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10165142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存