標(biāo)題: 51單片機(jī)8路搶答器部分程序 [打印本頁(yè)]
作者: bruceleeh 時(shí)間: 2018-1-7 21:53
標(biāo)題: 51單片機(jī)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 : ;主要功能是對(duì)系統(tǒng)進(jìn)行初始化
MOV R1,#0AH ;初設(shè)搶答時(shí)間10S
MOV R2,#1EH ;初設(shè)回答時(shí)間30S
MOV TMOD,#11H ;定時(shí)器TO和T1均工作在方式1
MOV TH0,#0F0H ;定時(shí)器TO 賦初值
MOV TL0,#0FFH
MOV TH1,#3CH ;定時(shí)器T1賦初值
MOV TL1,#0B0H
SETB EA ;打開(kāi)中斷寄存器總開(kāi)關(guān)
SETB ET0 ;打開(kāi)T0中斷開(kāi)關(guān)
SETB ET1 ;打開(kāi)T1中斷開(kāi)關(guān)
SETB EX0 ;打開(kāi)INT0中斷開(kāi)關(guān)
SETB EX1 ;INT1中斷開(kāi)關(guān)
CLR OK
CLR RING
SETB TR1 ;T1開(kāi)始定時(shí)
SETB TR0 ;T0開(kāi)始定時(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
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |