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

📄 22.txt

📁 竞赛抢答器
💻 TXT
字号:
IO8255_A EQU 0DC60H       ;符号定义伪指令
IO8255_B EQU 0DC61H
IO8255_C EQU 0DC62H
IO8255_M EQU 0DC63H

CODE SEGMENT
  ASSUME CS:CODE
START:    
      MOV   DX,IO8255_M  
      MOV   AL,10001010B  ;设8255为A口方式0输出,B口方式0输入,C口高位输入,低位输出
      OUT   DX,AL
      MOV   AL,0FH        ;PC7置1,复位信号,低脉冲有效
      OUT   DX,AL
      MOV   AL,00H 
      OUT   DX,AL         ;PC0置0,喇叭初始不叫
      MOV   DX,IO8255_A 
      MOV   AL,00H 
      OUT   DX,AL         ;数码显示管不亮
  
  TT1:MOV DX,IO8255_B     
      IN AL,DX            ;自出B口读入开关状态
      CMP AL,00H          
      JZ TT1              ;检测是否有开关数据读入,当没有时继续读B口的输入
      
      MOV DX,IO8255_A
       
      ;当有开关数据输入时检测组号
      CMP AL,01H      
      JZ  A0             ;拨动0号开关时跳转
      CMP AL,02H
      JZ  A1             ;拨动1号开关时跳转
      CMP AL,04H
      JZ  A2             ;拨动2号开关时跳转
      CMP AL,08H
      JZ  A3             ;拨动3号开关时跳转
      CMP AL,10H
      JZ  A4             ;拨动4号开关时跳转
      CMP AL,20H
      JZ  A5             ;拨动5号开关时跳转
      CMP AL,40H
      JZ  A6             ;拨动6号开关时跳转
      CMP AL,80H
      JZ  A7             ;拨动7号开关时跳转
  
   ;将段码自8255A口输出,显示在数码管上
   A0:
      MOV AL,3FH    
      OUT DX,AL          ;数码管上显示0 
      JMP FIN
   A1:
      MOV AL,06H
      OUT DX,AL          ;数码管上显示1
      JMP FIN
   A2:
      MOV AL,5BH
      OUT DX,AL          ;数码管上显示2
      JMP FIN
   A3:
      MOV AL,4FH
      OUT DX,AL          ;数码管上显示3
      JMP FIN
   A4:
      MOV AL,66H
      OUT DX,AL          ;数码管上显示4
      JMP FIN
   A5:
      MOV AL,6DH
      OUT DX,AL          ;数码管上显示5
      JMP FIN
   A6:
      MOV AL,7DH
      OUT DX,AL          ;数码管上显示6
      JMP FIN
   A7:
      MOV AL,07H
      OUT DX,AL          ;数码管上显示7
      JMP FIN
           
  FIN:
      MOV DX,IO8255_M
      MOV AL,01H       
      OUT DX,AL          ;喇叭叫
      CALL DELAY
      MOV AL,00H
      OUT DX,AL          ;喇叭不叫
  TT2:
      MOV AH,0BH         ;DOS系统功能调用,检测当前键盘是否有键被按下
      INT 21
      CMP AL,00H
      JE  EN             ;当有键盘输入时返回到DOS         
      MOV DX,IO8255_C
      IN  AL,DX             
      TEST AL,80H        ;复位测试
      JNE  TT2           ;没有脉冲发出,继续循环
       
      MOV DX,IO8255_A    ;熄灭数码显示管  
      MOV AL,0
      OUT DX,AL
      JMP TT1            ;继续下一轮
EN:                 
      MOV AH,4CH         ;返回DOS
      INT 21H
               
DELAY   PROC             ;延迟单元
	PUSH  AX
	PUSH  BX
	PUSH  CX                
        MOV   BX,1FFH
        MOV   AX,0AFFFH
T1:     DEC   BX
        MOV   CX,0AFFFH
T2:     DEC   AX 
        LOOP  T2
        CMP   BX,0
        JNE   T1
        POP   CX
        POP   BX
        POP   AX
        RET
DELAY   ENDP

CODE ENDS
     END START


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -