?? 程序清單.txt
字號:
DATA SEGMENT
KEY_V DB ?
P8255_A EQU 0E180H
P8255_B EQU 0E184H
P8255_C EQU 0E182H
P8255_CTRL EQU 0E186H
P8254_0 EQU 0E190H
P8254_1 EQU 0E192H
P8254_2 EQU 0E194H
P8254_CTRL EQU 0E196H
DIS_TABLE DB 0C0H,0F9H,0A4H,0B0H,099H,92H,82H
DB 0F8H,080H,90H,88H,83H,0C6H,0A1H
DB 86H,8EH,0FFH,8CH,89H,8EH,0BFH,0F7H ; LED顯示碼表
DIS_BIT0 DB ?
DIS_BIT1 DB ?
DIS_BIT2 DB ?
DIS_BIT3 DB ?
NUM DB ?
BAI DB ?
TENS DB ?
SECOND DB ?
FEN DW ?
CHUN DB ?
SHI EQU 000AH
CHUSHU DB ?
SHANG DB ?
YUSHU DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS,DATA
START;
MOV AX,DATA
MOV DS,AX
MOV BAI,0
MOV TENS,6
MOV SECOND,0
START1: MOV AL,10001000B
MOV DX,P8255_CTRL ;8255控制字端口
OUT DX,AL
MOV AL,00010001B ;8254初始化
MOV DX,P8254_CTL
OUT DX,AL
NEXT: CALL KEY
MOV AL,BL
CMP AL,07
JA NEXT
ADD BL,1
MOV MUM,BL
CALL DISPLAY1
MOV CX,60
MOV AL,00010001B ;8254初始化
MOV DX, P8254_CTL
OUT DX,AL
MOV AL,32H ;CLK0取32HZ,定時1S
MOV DX, P8254_1
OUT DX,AL
PUSH AX
PUSH BX
PUSH CX
PUSH DX
LEA BX,DIS_TABLE
MOV AX, 60
MOV CX,60
LOP:MOV DX, P8255_B
OUT DX,0FBH;選擇位碼
CALL DJSXS
XLAT
MOV DX, P8255_A
OUT DX ,AL
MOV AL,AH
XLAT
MOV DX, P8255_B
OUT DX,0F7H
MOV DX, P8255_A
OUT DX,AL
CALL DELAY1S
MOV DX,P8255_C ;判斷未到60答題結束
IN AL,DX
TEST AX,0F3H
JZ LL
DEC AX
LOOP LOP
CALL SGBAOJING`
LL:
POP DX
POP CX
POP BX
POP AX
CALL KEY
WARNING:
MOV AX,FENS
DIV AX,100
MOV BAI,AL
MOV AL,AH
MOV AH,0
DIV 10
MOV TENS,AL
MOV SECOND,AH
CALL DISPLAY1
CALL KEY
MOV AL ,BL ;加減分階段
CMP AL,10
JL WARNING
CMP AL,11
JG WARNING
CMP AL,10
JE JIA
CLC
MOV AX,FENS
SUB AX,10
MOV FENS,AX
DIV AX,100
MOV BAI,AL
MOV AL,AH
MOV AH,0
DIV 10
MOV TENS,AL
MOV SECOND,AH
CALL DISPLAY1
MOV DX,8284_CTRL
MOV AL,10010001B
OUT DX,AL ;二通道控制字
MOV DX,8254_1
MOV AL,96H ;初值
OUT DX, AL ;紅燈亮
JIA: MOV AX,FENS(NUM-1)
ADD AX,10
MOV FENS,AX
DIV AX,100
MOV BAI,AL
MOV AL,AH
MOV AH,0
DIV 10
MOV TENS,AL
MOV SECOND,AH
CALL DISPLAY1
MOV DX,8254_CTRL
MOV AL,00010001B
OUT DX,AL ;二通道控制字
MOV DX,8254_2
MOV AL,96H;初值
OUT DX, AL;綠燈亮
CHAXUN: CALL DISPLAY1
MOV DX,P8255_C
IN AL,DX
CMP AL,7BH ;是否為復位鍵
JNE CHAXUN
MOV AL,00000000B
MOV DX,P8255_B
OUT DX,AL
JMP START1
KEY PROC FAR
MOV DX, P8255_CTRL
MOV AL,10001000B
OUT DX,AL
CALL KEYSCAN
CMP BL,0FFH
JNZ WAIT
RET
WAIT: MOV KEY_V,BL
CALL DELAY
CALL KEYSCAN
CMP BL,KEY_V
JZ RELEASE
RET
RELEASE:MOV AL,0F0H
MOV DX,P8255_C
OUT DX,AL
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNZ RELEASE
RET
KEY ENDP
KEYSCAN PORC FAR
KEYSCAN:MOV AL,0F0H
MOV DX, P8255_C
OUT DX,AL
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNZ DONE
MOV BL,0FFH
RET
DONE: MOV BL,0
MOV CL,0FEH
MOV CH,3
FROW: MOV AL,CL
MOV DX, P8255_C
OUT DX,AL
RCL AL,1
MOV CL,AL
IN AL,DX
AND AL,0F0H
CMP AL,0F0H
JNZ FCOL
ADD BL,4
DEC CH
JNZ FROW
RET
FCOL: RCL AL,1
JNC FCOL1
INC BL
JMP FCOL
FCOL1: RET
KEYSCAN ENDP
DISPLAY1 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
LEA BX,DIS_TABLE
MOV AL,NUM ;--------組別
XLAT
AND AL,01111111B ;組別小數點亮
MOV DIS_BIT0,AL ; ****************************組別顯示碼>>地址
MOV AL,BAI ;--------百位
XLAT
MOV DIS_BIT1,AL ;*****************************百位顯示碼>>地址
MOV AL,TENS ;--------十位
XLAT
MOV DIS_BIT2,AL ;*****************************十位顯示碼>>地址
MOV AL,SECOND ;-------個位
XLAT
MOV DIS_BIT3,AL ;*****************************個位顯示碼>>地址
;------------顯示BCD碼------------------------------------
DIS_LOP1:
MOV DX,P8255_B ======================== ==========
MOV AL,01H
OUT DX,AL ;KL4位選擇
MOV DX,P8255_A
MOV AL,DIS_BIT0
OUT DX,AL ;顯示字段
MOV CX,000
LOOP $
MOV DX,P8255_B
MOV AL,02H
OUT DX,AL ;KL3位選擇
MOV DX,P8255_A
MOV AL,DIS_BIT1
OUT DX,AL ;顯示字段
MOV CX,000
LOOP $
MOV DX,P8255_B
MOV AL,03H
OUT DX,AL ;KL3位選擇
MOV DX,P8255_A
MOV AL,DIS_BIT2
OUT DX,AL ;顯示字段
MOV CX,000
LOOP $
MOV DX,P8255_B
MOV AL,04H
OUT DX,AL ;KL3位選擇
MOV DX,P8255_A
MOV AL,DIS_BIT3
OUT DX,AL ;顯示字段
MOV CX,000
LOOP $
POP AX
POP BX
POP CX
POP DX
RET
DISPLAY1 ENDP
DJSXS PROC NEAR
MOV CHUSHU,10
DIV CHUSHU
MOV SHANG,AL
MOV YUSHU,AH
DJSXS ENDP
DELAY1S PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BL,100
DELAY:MOV CX,2801
WAIT:LOOP WAIT
DEC BL
JNZ DELAY
POP DX
POP CX
POP BX
POP AX
RET
DELAY1S ENDP
SGBAOJING PROC FAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
CALL DELAY60S
MOV AL,00000000B ;關8254的60秒定時
MOV DX,P8254_CTR
MOV AL,97H ;通道2控制字,BCD碼計數 ,方式3
OUT DX,AL
MOV DX,P8254-2
MOV AL,60
OUT,DX,AL ;產生10HZ方波驅動蜂明器,及黃LED
JNZ DELAY2
DEC DX
JNZ DELAY1
MOV AL,00000000B
MOV DX,P8254-2
OUT DX,AL
POP DX
POP CX
POP BX
POP AX
PROC DELAY60S FAR
MOV DX,60
DELAY1: MOV BL,100
DELAY2: MOV CX,2801
WAIT1: LOOP WAIT1
DEC BL
DELAY60S ENDP
SGBAOJING ENDP
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -