哪位大神分享一下STC32G12K128单片机RTC中断的纯汇编示例
单片机上延时1秒用作时间秒数,直接多重循环延时误差大,几个计数器有其他用处,正好STC32G12K128有个RTC设备,能按秒产生中断。但官方数据手册中只有C语言的示例,不知道汇编是如何实现的。因为RTC相关寄存器的地址在0x7EFE60开始,用MOVX @DPTR,A方式访问,结果没有产生中断。哪位大神分享一下STC32G12K128单片机RTC中断的纯汇编示例,感谢。这里有汇编程序:
https://www.stcaimcu.com/data/do ... -DEMO-CODE-V9.6.zip
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]