📄 447ex_tccint.dt.txt
字号:
;Autor: Zhang Feng qq:411762697 zfmcs51@sohu.com
;================================================
;447EX_TccInt.dt源码(以中断方式实现外部TCC功能)
;crystal=4MHZ
;================================================
TCC == 0x01 ; TCC计数器
STATUS == 0x03 ; 状态寄存器
PORT6 == 0x06 ; PORT5端口
IOCE == 0x0E ; WDT控制寄存器
IOCF == 0x0F ; 中断控制寄存器
ISR == 0x0F ; 中断状态寄存器
TCC_stack == 0x20 ; 保存中断前A的值
TCC_Buf == 0x21 ; 延时缓冲器
num == 6
;----------------------------MAIN PROGRAM------------------------------;
ORG 0XFFF
JMP TCC_start
ORG 0x01
;----------------------------------------------------------------------;
TCC_int:
MOV TCC_stack, A ; 保存A的值
MOV A, @0x06 ; 置TCC初始
MOV TCC, A
MOV A, @0xFE ; 保留不需要设置的状态位
AND ISR, A ; 清中断标志位
MOV A, @0x02 ; 每约10ms则PORT6.1取反一次
XOR PORT6, A ; PORT6.1脚接LED灯(每20ms闪一次)
MOV A, TCC_stack ; 恢复A的值
RETI ; 返回中断
;----------------------------------------------------------------------;
TCC_Delay: ; 延时子程序
MOV TCC_buf, A
TCC_Delay_Loop:
DJZ TCC_buf
JMP TCC_Delay_Loop
RET
;----------------------------------------------------------------------;
TCC_start:
MOV A, @0x00
IOW IOCE ; 关闭看门狗
IOR PORT6
AND A, @0b01111101 ; 保存不需要设置的状态位
IOW PORT6 ; 设置PORT6.1、PORT6.7脚为输出
BC PORT6, 1 ; 关闭LED灯
CONTR
AND A, @0b11110000 ; 保留不需要设置的状态位
OR A, @0b00111000 ; 设为外部TCC计数,下降沿触发,不使用预除数
CONTW
MOV A, @0x01 ; 允许计数器中断
IOW IOCF
ENI ; 开中断
TCC_Loop:
BS PORT6, 7 ; PORT6.7脚循环输出脉冲到TCC脚
MOV A, @0x0B ; 等待
CALL TCC_Delay
BC PORT6, 7 ; 下降沿来到
MOV A, @0x0B
CALL TCC_Delay
JMP TCC_Loop
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -