⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 程序清单.txt

📁 用于八路抢答器
💻 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 + -