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

下載本文檔

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

文檔簡介

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為一次溢出中斷SETB EASETB

2、 ET0SETB ET1SETB EX0SETB EX允許四個(gè)中斷,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0r開始就運(yùn)行定時(shí)器,以開始顯示FFF如果想重新計(jì)數(shù),重置TH1/TL1就可以了;=查詢程序 =START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLA未開始搶答時(shí)候顯示 FFFJB ,NEXT;dddddddACALL DELAYJB ,NEXT去抖動(dòng),如果開始鍵按下就向下執(zhí)行,否者跳到非法搶答查詢ACALL BARK按鍵發(fā)聲MOV A,R1MOV R6,A送R1-R6因?yàn)镽1中保存了搶答時(shí)

3、間SETB OK搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號(hào)標(biāo)志,這里表示只讀一次有用信號(hào)MOV R3,#0A H搶答只顯示計(jì)時(shí),滅號(hào)數(shù)AJMP COUNT進(jìn)入倒計(jì)時(shí)程序,查詢有效搶答的程序”在COUNT里面NEXT: JNB ,FALSE1JNB ,FALSE2JNB ,FALSE3JNB ,FALSE4JNB ,FALSE5JNB ,FALSE6JNB ,FALSE7JNB ,FALSE8AJMP START;=非法搶答處理程序 =FALSE1: MOV R3,#01HAJMP ERRORFALSE2: MOV R3,#02HAJMP ERR

4、ORFALSE3: MOV R3,#03HAJMP ERRORFALSE4: MOV R3,#04HAJMP ERRORFALSE5: MOV R3,#05HAJMP ERRORFALSE6: MOV R3,#06HAJMP ERRORFALSE7: MOV R3,#07HAJMP ERRORFALSE8: MOV R3,#08HAJMP ERROR;=INTO(搶答時(shí)間R1調(diào)整程序)=INT0SUB:MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLA先在兩個(gè)時(shí)間 LED上顯示R1JNB ,INC0為+1s鍵,如按下跳

5、到INCOJNB ,DECC為-1s鍵,如按下跳到 DECOJNB ,BACKC為確定鍵,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0如果不是99,R2加1,如果加到99,R1就置0,重新加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR如果R1為0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP I

6、NT0SUBBACK0: RETI;=INT1(回答時(shí)間R2調(diào)整程序)=INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB ,INC1JNB ,BACK1JNB ,DEC1AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H,ADD1MOV R2,#00HACALL DELAY1AJMP INT1SUBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP INT1SU

7、BSETR2: MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1: RETI;=倒計(jì)時(shí)程序 (搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)=REPEAT:MOV A,R2使用錦囊時(shí)重新計(jì)時(shí)MOV R6,ACOUNT: MOV R0,#00H重置定時(shí)器中斷次數(shù)CLR RINGMOV TH1,#3CHMOV TL1,#0B0 H重置定時(shí)器R6RECOUNT:MOV A,R6;R保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給MOV B,#0AHDIV AB;除十分出個(gè)位/十位MOV 30H,A;十位存于(30H)MOV 31H,B;個(gè)位存于(3伯)MOV R5,30 H;取

8、十位MOV R4,31H;取個(gè)位MOV A,R6SUBB A,#07HJNC LARGER于5s跳到LARGER、于等于5s會(huì)提醒MOV A,R0CJNE A,#0AH,FULL;1中 向下運(yùn)行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CHEC下面是1s的情況,響并顯示號(hào)數(shù)并清 R0重新計(jì)SETB RINGMOV A,R6JZ QUIT計(jì)時(shí)完畢MOV R0,#00HLARGER: MOV A,R0CJNE A,#14H,CHECK;果1s向下運(yùn)行,否者跳到查”停/顯示”DEC R6計(jì)時(shí)一秒R6自動(dòng)減1MOV R0,#00HCHECK: JNB ,QUI如按下停止鍵

9、退出JNB OK,CHECKKH在回答倒計(jì)時(shí)才有效AJMP NEXTTCHECKK:JNB ,REPEA判斷是否使用錦囊NEXTT: ACALL DISPLAY(這里起到鎖搶答JB OK,ACCOUtP果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù) 作用 )AJMP RECOUNTACCOUT:MOV A,36HJNB ,TRUE1JNB ,TRUE2JNB ,TRUE3JNB ,TRUE4JNB ,TRUE5JNB ,TRUE6JNB ,TZ1JNB ,TZ2AJMP RECOUNTTZ1:JMP TRUE7TZ2:JMP TRUE8QUIT: CLR OK如果按下了 ”停止鍵”執(zhí)行的

10、程序CLR RINGAJMP START;=正常搶答處理程序 =TRUE1: ACALL BARKMOV A,R2MOV R6,A搶答時(shí)間 R2送 R6MOV R3,#01HCLR OK因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答AJMP COUNTTRUE2:ACALL BARKMOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3:ACALL BARKMOV A,R2MOV R6,ACLR OKMOV R3,#03HAJMP COUNTTRUE4:ACALL BARKMOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUN

11、TTRUE5:ACALL BARKMOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6: ACALL BARKMOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTTRUE7:ACALL BARKMOV A,R2MOV R3,#07HMOV R6,AMOV P0,AACALL DELAY2CLR OKAJMP COUNTTRUE8:ACALL BARKMOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;=犯規(guī)搶答程序 =ERROR: MOV R0,#00HMOV TH1,#3CHMO

12、V TL1,#0B0HMOV 34H,R3;犯規(guī)號(hào)數(shù)暫存與(34H)HERE: MOV A,R0CJNE A,#06H,FLASH向下運(yùn)行-滅并停響CLR RINGMOV R3,#0AHMOV R4,#0AHMOV R5,#0A H;三燈全滅AJMP CHECK1R0重新計(jì)FLASH: CJNE A,#0CH,CHEC下面是的情況,響并顯示號(hào)數(shù)并清MOV R3,34H;取回號(hào)數(shù)MOV R5,#0BHMOV R4,#0BH顯示FF和號(hào)數(shù)AJMP CHECK1CHECK1: JNB ,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR OKAJMP STAR

13、T;=顯示程序 =DISPLAY:MOV DPTR,#DAT查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出MOV A,R3MOVC A,A+DPTRMOV P2,#0feHMOV P0,AACALL DELAY2MOV DPTR,#DAT2MOV A,R5MOVC A,A+DPTRMOV P2,#0fdHMOV 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,5,6,7,8,9,滅 ,FD

14、AT2: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,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET;=延時(shí) 4236個(gè)機(jī)器周期 (顯示用到 )=LOOP3: MOV

15、 33H,#1EHMOV A,R7 ;每隔6070個(gè)機(jī)器周期讀一次 P1 口,全為1時(shí)為無效數(shù)據(jù),繼續(xù)讀,有一個(gè)不為1時(shí),轉(zhuǎn) 到正常搶答處理JNZ AAAA1 沒; 讀到有效數(shù)據(jù)時(shí)繼續(xù)轉(zhuǎn)到AAAA1LOOP2: DJNZ 33H,LOOP2DJNZ 32H,LOOP3RET;=讀搶答按鍵數(shù)據(jù)口程序 =; 由于在讀搶答數(shù)據(jù)口的時(shí)候,單片機(jī)首先進(jìn)入倒計(jì)時(shí)程序,再調(diào)用顯示程序,最后才檢測 按鍵口; 然而在檢測按鍵口時(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暫存AJMP LOOP2AA1:

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論