📄 447in_tcc.dt.txt
字号:
;Autor: Zhang Feng qq:411762697 zfmcs51@sohu.com
;================================================
;447IN_Tcc.dt源码(以中断方式实现内部TCC功能)
;crystal=4MHZ
;================================================
TCC == 0x01 ; TCC计数器
STATUS == 0x03 ; 状态寄存器
PORT6 == 0x06 ; PORT5端口
IOCE == 0x0E ; WDT控制寄存器
IOCF == 0x0F ; 中断控制寄存器
ISR == 0x0F ; 中断状态寄存器
TCC_stack == 0x20 ; 保存中断前A的值
TCC_Count == 0x21 ; 自定义计数器
num == 6
;----------------------------MAIN PROGRAM------------------------------;
ORG 0XFFF
JMP TCC_Start
ORG 0x01
;----------------------------------------------------------------------;
TCC_int:
MOV TCC_stack, 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, Z ; 判断TCC_Count是否计数溢出
JMP Int_out ; 没有溢出
MOV A, @num ; 溢出
MOV TCC_Count, A ; 为TCC_Count重新赋值
MOV A, @0x02 ; 每半秒PORT6.1(接LED灯)取反
XOR PORT6, A
Int_out:
MOV A, TCC_stack ; 恢复A的值
RETI ; 中断返回
;----------------------------------------------------------------------;
TCC_Start:
MOV A, @0x00
IOW IOCE ; 关闭看门狗
IOW PORT6 ; Port6为输出口
BC PORT6, 1 ; 关闭LED灯
CONTR
AND 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 + -