搶答器原版匯編程序_第1頁(yè)
搶答器原版匯編程序_第2頁(yè)
搶答器原版匯編程序_第3頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、OK EQU 20H搶; 答開始標(biāo)志位RING EQU 22H響; 鈴標(biāo)志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30; 初設(shè)搶答時(shí)間為 30sMOV R2,#60;初設(shè)答題時(shí)間為 60sMOV TMOD,#11H;設(shè)置未定時(shí)器 / 模式 1MOV TH0,#0F0HMOV TL0,#0FFH越; 高發(fā)聲頻率越高 ,越尖MOV TH1,#3CHMOV TL1,#0B0H;50ms 為一次溢出中

2、斷SETB EASETB ET0SETB ET1SETB EX0SETB EX1允; 許四個(gè)中斷 ,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0一; 開始就運(yùn)行定時(shí)器 ,以開始顯示 FFF如. 果想重新計(jì)數(shù) ,重置 TH1/TL1 就可以了 ;=查詢程序 =START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY未;開始搶答時(shí)候顯示 FFFJB ,NEXT;dddddddACALL DELAYJB ,NEXT去; 抖動(dòng) ,如果"開始鍵 "按下就向下執(zhí)行 ,否者跳到非法搶答查詢 A

3、CALL BARK按; 鍵發(fā)聲MOV A,R1MOV R6,A;送 R1->R6,因?yàn)?R1 中保存了搶答時(shí)間SETB OK搶; 答標(biāo)志位 ,用于 COUNT 只程序中判斷是否查詢搶答MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號(hào)標(biāo)志,這里表示只讀一次有用信號(hào)MOV R3,#0AH;搶答只顯示計(jì)時(shí) ,滅號(hào)數(shù)AJMP COUNT進(jìn); 入倒計(jì)時(shí)程序 ," 查詢有效搶答的程序 "在 COUNT里面 NEXT: JNB ,FALSE1JNB ,FALSE2JNB ,FALSE3JNB ,FALSE4JNB ,FALSE5JNB ,FALSE6JNB ,FALSE7JNB ,FAL

4、SE8AJMP 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(搶答時(shí)間 R1調(diào)整程序 )=INT0SUB:MOV A,R1MOV B,

5、#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY先;在兩個(gè)時(shí)間 LED 上顯示 R1JNB ,INC0;為 +1s 鍵,如按下跳到 INCOJNB ,DEC0為; -1s 鍵,如按下跳到 DECOJNB ,BACK0為; 確定鍵 ,如按下跳到 BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0如; 果不是 99,R2加1,如果加到 99,R1就置 0,重新加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SU

6、BDEC0: MOV A,R1JZ SETR1如; 果 R1為0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP INT0SUBBACK0: RETI;=INT1(回答時(shí)間 R2調(diào)整程序 )=INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB ,INC1JNB ,DEC1JNB ,BACK1AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H,ADD1MOV R2,#00HAC

7、ALL DELAY1AJMP INT1SUBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP INT1SUBSETR2: MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1: RETI;=倒計(jì)時(shí)程序 (搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)=REPEAT:MOV A,R2使 ; 用錦囊時(shí)重新計(jì)時(shí)MOV R6,ACLR RINGCOUNT: MOV R0,#00H重; 置定時(shí)器中斷次數(shù)MOV TH1,#3CHMOV TL1,#0B0H;重置定時(shí)器R6RECO

8、UNT:MOV A,R6;R保6 存了倒計(jì)時(shí)的時(shí)間 ,之前先將搶答時(shí)間或回答時(shí)間給MOV B,#0AHDIV AB;除十分出個(gè)位 / 十位MOV 30H,A;十位存于 (30H)MOV 31H,B;個(gè)位存于 (31H)MOV R5,30H;取十位MOV R4,31H;取個(gè)位MOV A,R6SUBB A,#07HJNC LARGER大; 于 5s 跳到 LARGER小, 于等于 5s會(huì)提醒MOV A,R0CJNE A,#0AH,FULL;1s中向下運(yùn)行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CHEC下K;面是 1s 的情況 ,響并顯示號(hào)數(shù)并清 R0,重新計(jì)SETB

9、 RINGMOV A,R6JZ QUIT計(jì); 時(shí)完畢MOV R0,#00HDEC R6一; 秒標(biāo)志減 1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK如;果1s 向下運(yùn)行 ,否者跳到查 "停/顯示"DEC R6計(jì); 時(shí)一秒 R6自動(dòng)減 1MOV R0,#00HCHECK: JNB ,QUIT如; 按下停止鍵退出JNB OK,CHECKK只 ; 在回答倒計(jì)時(shí)才有效AJMP NEXTTCHECKK:JNB ,REPEA判T 斷; 是否使用錦囊NEXTT: ACALL DISPLAY(這里起到鎖搶答JB OK,ACCOUT如; 果是搶答倒計(jì)

10、時(shí) ,如是則查詢搶答 ,否者跳過(guò)查詢繼續(xù)倒數(shù) 作用)AJMP RECOUNTACCOUT:MOV A,36HJNB ,TRUE1JNB ,TRUE2JNB ,TRUE3JNB ,TRUE4JNB ,TRUE5JNB ,TRUE6JNB ,TZ1JNB ,TZ2AJMP RECOUNTTZ1:JMP TRUE7TZ2:JMP TRUE8QUIT: CLR OK如; 果按下了 "停止鍵 "執(zhí)行的程序CLR RINGAJMP START;=正常搶答處理程序 =TRUE1: ACALL BARKMOV A,R2MOV R6,A;搶答時(shí)間 R2送 R6MOV R3,#01HCLR O

11、K因; 為答題的計(jì)時(shí)不再查詢搶答 ,所以就鎖了搶答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: ACALL BARKMOV A,R2MOV

12、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ī)號(hào)數(shù)暫存與 (34H)HERE: MOV A,R0CJNE A,#06H,FLASH向; 下運(yùn)行 -滅并停響CLR RINGMOV R3,#0AHMOV R4,#0AHM

13、OV R5,#0AH;三燈全滅AJMP CHECK1R0,重新計(jì)FLASH: CJNE A,#0CH,CHECK下1面; 是的情況 ,響并顯示號(hào)數(shù)并清SETB RINGMOV R0,#00HMOV R3,34H;取回號(hào)數(shù)MOV R5,#0BHMOV R4,#0BH;顯示 FF 和號(hào)數(shù)AJMP CHECK1CHECK1: JNB ,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR OKAJMP START;=顯示程序 =DISPLAY:MOV DPTR,#DAT查1;表顯示程序 ,利用 P0口做段選碼口輸出 /P2 低三位做位選碼輸出MOV A,R3MO

14、VC 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","4","

15、5","6","7","8","9","滅 ","F"DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一個(gè)為零 ,其他與上相同 ,因?yàn)槭蝗绻麨榱泔@示熄滅 ;=加減時(shí)間延時(shí) (起到不會(huì)按下就加 N 個(gè)數(shù) )= DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0RET ;=延時(shí) 4236個(gè)機(jī)器周期 (去抖動(dòng)用到 )=DELAY: MOV 32H,

16、#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET;=延時(shí) 4236個(gè)機(jī)器周期 (顯示用到 )=DELAY2: MOV 32H,#43HLOOP3: MOV 33H,#1EHMOV A,R7 ;每隔6070個(gè)機(jī)器周期讀一次 P1口,全為1時(shí)為無(wú)效數(shù)據(jù) ,繼續(xù)讀 ,有一個(gè)不為 1時(shí),轉(zhuǎn) 到正常搶答處理JNZ AAAA1 沒(méi); 讀到有效數(shù)據(jù)時(shí)繼續(xù)轉(zhuǎn)到 AAAA1LOOP2: DJNZ 33H,LOOP2DJNZ 32H,LOOP3RET;=讀搶答按鍵數(shù)據(jù)口程序 =;由于在讀搶答數(shù)據(jù)口的時(shí)候,單片機(jī)首先進(jìn)入倒計(jì)時(shí)程序,再調(diào)用顯示程序,最后才檢測(cè) 按鍵口;然而在檢測(cè)按鍵口時(shí)動(dòng)態(tài)掃描要調(diào)用三次(4ms) 延時(shí)程序 .這樣就會(huì)導(dǎo)致讀數(shù)據(jù)口出現(xiàn)滯后 ,造成1號(hào)優(yōu)先最高 .8號(hào)最低 .;故采用在延時(shí)子程序中加了讀數(shù)據(jù)口程序.保證了靈敏度和可靠性AAAA1: MOV A,P1CJNE A,#0FFH,AA1 當(dāng); 不全為 1時(shí)的數(shù)據(jù)為有效數(shù)據(jù)AA0: MOV 36H,A ;將有效數(shù)據(jù)送到 36H 暫

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論