📄 led-2.dt
字号:
;==========================================
;153IN_Tcc.dt源码(以中断方式实现内部TCC功能)
;crystal=4MHZ
;============================================
;----------------------------------------------------------------------;
; Define MCU RAM or Variable Value
;----------------------------------------------------------------------;
TCC == 0x01 ; TCC计数器
STATUS == 0x03 ; 状态寄存器
PORT5 == 0x05 ; PORT5端口
IOCE == 0x0E ; WDT控制寄存器
IOCF == 0x0F ; 中断控制寄存器
ISR == 0x0F ; 中断状态寄存器
TEMP_A == 0x20 ; 保存中断前A的值
TCC_Count == 0x21 ; 自定义计数器
num == 6
;----------------------------MAIN PROGRAM------------------------------;
ORG 0x00
JMP TCC_Start
ORG 0x08
;----------------------------------------------------------------------;
TCC_int:
MOV TEMP_A, A ; 保存A的值
MOV A, @0x06 ; TCC计数次数=250
MOV TCC, A ; 置TCC初始
MOV A, @0xFE ; 保留不需要设置的状态位
AND ISR, A ; 清中断标志位
INC TCC_Count ; 每中断一次TCC_Count计数器加1
JBS STATUS, 2 ; 判断TCC_Count是否溢出
JMP Int_out ; 没有溢出
MOV A, @num ; 溢出
MOV TCC_Count, A ; 重新置TCC初值
MOV A, @0x02 ; 每半秒PORT5.1(可接LED灯)取反
XOR PORT5, A
Int_out:
MOV A, TEMP_A ; 恢复A的值
RETI ; 中断返回
;----------------------------------------------------------------------;
TCC_Start:
MOV A, @0x00
IOW IOCE ; 关闭看门狗
MOV A, @0x00
IOW PORT5 ; Port5为输出口
BC PORT5, 1 ; 关闭LED灯
CONTR
MOV A, @0b11010000 ; 保留不需要设置的状态位
OR A, @0b00000011 ; 预除数为16
CONTW
MOV A, @0x01 ; 允许计数器中断
IOW IOCF
ENI ; 开中断
JMP $
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -