单片机有个中断入口地址,产生中断后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如何使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)