关闭

单片机中断

244人阅读 评论(0) 收藏 举报

1。单片机有个中断入口地址,产生中断后CPU自动从中断向量取得入口地址,然后从这个地址执行程序 。如果你用汇编写代码,你会发现main函数其实也是一个中断函数,是个复位中断,和其它中断不同处是main没有返回。要执行中断里面的代码必须让程序指针指到中断里的代码,一是通过触发中断,二是手动改变PC指针(汇编直接用jmp指令跳转.C由于编译器的限制比较难实现,可以嵌入汇编实现)(void)interrupt n(using m)函数是个中断函数,当这个中断产生后,CPU就会通过中断向量找到这个函数的地址(中断入口),然后执行此函数,结束后返回主函数。8051的中断系统包括5个中断源,并提供两个优先级,允许用户对中断源进行独立控制和中断优先级设置


2。8051支持的5个中断源分别为外部中断0、定时器0溢出中断、外部中断1、定时器1溢出中断和串口中断。对应的中断号为0、1、2、3、4;寄存器有4个工作组可以切换,为0-3; C51中,中断服务程序是以中断函数的方式来时实现的。中断函数格式如下:void 函数名() interrupt 中断号 using 工作组{ 中断服务程序内容;} 


3。中断的函数名师自己定义的,但是必须在后面加入关键字“interrupt x”,其中“x”是中断向量的编号(中断向量号对应的中断查看任何一本讲解51的书),主函数中不需要写什么语句来跳转到中断函数,因为你定义好中断向量号时,就是定义好了中断的入口地址,因为单片机响应中断是在执行程序的过程中,每个周期都会扫描中断标志位,来判断执行什么中断,比如定时器的定时到了,那么硬件就会自动将对应定时中断标志置为1,此时CPU扫描到这个中断标志为1时,就会自动跳到你定义好的中断函数执行。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6629次
    • 积分:125
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档