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

📄 qdq.txt

📁 双人抢答器的程序,可以加分减分等,还可以用指示灯表示开始抢答和抢答结束
💻 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 + -