LeoringYang 发表于 2026-3-17 21:08:14

哪位大神分享一下STC32G12K128单片机RTC中断的纯汇编示例

单片机上延时1秒用作时间秒数,直接多重循环延时误差大,几个计数器有其他用处,正好STC32G12K128有个RTC设备,能按秒产生中断。但官方数据手册中只有C语言的示例,不知道汇编是如何实现的。因为RTC相关寄存器的地址在0x7EFE60开始,用MOVX @DPTR,A方式访问,结果没有产生中断。哪位大神分享一下STC32G12K128单片机RTC中断的纯汇编示例,感谢。

ercircle 发表于 2026-3-17 23:21:14

这里有汇编程序:
https://www.stcaimcu.com/data/do ... -DEMO-CODE-V9.6.zip

LeoringYang 发表于 2026-3-18 08:59:31

ercircle 发表于 2026-3-17 23:21
这里有汇编程序:
https://www.stcaimcu.com/data/do ... -DEMO-CODE-V9.6.zip
感谢!经过测试后,RTC并没有触发中断,初始化代码如下:

      ;启用扩展地址FXR
      ORL    P_SW2,#0x80

      ;初始RTC指定年月日时分秒
      MOV    WR4,#0x007E
      MOV    WR6,#0xFE68
      MOV    R0,#0
      MOV    @DR4,R0

      MOV    WR4,#0x007E
      MOV    WR6,#0xFE69
      MOV    R0,#1
      MOV    @DR4,R0

      MOV    WR4,#0x007E
      MOV    WR6,#0xFE6A
      MOV    R0,#1
      MOV    @DR4,R0

      MOV    WR4,#0x007E
      MOV    WR6,#0xFE6B
      MOV    R0,#0
      MOV    @DR4,R0

      MOV    WR4,#0x007E
      MOV    WR6,#0xFE6C
      MOV    R0,#0
      MOV    @DR4,R0

      MOV    WR4,#0x007E
      MOV    WR6,#0xFE6D
      MOV    R0,#0
      MOV    @DR4,R0

      MOV    WR4,#0x007E
      MOV    WR6,#0xFE6E
      MOV    R0,#0
      MOV    @DR4,R0

      ;启动振荡器
      MOV    WR4,#0x007E
      MOV    WR6,#0xFE04
      MOV    R0,#0xC0
      MOV    @DR4,R0
      MOV    R0,#0xFF
WAIT_RTC_STABLE:
      DJNZ,R0,WAIT_RTC_STABLE

      ;选择RTC时钟源
      MOV    WR4,#0x007E
      MOV    WR6,#0xFE61
      MOV    R0,#0x01
      MOV    @DR4,R0

      ;清除中断标志
      MOV    WR4,#0x007E
      MOV    WR6,#0xFE63
      MOV    R0,#0x00
      MOV    @DR4,R0

      ;启用RTC中断
      MOV    WR4,#0x007E
      MOV    WR6,#0xFE62
      MOV    R0,#8
      MOV    @DR4,R0

      ;启动RTC计时
      MOV    WR4,#0x007E
      MOV    WR6,#0xFE60
      MOV    R0,#0x01
      MOV    @DR4,R0

页: [1]
查看完整版本: 哪位大神分享一下STC32G12K128单片机RTC中断的纯汇编示例