[资源共享] HC89S003F4的中断控制寄存器(如IP0)详解

[复制链接]
2891|4
 楼主| 铁血丹心LLLL 发表于 2024-1-25 13:50 | 显示全部楼层 |阅读模式
HC89S003F4的中断控制寄存器 IP0 是用来配置中断优先级的寄存器。在这个寄存器中,各个位的设置决定了相应中断的优先级。以下是 IP0 寄存器的详细解释:


IP0 |= 0X30; // INT1优先级设为最高,唤醒用的中断一定要设为最高优先级。否则有可能唤醒不成功


这段代码将 IP0 寄存器的高两位(位6和位5)设置为1,其他位不变。具体解释如下:
  • 位7 (T0IP):
    • Timer0 中断优先级位。本例中没有设置,保持不变。
  • 位6 (T1IP):
    • Timer1 中断优先级位。设置为1,表示将 Timer1 中断的优先级设为最高。
  • 位5 (T2IP):
    • Timer2 中断优先级位。设置为1,表示将 Timer2 中断的优先级设为最高。
  • 位4 (INT0IP):
    • 外部中断0(INT0)中断优先级位。本例中没有设置,保持不变。
  • 位3 (INT1IP):
    • 外部中断1(INT1)中断优先级位。设置为1,表示将外部中断1的优先级设为最高。
  • 位2 (ADCIP):
    • ADC 转换完成中断优先级位。本例中没有设置,保持不变。
  • 位1 (ESIP):
    • 串口(UART)中断优先级位。本例中没有设置,保持不变。
  • 位0 (ET0IP):
    • 定时器0 溢出中断优先级位。本例中没有设置,保持不变。

这段代码的目的是将 Timer1 和外部中断1 (INT1) 的中断优先级设为最高。这对于掉电唤醒例程中使用的 INT1 中断至关重要,因为唤醒用的中断应该具有最高的优先级,以确保在唤醒时能够正常执行相应的中断服务程序。

sunnysun2018 发表于 2024-3-10 13:40 | 显示全部楼层
0x30 ---》  0b0011   0000
 楼主| 铁血丹心LLLL 发表于 2024-3-21 13:39 | 显示全部楼层
通过按位或操作(|=)将0x30(二进制形式为00110000)与IP0寄存器进行按位或操作,从而将IP0寄存器的位6和位5设置为1,其他位不变。
daichaodai 发表于 2024-3-22 08:17 来自手机 | 显示全部楼层
芯圣没有驱动库函数吗?
Jacquetry 发表于 2024-3-28 10:32 来自手机 | 显示全部楼层
51的芯片一般都没有库吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

543

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部