找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3313|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)8路搶答器部分程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:272936 發(fā)表于 2018-1-7 21:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
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 :                                        ;主要功能是對(duì)系統(tǒng)進(jìn)行初始化
MOV         R1,#0AH                     ;初設(shè)搶答時(shí)間10S
MOV         R2,#1EH                     ;初設(shè)回答時(shí)間30S
MOV         TMOD,#11H              ;定時(shí)器TOT1均工作在方式1
MOV         TH0,#0F0H                ;定時(shí)器TO 賦初值
MOV         TL0,#0FFH
MOV         TH1,#3CH                  ;定時(shí)器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開始定時(shí)
SETB                   TR0                              ;T0開始定時(shí)
;非法搶答查詢程序;
FEIFA:
JNB           P1.0,FEIFA1               ;查詢1號(hào)選手是否發(fā)生搶答
JNB           P1.1,FEIFA2               ;查詢2 號(hào)選手是否發(fā)生搶答
JNB           P1.2,FEIFA3               ;查詢3號(hào)選手是否發(fā)生搶答
JNB           P1.3,FEIFA4               ;查詢4 號(hào)選手是否發(fā)生搶答
JNB           P1.4,FEIFA5               ;查詢5 號(hào)選手是否發(fā)生搶答
JNB           P1.5,FEIFA6               ;查詢6 號(hào)選手是否發(fā)生搶答
JNB           P1.6,FEIFA7               ;查詢7 號(hào)選手是否發(fā)生搶答
JNB           P1.7,FEIFA8               ;查詢8 號(hào)選手是否發(fā)生搶答
AJMP        START
FEIFA1:                                          
MOV         R3,#01H                     ;將犯規(guī)號(hào)送到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                  ;對(duì)T1重新進(jìn)行賦值
MOV         TL1,#0B0H
MOV         34H,R3                       ;犯規(guī)號(hào)數(shù)暫存與34H
; 指示燈閃爍處理程序;
HERE:
MOV         A,R0
CJNE                  A,#06H, Flash
CLR           RING
MOV         R3,#0AH
MOV         R4,#0AH
MOV         R5,#0AH                     ;三個(gè)燈全滅
AJMP        CHECK1
Flash:
CJNE                  A,#0CH, CHECK1
SETB                   RING
MOV         R0,#00H
MOV         R3,#34H
MOV         R4,#0BH
MOV         R5,#0BH                    ;顯示FF和號(hào)數(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                                      ;搶答時(shí)間送到R6
MOV         R3, #01H
CLR           OK              ;答題時(shí)間,鎖搶答
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
;報(bào)警處理程序;
BAOJING :
SETB                   RING         
ACALL       DELAY1
ACALL       DELAY1
CLR           RING
RET
END

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表