📄 rtcc time.asm
字号:
#include "mk7a11p.inc" ;编译该文档需包含"mk7a11p.inc"文件
;---------------------------------------------------------------------------------------------------------------------------
;芯片型号(mk7a11p)
;---------------------------------------------------------------------------------------------------------------------------
;配置寄存器设置说明(CONFIG)
;1-----------FOSC=RC ;LS,NS,HS,RC
;2-----------INRC=ON ;ON,OFF
;3-----------CPT=OFF ;ON,OFF
;4-----------WDTE=Disable ;Enable,Disable
;5-----------LV=Low Vol Reset ON ;Low Vol Reset ON,Low Vol Reset OFF
;6-----------RESET=...input... ;...input...,...reset...
;---------------------------------------------------------------------------------------------------------------------------
flag equ 0x23 ;标志
del_r equ 0x24 ;延时
;---------------------------------------------------------------------------------------------------------------------------
#define flag_key flag,0 ;按键未松开标志
#define flag_t flag,1 ;重新计时标志
;---------------------------------------------------------------------------------------------------------------------------
org 0x3ff ;mk7a11p的复位向量地址定义
lgoto main ;跳转到主程序入口
;---------------------------------------------------------------------------------------------------------------------------
org 0x100 ;主程序入口地址定义
main
movla 0x20
movam fsr ;将0x20送入fsr寄存器
;---------------------------------------------------------------------------------------------------
clear_ram
;利用indf和fsr来进行间接寻址
;对0x20-0x2f的RAM进行clear
clr indf
mov fsr,a
andla b'00111111' ;将无关的数据虑除
xorla 0x2f
btsc status,z
lgoto $+3
inc fsr,m
lgoto clear_ram
clr fsr ;使用fsr时要注意bank的归位
;---------------------------------------------------------------------------------------------------
;PortA端口方向及状态设定
movla b'11111101'
iodir porta
clr porta
clr pa_pdm
;---------------------------------------------------------------------------------------------------
;PortB端口方向及状态设定
movla b'11111001'
iodir portb
clr portb
clr pb_pod
clr pb_pup
;---------------------------------------------------------------------------------------------------
;将PB2/RTC作为TMR0外部时钟的输入脚
movla b'10000000'
movam pb_pdm
;---------------------------------------------------------------------------------------------------
;PortB端口8个IO唤醒禁止
movla b'00000000'
movam wake_up
;---------------------------------------------------------------------------------------------------
;配置TMR0,预分频比为1:16
;TMR0初始值为250
;时钟源为外部时钟
movla b'11100011'
select
movla .250
movam tmr0
;---------------------------------------------------------------------------------------------------
;禁止中断,清除中断标志
clr irqm
clr irqf
;---------------------------------------------------------------------------------------------------------------------------
loop ;程序循环入口
btss irqf,0
lgoto jump_0
bc irqf,0
movla b'00000010'
xor porta ;时间到进行LED开关切换
lgoto jump_1
;-----------------------------------------------------------------------------------------------------------
jump_0
;保持时间等长
nop
nop
nop
nop
;-----------------------------------------------------------------------------------------------------------
jump_1
bs portb,1
;-----------------------------------------------------------------------------------------------------------
;high--125us
inc del_r,m
movla .20
xor del_r,a
btss status,z
lgoto $-4
clr del_r
nop
nop
nop
nop
bc portb,1
;-----------------------------------------------------------------------------------------------------------
;low--125us
inc del_r,m
movla .19
xor del_r,a
btss status,z
lgoto $-4
clr del_r
nop
lgoto loop
;---------------------------------------------------------------------------------------------------------------------------
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -