📄 a01.asm
字号:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T01 ;定时器0 中断
MAIN:
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
MOV A,#00H ;寄存器清零
MOV R0,A
MOV R1,A
MOV R2,A
MOV R3,A
MOV R4,A
MOV R5,A
MOV R6,#0FFH
MOV R7,#0FFH
MOV SP,#78H ;设置堆栈地址
MOV TMOD,#02H ;设置 定时器0 为8位自动重装载计时器
MOV TH0,#00H ;设置T0重装初值
SETB ET0 ;定时器0中断允许
SETB EA ;总中断允许
SETB TR0 ;T0计时开始
START:
LJMP START
T01: ;255us中断一次
CLR TR0 ;T0计时停止
INC R0 ;中断次数加一
CJNE R0,#0FFH,T01B
MOV R0,#00H ;0.065秒=65毫秒执行一次
INC R1
CJNE R1,#06H,T01A8
MOV R1,#00H ;0.65秒*6=0.4秒 执行一次
CPL P1.7 ;改变内部指示灯状态
T01A8:
SETB P1.0 ;端口置一准备读取
SETB P1.1
SETB P3.7
MOV C,P1.0 ;读P1.0新状态
MOV 00H,C
MOV C,P1.1 ;读P1.1新状态
MOV 01H,C
MOV C,P3.7 ;读P3.7新状态
MOV 04H,C
JNB 00H,T01A9 ;P1.0新状态=1 继
JB 02H,T01A9 ;P1.0原状态=0 继
DEC R7
T01A9:
MOV C,00H
MOV 02H,C ;P1.0原状态刷新
JNB 01H,T01A10 ;P1.1新状态=1 继
JB 03H,T01A10 ;P1.1原状态=0 继
INC R7
T01A10:
MOV C,01H ;P1.1原状态刷新
MOV 03H,C
JNB 04H,T01A11 ;P3.7新状态=1 继
JB 05H,T01A11 ;P3.7原状态=0 继
CPL 06H
T01A11:
MOV C,04H ;P3.7原状态刷新
MOV 05H,C
T01B:
DEC R6
CJNE R6,#00H,T01C
MOV A,R7
MOV R6,A
INC R5
JB 06H,T01B5
CJNE R5,#01H,T01B1
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.6
T01B1:
CJNE R5,#02H,T01B2
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.4
T01B2:
CJNE R5,#03H,T01B3
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.5
T01B3:
CJNE R5,#04H,T01B4
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.3
MOV R5,#00H
T01B4:
LJMP T01C
T01B5:
CJNE R5,#01H,T01B6
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.6
T01B6:
CJNE R5,#02H,T01B7
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.3
T01B7:
CJNE R5,#03H,T01B8
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.5
T01B8:
CJNE R5,#04H,T01C
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
SETB P1.4
MOV R5,#00H
T01C:
SETB TR0
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -