?? qdq.txt
字號:
Z8279 EQU 0FF82H ;8279 狀態/命令口地址
D8279 EQU 0FF80H ;8279 數據口地址
LEDMOD EQU 00H
LEDFEQ EQU 2FH
LEDCLS EQU 0C1H
LEDWR0 EQU 80H
ORG 0000H ;用兩個中斷
AJMP MAIN1
ORG 0003H
LJMP INT0
ORG 0013H
LJMP INT1
ORG 0040H
MAIN1: MOV SP,#60H
MOV 71H,#00H ;為數碼管賦初值
mov 72h,#08h
MOV 73H,#09H
MOV 74H,#00H
MOV 75H,#00H
MOV 76H,#08H
MOV 77H,#09H
SETB EA ;允許中斷
INIT8279:
MOV DPTR ,#Z8279
MOV A,#0D1H
MOVX @DPTR,A ;初始化8279
WAIT: CLR IT0
CLR IT1 ;外部中斷為電平觸發
SETB EX1
SETB EX0 ;允許外部中斷
MOV 70H,#00H
LCALL GETKEY
CJNE A,#0FFH,WAIT ;讀入A鍵
mov A,B
CJNE A,#0AH,WAIT
LJMP FF
GGG: MOVX A,@DPTR ;讀入8279狀態
JB ACC.7,GGG ;等待清除命令完成
MOV A,#00H ;送方式命令
MOVX @DPTR,A
MOV A,#32H
MOVX @DPTR,A
RET
GETKEY: ;讀取鍵盤子程序
MOV DPTR,#Z8279
MOVX A,@DPTR
ANL A,#07H
JNZ GETVAL
MOV A,#00H
SJMP NKBHIT
GETVAL:
MOV A,#40H ;輸出讀FIFO命令
MOVX @DPTR,A
MOV DPTR,#D8279 ;讀鍵輸入值
MOVX A,@DPTR
ANL A,#3FH ;屏蔽 SHIFT 和 CTRL 鍵
MOV DPTR,#KEYCODE ;鍵碼表起始地址
MOVC A,@A+DPTR ;查表
MOV B,A ;置返回鍵值
MOV A,#0FFH ;置有鍵輸入標志
NKBHIT:
RET
ORG 0300h
INT1: MOV 70H,#00H
CPL EA ;外部中斷1
SETB P1.1
CLR P1.2
SETB P1.0
MOV 74H,#02H
LCALL DISLED
PP: LCALL GETKEY
CJNE A,#0FFH,PP
MOV A,B
CJNE A,#00H,TR ;判斷輸入是否為0不加分
AJMP LI
TR: CJNE A,#01H,PPP ;判斷輸入是否為1加20分
LCALL AI
AJMP UU1
QW: LCALL GETKEY
CJNE A,#0FFH,QW
MOV A,B
PPP: CJNE A,#02H,PPPQ ;判斷輸入是否為2加10分
LCALL AII
AJMP UU1
QQW: LCALL GETKEY
CJNE A,#0FFH,QQW
MOV A,B
PPPQ: CJNE A,#03H,QQW ;判斷輸入是否為3減10分
LCALL AIII
AJMP UU1
LI: ACALL DISLED
LJMP UU1
AI:
MOV A,77H
CJNE A,#09H,RRRT
MOV A,76H
CJNE A,#08H,CIIW
MOV 76H,#00H
MOV 77H,#00H
AJMP TQTT
RRRT: MOV A,76H
CJNE A,#0AH,CIIW
INC 77H
MOV 76H,#00H
CIIW: INC 76H
INC 76H
AJMP TTTQ
TQTT: ACALL DISLED
RETI
AII: MOV A,77H
CJNE A,#09H,RRRC
MOV A,76H
CJNE A,#09H,CIIC
MOV 76H,#00H
MOV 77H,#00H
AJMP TTTQ
RRRC: MOV A,76H
CJNE A,#0AH,CIIC
INC 77H
MOV 76H,#00H
CIIC: INC 76H
AJMP TTTQ
TTTT: ACALL DISLED
RETI
AIII: MOV A,77H
CJNE A,#00H,RRRR
MOV A,76H
CJNE A,#00H,CIII
MOV 76H,#00H
MOV 77H,#00H
AJMP TTTQ
RRRR: MOV A,76H
CJNE A,#00H,CIII
DEC 77H
MOV 76H,#0AH
CIII: DEC 76H
AJMP TTTQ
TTTQ:
ACALL DISLED
UU1:
MOV R2,#01H
SETB EA
RETI
ORG 0600H
INT0: MOV 70H,#00H
CLR EA
SETB P1.0
CLR P1.1 ;外部中斷0
SETB P1.2
MOV A,#01H
MOV 74H,#01H
ACALL DISLED
LL: LCALL GETKEY
CJNE A,#0FFH,LL ;給乙隊加分
mov A,B
CJNE A,#00H,XX ; 輸入為0不加分
AJMP WW
XX: CJNE A,#01H,QQQ ;輸入為1加20分
LCALL YU
AJMP UU
QWW: LCALL GETKEY
CJNE A,#0FFH,QWW
mov A,B
QQQ: CJNE A,#02H,QQQQ ;輸入為2加10分
LCALL YYU
AJMP UU
QWWQ: LCALL GETKEY
CJNE A,#0FFH,QWWQ
mov A,B
QQQQ: CJNE A,#03H,QWWQ ;輸入為2加10分
AJMP YYUU
WW: ACALL DISLED
LJMP UU
YU:
MOV A,73H
CJNE A,#09H,RRRE
MOV A,72H
CJNE A,#08H,CIIE
MOV 72H,#00H
MOV 73H,#00H
AJMP ABBW
RRRE: MOV A,72H
CJNE A,#0AH,CIIE
INC 73H
MOV 72H,#00H
CIIE: INC 72H
INC 72H
AJMP ABBW
ABBW: ACALL DISLED
RETI
YYU:
MOV A,73H
CJNE A,#09H,RRRW
MOV A,72H
CJNE A,#09H,CIIS
MOV 72H,#00H
MOV 73H,#00H
AJMP ABB
RRRW: MOV A,72H
CJNE A,#0AH,CIIS
INC 73H
MOV 72H,#00H
CIIS: INC 72H
AJMP ABB
ABB: ACALL DISLED
RETI
YYUU: MOV A,73H
CJNE A,#00H,ZZZZ
MOV A,72H
CJNE A,#00H,WIII
MOV 72H,#00H
MOV 73H,#00H
AJMP ABBC
ZZZZ: MOV A,72H
CJNE A,#00H,WIII
DEC 73H
MOV 72H,#0AH
WIII: DEC 72H
AJMP ABBC
ABBC: ACALL DISLED
UU: MOV R2,#01H
SETB EA
RETI
FF: CLR P1.0
SETB P1.1
SETB P1.2
SETB P1.3
MOV R2,#0AH
MOV R1,#14H
LOOP: AJMP DD
DD:
MOV TMOD,#09H
MOV TL0,#00H
MOV TH0,#04CH
SETB TR0
LOOP1: JBC TF0,LOOP2
AJMP LOOP1
LOOP2: DJNZ R1,loop
DEC R2
MOV 70H,R2
ACALL DISLED
MOV R1,#14H
INC R2
DJNZ R2,LOOP
CLR P1.3
SETB P1.0
LJMP WAIT
DISLED:
MOV DPTR,#Z8279
MOV A,#90H
MOVX @DPTR,A
MOV R0,#70H
MOV R7,#08H
MOV DPTR,#D8279
DL0: MOV A,@R0
ADD A,#05H
MOVC A,@A+PC
MOVX @DPTR,A
INC R0
DJNZ R7,DL0
RET
LEDSEG:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
KEYCODE:
DB 00H,01H,02H,03H,04H,05H,06H,07H
DB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -