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