📄 led-1(dingshi).dt
字号:
; ===========================================
;中断方式实现内部TCC功能
;晶振=4MHZ,指令周期为4个时钟
;============================================
;--------------------------------------------------
; 定义变量
;-------------------------------------------------------
TCC == 0x01
status == 0x03 ; 状态寄存器
PORT5 == 0x05 ; PORT5端口
IOCB == 0x0b
IOCE == 0x0E ; WDT控制寄存器
IOCF == 0x0F ; 中断控制寄存器
ISR == 0x0F ; 中断状态寄存器
A_BUF == 0x10 ; 保存中断前A的值
TCC_Count == 0x11 ; 自定义计数器
flag == 0x12
num == 246
Z == 2
;----------------------------主程序------------------------------;
ORG 0x00
JMP tcc_start
ORG 0x08
;----------------------------------------------------------------------;
TCC_INT:
MOV A_BUF, A ; 保存A的值
mov a,@0x0e
mov TCC,a
MOV A, @0xFE
AND ISR, A ; 清中断标志位
INC TCC_Count ; 每中断一次TCC_Count计数器加1
JBS status,Z ; 判断TCC_Count是否溢出
JMP TCC_out ; 没有溢出
mov a,@num
mov TCC_Count,a
bs flag,0
TCC_out:
MOV A, A_BUF ; 恢复A的值
RETI ; 中断返回
;----------------------------------------------------------------------;
tcc_start:
MOV A, @0x00
IOW IOCE ; 关闭看门狗
MOV A, @0x02
IOW PORT5 ; Port5为输出口
mov a,@0xfd
IOW IOCB
BC PORT5,0 ; 关闭LED灯
bc flag,0
mov a,@num
mov TCC_Count,a
MOV A, @0b11010000 ; 保留不需要设置的状态位
OR A, @0b00000010 ; 预除数为8
CONTW
MOV A, @0x01 ; 允许计数器中断
IOW IOCF
ENI ; 开中断
main:
jbs port5,1
jmp main_out
jbs flag,0
jmp main_out
bc flag,0
jbs port5,1
jmp main_out
bs port5,0
main_in:
jbc port5,1
jmp main_in
bc port5,0
main_out:
jmp main
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -