標題: 51單片機8路搶答器部分程序 [打印本頁]

作者: bruceleeh    時間: 2018-1-7 21:53
標題: 51單片機8路搶答器部分程序
ORG          0000H
AJMP        MAIN
ORG          0003H                         ;INT0中斷入口
AJMP       INT0SUB
ORG         000BH                         ;T0中斷入口
AJMP        T0INT
ORG          0013H                         ;INT1中斷入口
AJMP        INT1SUB           
ORG          001BH                         ;T1中斷入口
AJMP        T1INT
ORG          0100H                         ;
;主程序;
MAI N :                                        ;主要功能是對系統(tǒng)進行初始化
MOV         R1,#0AH                     ;初設(shè)搶答時間10S
MOV         R2,#1EH                     ;初設(shè)回答時間30S
MOV         TMOD,#11H              ;定時器TOT1均工作在方式1
MOV         TH0,#0F0H                ;定時器TO 賦初值
MOV         TL0,#0FFH
MOV         TH1,#3CH                  ;定時器T1賦初值
MOV         TL1,#0B0H
SETB                   EA                                ;打開中斷寄存器總開關(guān)
SETB                   ET0                              ;打開T0中斷開關(guān)
SETB                   ET1                              ;打開T1中斷開關(guān)
SETB                   EX0                              ;打開INT0中斷開關(guān)
SETB                   EX1                              ;INT1中斷開關(guān)
CLR           OK
CLR           RING
SETB                   TR1                              ;T1開始定時
SETB                   TR0                              ;T0開始定時
;非法搶答查詢程序;
FEIFA:
JNB           P1.0,FEIFA1               ;查詢1號選手是否發(fā)生搶答
JNB           P1.1,FEIFA2               ;查詢2 號選手是否發(fā)生搶答
JNB           P1.2,FEIFA3               ;查詢3號選手是否發(fā)生搶答
JNB           P1.3,FEIFA4               ;查詢4 號選手是否發(fā)生搶答
JNB           P1.4,FEIFA5               ;查詢5 號選手是否發(fā)生搶答
JNB           P1.5,FEIFA6               ;查詢6 號選手是否發(fā)生搶答
JNB           P1.6,FEIFA7               ;查詢7 號選手是否發(fā)生搶答
JNB           P1.7,FEIFA8               ;查詢8 號選手是否發(fā)生搶答
AJMP        START
FEIFA1:                                          
MOV         R3,#01H                     ;將犯規(guī)號送到R3
AJMP        ERROR                        ;跳轉(zhuǎn)到犯規(guī)處理程序
FEIFA2 :   
MOV         R3,#02H
AJMP        ERROR
FEIFA3 :   
MOV         R3,#03H
AJMP        ERROR
FEIFA4 :
MOV         R3,#04H
AJMP        ERROR
FEIFA5 :
MOV         R3,#05H
AJMP        ERROR
FEIFA6:
MOV         R3,#06H
AJMP        ERROR
FEIFA7 :
MOV         R3,#07H
AJMP        ERROR
FEIFA8 :
MOV         R3,#08H
AJMP        ERROR
;犯規(guī)處理程序;
ERROR:
MOV         R0,#00H
MOV         TH1,#3CH                  ;T1重新進行賦值
MOV         TL1,#0B0H
MOV         34H,R3                       ;犯規(guī)號數(shù)暫存與34H
; 指示燈閃爍處理程序;
HERE:
MOV         A,R0
CJNE                  A,#06H, Flash
CLR           RING
MOV         R3,#0AH
MOV         R4,#0AH
MOV         R5,#0AH                     ;三個燈全滅
AJMP        CHECK1
Flash:
CJNE                  A,#0CH, CHECK1
SETB                   RING
MOV         R0,#00H
MOV         R3,#34H
MOV         R4,#0BH
MOV         R5,#0BH                    ;顯示FF和號數(shù)
AJMP        CHECK1
CHECK 1:
JNB           P3.1,QUIT1
MOV         R3,34H
ACALL       DISPLAY
AJMP        HERE
QUIT1:     
CLR           RING
CLR           OK
AJMP        START
;*顯示子程序*;
DISPLAY:
MOV         DPTR,#DAT1
MOV         A,R3
MOVC      A,@A+DPTR
MOV         P2,#0FBH
MOV         P0,A
ACALL       DELAY2
MOV         DPTR,#DAT2
MOV         A,R5
MOVC      A,@A+DPTR
MOV         P2,#0FEH
MOV         P0,A
ACALL       DELAY2
MOV         A,R4
MOVC      A,@A+DPTR
MOV         P2,#OFDH
MOV         P0,A
ACALL       DELAY2
RET
DaT1:DB 0FFH,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH
DAT2:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH
;正常搶答處理程序;
TRUE1:
ACALL       BAOJING
MOV         A, R2                                    
MOV         R6,A                                      ;搶答時間送到R6
MOV         R3, #01H
CLR           OK              ;答題時間,鎖搶答
AJMP        COUNT
TRUE2:
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#02H
CLR           OK
AJMP        COUNT
TRUE3 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#03H
CLR           OK
AJMP        COUNT
TRUE4 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#04H
CLR           OK
AJMP        COUNT
TRUE5 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#05H
CLR           OK
AJMP        COUNT
TRUE6 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#06H
CLR           OK
AJMP        COUNT
TRUE7 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#07H
CLR           OK
AJMP        COUNT
TRUE8 :
ACALL    BAOJING
MOV      A,R2
MOV      R6,A
MOV      R3,#08H
CLR        OK
AJMP     COUNT
;報警處理程序;
BAOJING :
SETB                   RING         
ACALL       DELAY1
ACALL       DELAY1
CLR           RING
RET
END






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1