版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、OK EQU 20H;搶答開始標志位RING EQU 22H;響鈴標志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30;初設搶答時間為30sMOV R2,#60;初設答題時間為60sMOV TMOD,#11H;設置未定時器/模式1MOV TH0,#0F0HMOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H;50ms為一次溢出中斷SETB EASET
2、B ET0SETB ET1SETB EX0SETB EX1;允許四個中斷,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0;一開始就運行定時器,以開始顯示FFF.如果想重新計數,重置TH1/TL1就可以了;=查詢程序=START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY;未開始搶答時候顯示FFFJB P3.0,NEXT;dddddddACALL DELAYJB P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢ACALL BARK;按鍵發(fā)聲MOV A,
3、R1MOV R6,A;送R1->R6,因為R1中保存了搶答時間SETB OK;搶答標志位,用于COUNT只程序中判斷是否查詢搶答MOV R7,#01H ;讀搶答鍵數據信號標志,這里表示只讀一次有用信號MOV R3,#0AH;搶答只顯示計時,滅號數AJMP COUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面NEXT: JNB P1.0,FALSE1JNB P1.1,FALSE2JNB P1.2,FALSE3JNB P1.3,FALSE4JNB P1.4,FALSE5JNB P1.5,FALSE6JNB P1.6,FALSE7JNB P1.7,FALSE8
4、AJMP START;=非法搶答處理程序=FALSE1: MOV R3,#01HAJMP ERRORFALSE2: MOV R3,#02HAJMP ERRORFALSE3: MOV R3,#03HAJMP ERRORFALSE4: MOV R3,#04HAJMP ERRORFALSE5: MOV R3,#05HAJMP ERRORFALSE6: MOV R3,#06HAJMP ERRORFALSE7: MOV R3,#07HAJMP ERRORFALSE8: MOV R3,#08HAJMP ERROR;=INT0(搶答時間R1調整程序)=INT0SUB:MOV A,R1MOV B,#0AHDI
5、V ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY;先在兩個時間LED上顯示R1JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCOJNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECOJNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0
6、SUBDEC0: MOV A,R1JZ SETR1;如果R1為0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP INT0SUBBACK0: RETI;=INT1(回答時間R2調整程序)=INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB P3.4,INC1JNB P3.5,DEC1JNB P3.1,BACK1AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H,ADD1MOV
7、 R2,#00HACALL DELAY1AJMP INT1SUBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP INT1SUBSETR2: MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1: RETI;=倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=REPEAT:MOV A,R2 ;使用錦囊時重新計時MOV R6,ACLR RINGCOUNT: MOV R0,#00H;重置定時器中斷次數MOV TH1,#3CHMOV TL1,#0B0H;重置定時
8、器RECOUNT:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6MOV B,#0AHDIV AB;除十分出個位/十位MOV 30H,A;十位存于(30H)MOV 31H,B;個位存于(31H)MOV R5,30H;取十位MOV R4,31H;取個位MOV A,R6SUBB A,#07HJNC LARGER;大于5s跳到LARGER,小于等于5s會提醒MOV A,R0CJNE A,#0AH,FULL;1s中0.5s向下運行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數并清R0,重新計SETB RING
9、MOV A,R6JZ QUIT;計時完畢MOV R0,#00HDEC R6;一秒標志減1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示"DEC R6;計時一秒R6自動減1MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止鍵退出JNB OK,CHECKK ;只在回答倒計時才有效AJMP NEXTTCHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊NEXTT: ACALL DISPLAYJB OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)
10、倒數(這里起到鎖搶答作用)AJMP RECOUNTACCOUT:MOV A,36HJNB ACC.0,TRUE1JNB ACC.1,TRUE2JNB ACC.2,TRUE3JNB ACC.3,TRUE4JNB ACC.4,TRUE5JNB ACC.5,TRUE6JNB ACC.6,TZ1JNB ACC.7,TZ2AJMP RECOUNTTZ1:JMP TRUE7TZ2:JMP TRUE8QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序CLR RINGAJMP START;=正常搶答處理程序=TRUE1: ACALL BARKMOV A,R2MOV R6,A;搶答時間
11、R2送R6MOV R3,#01HCLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答AJMP COUNTTRUE2:ACALL BARKMOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3:ACALL BARKMOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4:ACALL BARKMOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5:ACALL BARKMOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6: ACA
12、LL BARKMOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTTRUE7:ACALL BARKMOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP COUNTTRUE8:ACALL BARKMOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;=犯規(guī)搶答程序=ERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3;犯規(guī)號數暫存與(34H)HERE: MOV A,R0CJNE A,#06H,FLASH;0.3s向下運行->滅并停響CLR RING
13、MOV R3,#0AHMOV R4,#0AHMOV R5,#0AH;三燈全滅AJMP CHECK1FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數并清R0,重新計SETB RINGMOV R0,#00HMOV R3,34H;取回號數MOV R5,#0BHMOV R4,#0BH;顯示FF和號數AJMP CHECK1CHECK1: JNB P3.1,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR OKAJMP START;=顯示程序=DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出
14、/P2低三位做位選碼輸出,MOV A,R3MOVC A,A+DPTRMOV P2,#0feHMOV P0,AACALL DELAY2MOV DPTR,#DAT2MOV A,R5MOVC A,A+DPTRMOV P2,#0fdHMOV P0,AACALL DELAY2MOV A,R4MOVC A,A+DPTRMOV P2,#0fbHMOV P0,AACALL DELAY2RETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;"滅","1","2","3"
15、,"4","5","6","7","8","9","滅","F"DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一個為零,其他與上相同,因為十位如果為零顯示熄滅;=加減時間延時(起到不會按下就加N個數)=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0RET;=延時4236個機器周期(去抖動用到)=DELAY:
16、MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET;=延時4236個機器周期(顯示用到)=DELAY2: MOV 32H,#43HLOOP3: MOV 33H,#1EHMOV A,R7 ;每隔6070個機器周期讀一次P1口,全為1時為無效數據,繼續(xù)讀,有一個不為1時,轉到正常搶答處理JNZ AAAA1 ;沒讀到有效數據時繼續(xù)轉到AAAA1LOOP2: DJNZ 33H,LOOP2DJNZ 32H,LOOP3RET;=讀搶答按鍵數據口程序=;由于在讀搶答數據口的時候,單片機首先進入倒計時程序,再調用顯示程序,最后才檢測按鍵口;然而在檢測按鍵口時動態(tài)掃描要調用三次(4ms)延時程序.這樣就會導致讀數據口出現滯后,造成1號優(yōu)先最高.8號最低.;故采用在延時子程序中加了讀數據口程序.保證了靈敏度和可靠性AAAA1: MOV A,P1CJNE A,#0FFH,AA1 ;當不全為1時的數據為有效數據AA0: MOV 36H,A ;將有效數據送到36H暫存A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版高新技術企業(yè)研發(fā)項目采購合同2篇
- 二零二五年度高校與公益組織合作辦學合同3篇
- 二零二五版家庭健康養(yǎng)生及食療服務合同3篇
- 二零二五年度生態(tài)雞養(yǎng)殖基地購銷合同標準版3篇
- 二零二五版桉樹生物質能源開發(fā)合同2篇
- 二零二五年房地產銷售代理合同中止及終止協(xié)議6篇
- 二零二五版智能倉儲貨物承包運輸一體化合同3篇
- 二零二五年智能空調銷售及綠色環(huán)保安裝合同樣本3篇
- 二零二五年度車庫產權買賣及物業(yè)服務合同范本3篇
- 二零二五年文化藝術品油漆保護修復合同3篇
- 春節(jié)文化常識單選題100道及答案
- 2024年杭州師范大學附屬醫(yī)院招聘高層次緊缺專業(yè)人才筆試真題
- 24年追覓在線測評28題及答案
- TGDNAS 043-2024 成人靜脈中等長度導管置管技術
- 《陸上風電場工程概算定額》NBT 31010-2019
- 罐區(qū)自動化系統(tǒng)總體方案(31頁)ppt課件
- BIQS評分表模板
- 工程建設項目內外關系協(xié)調措施
- 招投標法考試試題及答案
- 皮帶輸送機工程施工電氣安裝措施要點
- 藥房(冰柜)溫濕度表
評論
0/150
提交評論