📄 抢答器.asm
字号:
DIG EQU 30H
SEG EQU 31H
STATUS EQU 32H
CHANGE EQU 33H
ROTATE EQU 34H
BFREQ EQU 35H
WaJ EQU 36H
WANG EQU 66H
COUNT EQU 37H
WAIT EQU 38H
TEMP EQU 3DH
TEMP1 EQU 3EH
TEMP2 EQU 3FH
FLAG BIT 00H
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP T0_INT
ORG 001BH
AJMP T1_INT
T0_INT: DJNZ COUNT,T0_RING
CLR ET0
SETB ET1
T0_RING:CPL P1.0
MOV TH0,#0FEH
MOV TL0,#0CH
RETI
T1_INT: DJNZ WAIT,RING
CLR ET1
SETB ET0
RING: MOV TH1,#0FEH
MOV TL1,#0CH
RETI
ORG 0050H
MAIN: MOV DIG,#2
MOV SEG,#1
MOV DPTR,#TAB
START: MOV A,SEG
MOVC A,@A+DPTR
MOV P2,A
MOV P1,DIG
ACALL DELAY1
MOV A,DIG
RL A
MOV DIG,A
INC SEG
MOV A,SEG
CJNE A,#7,START
MOV DIG,#02
MOV SEG,#01
AJMP START
IF_ON: MOV TMOD,#11H
MOV TH0,#0FEH
MOV TL0,#0CH
MOV TH1,#0FEH
MOV TL1,#0CH
SETB EA
SETB TR0
SETB TR1
SETB ET0
MOV COUNT,#255
MOV WAIT,#255
MOV WaJ,#0
NUM: RRC A
INC WaJ
JC NUM
MOV WANG,WaJ
ACALL GET_STA
SETB FLAG
MOV CHANGE,#0FFH
MOV ROTATE,#18
DISPLAY:MOV A,WaJ
MOVC A,@A+DPTR
MOV P2,A
MOV P1,STATUS
ACALL DELAY2
DEC WANG
MOV A,WANG
JZ NO_RING
DEC ROTATE
MOV A,ROTATE
JZ NO_QUIVER
CPL FLAG
JB FLAG,DISPLAY
MOV A,STATUS
MOV STATUS,CHANGE
MOV CHANGE,A
AJMP DISPLAY
NO_RING:CLR EA
MOV A,WaJ
MOVC A,@A+DPTR
MOV P2,A
MOV P1,STATUS
ACALL DELAY2
DEC ROTATE
MOV A,ROTATE
JZ NO_QUIVER
CPL FLAG
JB FLAG,DISPLAY
MOV A,STATUS
MOV STATUS,CHANGE
MOV CHANGE,A
AJMP DISPLAY
NO_QUIVER:
CLR EA
NO_LOOP:MOV A,WaJ
MOVC A,@A+DPTR
MOV P2,A
MOV P1,STATUS
ACALL DELAY2
AJMP NO_LOOP
GET_STA:MOV A,#0FFH
MOV R0,WaJ
GET_LP: RLC A
DJNZ R0,GET_LP
RL A
MOV STATUS,A
RET
IF_ON_TEMP:LJMP IF_ON
IF_OFF: POP TEMP1
POP TEMP2
CLR EA
AJMP CONT1
DELAY1: MOV R4,#100
LOOP12: MOV R5,#07DH
LOOP11: MOV P0,#0FFH
MOV A,P0
INC A
JZ CONT1
ACALL DELAY
MOV P0,#0FFH
MOV A,P0
CJNE A,#0FFH,IF_ON_TEMP
CONT1: DJNZ R5,LOOP1
DJNZ R4,LOOP2
RET
DELAY2: MOV R6,#100
LOOP22: MOV R7,#07DH
LOOP21: MOV P0,#0FFH
MOV A,P0
INC A
JNZ CONT2
ACALL DELAY
MOV P0,#0FFH
MOV A,P0
INC A
JZ IF_OFF
CONT2: DJNZ R7,LOOP1
DJNZ R6,LOOP2
RET
DELAY: MOV R2,#20
LOOP2: MOV R3,#0FAH
LOOP1: NOP
NOP
DJNZ R3,LOOP1
DJNZ R2,LOOP2
RET
D500: MOV R2,#2
D500_LP:MOV BFREQ,#250
DJNZ BFREQ,$
DJNZ R2,D500_LP
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -