📄 t.asm
字号:
;-----------------------------------------------------
;定义寄存器地址
CMOD EQU 0D9H
CCON EQU 0D8H
CH EQU 0F9H
CL EQU 0E9H
CCAPM0 EQU 0DAH
CCAP0H EQU 0FAH
CCAP0L EQU 0EAH
CR EQU CCON.6
CCF0 EQU CCON.0
;------------------------------------------------------
ORG 0000H
AJMP MAIN
ORG 0033H ;PCA中断入口
AJMP INTV
ORG 0050H
MAIN: MOV CMOD,#00H;设置PCA脉冲时钟为Fosc/12
MOV R0,#0EFH
MOV P1,R0
MOV R1,#00H
;--------------------------------------
;PCA计数器清零
MOV CH,#00H
MOV CL,#00H
;--------------------------------------
;设置PCA比较/捕获模块寄存器值
MOV CCAP0L,#3
MOV CCAP0H,#0B4H
;--------------------------------------
;设置PCA模式为比较:软件定时器
MOV CCAPM0,#49H
MOV IE,#0C0H ;使能中断
SETB CR ;PCA计数器开始计数
WAIT: AJMP WAIT ;等待中断
;--------------------------------------
;中断服务程序
INTV: MOV A,IE ;停止中断
ANL A,#0BFH
MOV IE,A
CLR CCF0 ;清中断标志
MOV CH,#00H ;清计数器
MOV CL,#00H
INC R1
CJNE R1,#14H,NEXT ;中断20次则执行下面程序,否则到NEXT开中断
MOV R1,#00H
MOV A,R0
RL A
MOV R0,A
CJNE R0,#0FEH,START ;判断第四个灯没亮过则点亮,否则转到第一个灯
MOV R0,#0EFH
START:MOV P1,R0
NEXT: MOV A,IE ;开中断
ORL A,#40H
MOV IE,A
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -