这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 芯圣单片机HC18M003的中断

共4条 1/1 1 跳转至

芯圣单片机HC18M003的中断

专家
2023-09-12 22:29:42     打赏

一、HC18M003中断源

HC18M003中断源有以下几种:

➢ Timer0定时器中断

➢ INT0外部中断

➢ PORTB口电平变化中断

➢ Timer1定时器中断

➢ Timer2定时器中断

➢ AD中断

➢ UART中断

➢ PWM中断

➢ IIC中断

➢ CTK中断

➢ EEPROM

➢ WDT

1、中断触发的条件

中断效触发

触发条件

T0IF

T0计数器溢出

INTF

INTEDG控制

RBIF

PORTB电平变化

T1IF

T1计数器溢出

T2IF

T2发生匹配

ADIF

AD数据采集完成

RXIF/TXIF

UART发生发送接收事件

IICIF

IIC发生发送接收事件

PWM0IF

PWM0周期计数溢出中断

CTKIF

CTK转换完成中断

WDTIF

WDT中断溢出标志位

EEPIF

EEPROM擦写完成标志位

 

2、中断的许可和禁止设置

2.1使用INTCON寄存器控制是否允许中断

2.2 设置INT0中断的脉冲沿触发方式

OPTION寄存器设置

2.3 中断使能寄存器PIE1

2.4 中断使能寄存器PIE2

2.5 PB端口电平变化中断使能寄存器

2.6中断标志寄存器PIR1

2.7 中断标志寄存器PIR2

51单片机系统中,每个中断都有自己固定的中断程序入口地址。而在单片机HC18M003中,所有中断使用一个共同的中断入口地址,固定为0004H。既然只有一个入口,那么当中断发生时,我们就需要通过和中断标志有关的控制寄存器以及中断寄存器标志位来判断到底是哪个中断发生了。如果在同一时刻,系统中出现了多个中断请求。那么用户需要自己根据系统的要求来对中断处理进行优先级的调整。这一点也和51单片机系统有区别。

 

二、中断现场的保护和恢复

中断服务程序开始执行时,需保存W寄存器、STATUS寄存器、PCLATH寄存器的内容;结束中断服务程序时,恢复PCLATH寄存器、STATUS寄存器、W寄存器的数值,注意顺序。

注意:在退出中断时,由于需要先恢复STATUS,再使用 MOVF 指令恢复W,可能会改变STATUS,因此必须使用 SWAPF 指令恢复 W。注意在中断中共有两句 SWAPF 指令。

 
// 执行中断处理程序之前,保护现场
// 保存 W
MOVWF W_TEMP ;              // W寄存器数据保存到临时变量W_TEMP中
 
// 保存 STATUS。
SWAPF STATUS,W                //  STATUS数据转存到W中
MOVWF STATUS_TEMP ;          //  W寄存器数据保存到临时变量STATUS_TEMP中
 
// 保存 PCLATH
MOVF PCLATH, W               //  PCLATH数据转存到W中
MOVWF PCLATH_TEMP ;         //  W寄存器数据保存到临时变量PCLATH_TEM中
 
// 清除状态寄存器内容,防止干扰后续操作
CLRF STATUS ;                   
 
...
 
// 回复中断发生前的现场(和入栈时的顺序正好相反)
MOVF PCLATH_TEM ,W         // 取出之前的现场PCLATH数据到W
MOVWF PCLATH ;             // 恢复到PCLATH中。
SWAPF STATUS_TEMP,W        // 取出之前的现场STATUS数据到W
MOVWF STATUS ;             // 恢复到STATUS。
 
SWAPF W_TEMP,F            // 取出之前的现场STATUS数据到F
SWAPF W_TEMP,W ;          // 恢复W(F->W)。
 
RETFIE ;退出中断。


在现场的保存和恢复上,比51单片机还是要麻烦一些哈。另外一点要切记,为避免误进中断,在使能中断和退出中断服务程序之前,必须清除中断标志位。

 

 







关键词: 菜鸟学单片机     芯圣     HC18M003     中断    

高工
2023-09-13 09:00:48     打赏
2楼

版主,如果只有一个中断向量的入口,那进入中断后,要轮循的查标志位吗?


专家
2023-09-14 10:44:04     打赏
3楼

是啊。需要查询标志位,而且需要按照自己希望的优先级来查询。


院士
2023-10-04 20:02:38     打赏
4楼

学习了,谢谢分享。


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]