八路數(shù)字搶答器 微機(jī)原理及接口技術(shù)課程設(shè)計_第1頁
八路數(shù)字搶答器 微機(jī)原理及接口技術(shù)課程設(shè)計_第2頁
八路數(shù)字搶答器 微機(jī)原理及接口技術(shù)課程設(shè)計_第3頁
八路數(shù)字搶答器 微機(jī)原理及接口技術(shù)課程設(shè)計_第4頁
八路數(shù)字搶答器 微機(jī)原理及接口技術(shù)課程設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 目錄1. 微機(jī)原理及接口技術(shù)課程設(shè)計任務(wù)書P12. 八路數(shù)字搶答器 P52.1 功能介紹 P52.2 搶答器總體設(shè)計 P52.3 搶答器硬件設(shè)計 P62.4 搶答器軟件設(shè)計 P112.5 實(shí)驗(yàn)結(jié)果 P192.6 程序優(yōu)缺點(diǎn) P232.7 收獲和體會 P242.8 創(chuàng)新部分 P252.9 參考文獻(xiàn) P252.10 附錄一 P262.11 附錄二 P27八路數(shù)字搶答器一 功能介紹1、如果想調(diào)節(jié)搶答時間或答題時間,按"搶答時間調(diào)節(jié)"鍵或"答題時間調(diào)節(jié)"鍵進(jìn)入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下"加1s"鍵,

2、如果想減一秒按一下"-1s"鍵,時間LED上會顯示改變后的時間,調(diào)整范圍為0s99s, 0s時再減1s會跳到99,99s時再加1s會變到0s。 2、主持人按"搶答開始"鍵,會有提示音,并立刻進(jìn)入搶答倒計時(預(yù)設(shè)30s搶答時間),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進(jìn)入回答倒計時(預(yù)設(shè)60s搶答時間),不進(jìn)行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于5s會每秒響一下提示音。 3、如倒計時期間,主持人想停止倒計時可以隨時按"停止"按鍵,系統(tǒng)會自動進(jìn)入準(zhǔn)備狀態(tài),等待主持人按"搶答開始"進(jìn)入下次搶答

3、計時。 4、如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號數(shù)并響個不停,直到按下"停止" 鍵為止。 5、P3.0為開始搶答,P3.1為停止,p1.0-p1.7為八路搶答輸入 數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P3.6口。P3.2搶答時間調(diào)整結(jié),P3.3回答時間調(diào)整,P3.4為時間加1調(diào)整,P3.5為時間減1調(diào)整。二 搶答器總體設(shè)計1.1搶答器的工作原理搶答器的工作原理是利用單片機(jī)的定時器T0、T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,用4個共陰極LED數(shù)碼管來顯示,用P0口作為數(shù)碼管的八個段選,用P

4、2口中的P2.0、P2.1、P2.2、作為4個數(shù)碼管其中3個位選,P1口接8個按鍵,提供選手搶答,P3.0-P3.5四個接四個按鍵,提供開始、結(jié)束、答題時間調(diào)整、槍答時間調(diào)整,加1、減1調(diào)整之用。1.2搶答器的總體設(shè)計 倒計時方案方面利用MCS-51的內(nèi)部的定時/計時器進(jìn)行中斷計時,配合軟件延時實(shí)現(xiàn)倒計時。該方案節(jié)省硬件成本,并且能夠在定時器/計數(shù)器的使用、中斷及程序設(shè)計方案方面得到鍛煉與提高,顯示方面采用穿行傳輸實(shí)現(xiàn)動態(tài)顯示,該方案的硬件連接簡單,但動態(tài)掃描的顯示方式需占用CPU較多的時間,適用于單片機(jī)沒有太多實(shí)時測控的任務(wù)場合三 搶答器硬件電路設(shè)計3.1芯片統(tǒng)計名稱型號數(shù)量芯片89C511

5、數(shù)碼管7SEG-MPX4-CC1按鈕BUTTON15電容CAP2電解電容CAP-ELEC1晶振CRYSTAL1電阻RES8喇叭SPEAKER(DEVICE)13.2硬件介紹3.2.1 芯片 89C51【1】【2】 數(shù)碼管其中DP為小數(shù)點(diǎn)【3】數(shù)碼管分共陽極和共陰極,都需要上拉電阻,以增加負(fù)載驅(qū)動能力。共陽極則每位低電平有效,共陰極則每位高電平有效單片機(jī)中共陽極段代碼: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H 07 DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH 8F單片機(jī)中共陰極段代碼: DB 3FH,06H,5BH,4FH,6

6、6H,6DH,7DH,07H 07 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H 8F3.3 電路設(shè)計XTAL1、XTAL2分別為反相放大器的輸入端和輸出端,外接定時反饋元件組成振蕩器(內(nèi)部時鐘方式),產(chǎn)生時鐘送至單片機(jī)內(nèi)部各元件。RST連接復(fù)位電路P0口控制數(shù)碼管段代碼P2口的低三位,控制數(shù)碼管位選P3口:P3.0接開始按鈕 P3.1接停止按鈕 P3.2接搶答時間調(diào)整 P3.3接回答時間調(diào)整 P3.4接加1 P3.5接減1 P3.6接喇叭芯片電路 芯片電路如圖3.1 圖3.1 復(fù)位電路復(fù)位電路如圖3.2圖3.2該復(fù)位電路采用上電自動復(fù)位和手動復(fù)位兩種復(fù)位方式,圖中網(wǎng)絡(luò)

7、標(biāo)號所指9連接到單片機(jī)的復(fù)位引腳。要實(shí)現(xiàn)復(fù)位只需在,51系列單片機(jī)的RESET引腳上加上5ms的高電平就可以了。上電復(fù)位是利用電容的充電來實(shí)現(xiàn)的,即上電瞬間RESET端的電位與Vcc相同,隨著電容上儲能增加,電容電壓也逐漸增大,充電電流減小,RESET端的電位。這樣就會建立一個脈沖電壓,調(diào)節(jié)電容與電阻的大小可對脈沖的持續(xù)時間進(jìn)行調(diào)節(jié)。通常若采用12MHz的晶振時,復(fù)位元件參數(shù)為22F的電解電容和10k的電阻。按鈕復(fù)位電路是通過按下復(fù)位按鈕時,電源對RESET端維持兩個機(jī)器周期的高電平實(shí)現(xiàn)復(fù)位的。 晶振電路晶振電路設(shè)計如圖3.3圖3.3MSC-51單片機(jī)的定時控制功能是用時鐘電路和振蕩器完成的,

8、而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時鐘方式和外部時鐘方式。本設(shè)計中采用內(nèi)部時鐘方式。單片機(jī)內(nèi)部有一個反相放大器,XTAL1、XTAL2分別為反相放大器的輸入端和輸出端,外接定時反饋元件組成振蕩器(內(nèi)部時鐘方式),產(chǎn)生時鐘送至單片機(jī)內(nèi)部各元件。時鐘頻率越高,單片機(jī)控制器的控制節(jié)拍就越快,運(yùn)算速度也就越快。一般來說單片機(jī)內(nèi)部有一個帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-2所示。加電以后延時一段時間(約10ms)振蕩器產(chǎn)生時鐘,不受軟件控制,圖中Y1為晶振,震蕩產(chǎn)生的時鐘頻率主要由Y1確定。電容C1,C2的作用有兩個:一是幫助振蕩器起振,二是對振蕩器的頻率

9、起微調(diào)作用,典型值為30pF。 數(shù)碼管電路數(shù)碼管電路如圖3.4圖3.4四 搶答器軟件設(shè)計4.1 主程序設(shè)計此程序的及時采用定時器T0和T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序。程序:START:MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未開始搶答時候顯示FFF JB P3.0,NEXT ACALL DELAY JB P3.0,NEXT;去抖動,如果“開始”按下就向下執(zhí)行,否則跳到非法搶答查詢 ACALL BARK;按鍵發(fā)聲 MOV A,R1 MOV R6,A;送R1->R6,因?yàn)镽1中保存了搶答時間 SETB OK;搶答標(biāo)志位,勇

10、于COUNT程序中半段是否查詢搶答 MOV R7,#01H;讀搶答鍵數(shù)據(jù)信號標(biāo)志,這里表示只讀一次有用信號 MOV R3,#0AH;搶答只顯示計時,滅號數(shù) AJMP COUNT;進(jìn)入倒計時程序,“查詢有效搶答的程序”在COUNT里面4.2顯示子程序的設(shè)計由于采用軟件動態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示,顯示用十進(jìn)制BCD碼的數(shù)據(jù)對應(yīng)段碼存放在ROM表中。顯示時,先取出70H75H某一地址中的數(shù)據(jù),然后查得對應(yīng)的顯示段碼從P0口輸出。P2口將對應(yīng)的數(shù)碼管選中,就能顯示該地址單元的數(shù)據(jù)值。程序:DISPLAY: MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼輸出/P2低三位做位選嗎輸出MOV A,

11、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、4、5、6、7、8、9、滅、FDAT2:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H

12、,71H;0、1、2、3、4、5、6、7、8、9、滅、F4.3 定時器T0、T1中斷服務(wù)程序的設(shè)計定時器T0用于響鈴程序,定時器T1用于計時程序。當(dāng)答題剩余5秒種時P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音,提示選手如圖4.2圖4.2 程序T0INT:MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT CPL P3.6;RING標(biāo)志位為1時P3.6口不短取反使喇叭發(fā)出一定頻率的聲音OUT:RETI;=T1溢出中斷(計時程序)=T1INT:MOV TH1,#3CH MOV TL1,#0B0H INC R0RETIINT0SUB:MOV A,R1 MOV B,#0AH

13、 DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;現(xiàn)在兩個時間LED上顯示R1 JNB P3.4,INC0;P3.4為+1S鍵,如按下跳到INC0 JNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DEC0 JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACK0 AJMP INT0SUBINC0:MOV A,R1 CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起 MOV R1,#00H ACALL DELAY1 AJMP INT0SUBADD0:INC R1 ACALL DE

14、LAY1 AJMP INT0SUBDEC0:MOV A,R1 JZ SETR1;如果R1為0,R1就置99 DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1:MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0:RETI;=INT1(回答時間R2調(diào)整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT1SUB INC1:MO

15、V A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUBADD1:INC R2 ACALL DELAY1 AJMP INT1SUBDEC1:MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2:MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1:RETI4.4 搶答處理程序的設(shè)計當(dāng)有選手第一個按下?lián)尨鹌靼磁r數(shù)碼管顯示選手號碼,開始倒計時,并鎖定搶答。當(dāng)在此選手之后再有選手按下按扭時無效,數(shù)碼管不變。REPEAT:MOV A,R2;使用錦

16、囊時重新計時 MOV R6,A CLR RINGCOUNT:MOV R0,#00H;重置定時器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H;重置定時器RECOUNT:MOV A,R6;R6保存了倒計時間,之前應(yīng)先將搶答或答題時間給R6 MOV B,#0AH DIV AB;除十分出個位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;個位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取個位 MOV A,R6 SUBB A,#07H JNC LARGER;大于5s調(diào)到LARGER,小于等于5s會提醒 MOV A,R0 CJNE A,#0AH

17、,FULL;1s中0.5s向下運(yùn)行 CLR RING AJMP CHECKFULL:CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并請R0,重新計數(shù) SETB RING MOV A,R6 JZ QUIT;計時完畢 MOV R0,#00H DEC R6;一秒標(biāo)志減1 AJMP CHECKLARGER:MOV A,R0 CJNE A,#14H,CHECK;如果1s向下運(yùn)行,否則跳到查“停/顯示” DEC R6;計時一秒R6自動減1 MOV R0,#00HCHECK:JNB P3.1,QUIT;如按下停止鍵退出 JNB OK,CHECKK;只在回答倒計時才有效 AJMP NEXT

18、TCHECKK:JNB P3.0,REPEAT;判斷是否使用錦囊NEXTT:ACALL DISPLAY JB OK,ACOUNT;如果是搶答倒計時,如是則查詢搶答,否則跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用) AJMP RECOUNTACOUNT:MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP RECOUNTTZ1:JMP TRUE7TZ2:JMP TRUE8QUIT:

19、CLR OK;如果按下了“停止”執(zhí)行的程序 CLR RING AJMP START;=正常搶答處理程序=TRUE1:ACALL BARK MOV A,R2 MOV R6,A;搶答時間R2送R6 MOV R3,#01H CLR OK;因?yàn)榇痤}的計時不在查詢搶答,所以就鎖了搶答 AJMP COUNTTRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK MOV A,R

20、2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT;=犯規(guī)

21、搶答程序=ERROR:MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯規(guī)號數(shù)暫存與(34H)HERE:MOV A,R0 CJNE A,#06H,FLASH;0.3s向下運(yùn)行->滅并停響 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三燈全滅 AJMP CHECK1FLASH:CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計 SETB RING MOV R0,#00H MOV R3,34H;取回號數(shù) MOV R5,#0BH MOV R4,#0BH;顯示F

22、F和號數(shù) AJMP CHECK1CHECK1:JNB P3.1,QUIT ACALL DISPLAY AJMP HEREQUIT1:CLR RING CLR OK AJMP START五 實(shí)驗(yàn)結(jié)果5.1 非法搶答圖5.1如圖5.1所示,1號非法搶答,被鎖定,數(shù)碼管顯示1號號碼,并且一亮一暗的跳動,并伴有警告聲。5.2 搶答或回答時間時間修改 如下圖5.2所示,程序運(yùn)行后點(diǎn)擊“搶答時間調(diào)整”或“回答時間調(diào)整”,數(shù)碼管顯示初始倒計時時間30s,然后點(diǎn)擊“加1”或者“減1”按鈕,可根據(jù)自己需求調(diào)整搶答或回答時間。圖5.25.3 正常倒計時 圖5.3如圖5.3所示,調(diào)整搶答時間為26s后,先按停止鍵,

23、使數(shù)碼管顯示初始狀態(tài),接著按下“確定”鍵,這是會有蜂鳴聲出現(xiàn)。搶答倒計時從26s開始,在26s內(nèi)需要開始搶答,在最后5秒的時候,會發(fā)出警報聲。若在26s內(nèi)無人搶答,則如圖5.4所示,回到初始狀態(tài)。 圖5.45.4 回答時間若有人搶答,在搶答鍵按下時,也會有蜂鳴聲。則在數(shù)碼管的第一位顯示搶答者的號碼,而且最后兩位顯示答題時間倒計時,如圖5.5 圖5.5此時,搶答區(qū)按鍵被鎖,無人可以搶答?;卮饡r間完結(jié)后,又出現(xiàn)如圖5.4的現(xiàn)象。5.5 復(fù)位 按下復(fù)位鍵后,程序恢復(fù)初始狀態(tài)。六 程序的優(yōu)缺點(diǎn)優(yōu)點(diǎn): 此程序,較為簡單明了,電路連接也不復(fù)雜,元器件使用也少,在硬件方面節(jié)省了材料。缺點(diǎn):此程序較過簡潔,若

24、有時間可以更加拓展一下,而且,動態(tài)掃描的顯示方式需占用CPU較多的時間,適用于單片機(jī)沒有太多實(shí)時測控的任務(wù)場合。七 收獲和體會通過此次課程設(shè)計,更加加深了對于單片機(jī)的了解,包括功能,芯片實(shí)現(xiàn)方式、結(jié)構(gòu),有哪些特殊規(guī)定。而且也明白了,雖然單片機(jī)的匯編語言雖然與微機(jī)很相似,但是也不盡相同,比如,微機(jī)中有比較代碼CMP,而單片機(jī)中沒有,又如尋址方式中,立即尋址方式,微機(jī)中如:MOV A,10H 而在單片機(jī)中為:MOV A,#10H。也知道了,復(fù)位電路,晶振電路的模樣,且對CPU的89C51芯片有了更為深入的理解。也明白了,根據(jù)情況的不同,數(shù)碼管可分為共陰極和共陽極,不同情況編寫段代碼也是不同的。還有

25、一點(diǎn)就是,我知道了將C語言如何導(dǎo)入到單片機(jī)中,雖然此次實(shí)驗(yàn),我并沒有用到,但是在設(shè)計之初也有過嘗試。步驟如下:1. 下載KEIL軟件,然后再下載VDM51.dll插件,使得keil C51文件夾中Bin文件夾中出現(xiàn)此文件,然后再粘貼到PROTEUS文件夾下的MODELS文件夾下。2. 然后打開keil軟件,project->new project,建立工程在PROTEUS所產(chǎn)生的DSN文件的同一個文件夾下,然后選擇自己在PROTEUS中所選用的芯片3. 新建->保存為.C格式。右擊如圖所示中的SOURCE GROUP,選ADD FILES TO GROUPsource group

26、, ,然后打開所設(shè)立的C文件,編輯后,用PROJECT->BUILD進(jìn)行調(diào)制。然后打開project->option,點(diǎn)擊target,改變晶振大小,然后點(diǎn)擊output,選中Create HEX file 4. 然后點(diǎn)擊中的第一第二個圖標(biāo),生成.hex文件。5. 然后雙擊proteus中的芯片,從中導(dǎo)入。八 創(chuàng)新部分在搶答還未開始的時候,若是搶答鍵按下,則鎖定,并有蜂鳴聲 還可以對搶答時間或者回答時間進(jìn)行調(diào)整。 按下復(fù)位鍵后,所有的都恢復(fù)到初始狀態(tài)九 參考文獻(xiàn)1. 89C51引腳圖及功能 窩中【狼】 2. 89C51廣州周立功單片機(jī)發(fā)展有限公司(從CSDN上下載下來)3. led

27、數(shù)碼管介紹4. 微機(jī)原理與接口技術(shù) 劉永華,王成端 ;清華大學(xué)出版社; 2006年出版 5. 微機(jī)原理及應(yīng)用課程設(shè)計指導(dǎo)書 陳秋妹,黃靜 ;浙江理工大學(xué)信息電子學(xué)院 2009年12月6. 單片機(jī)原理及應(yīng)用 李全利,仲偉峰,許軍;清華大學(xué)出版社;2006年2月第一版附錄一附錄二OK EQU 20HRING EQU 22HORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN:MOV R1,#30;初設(shè)搶答時間為30s MOV R2

28、,#60;初設(shè)答題時間為60s MOV TMOD,#11H;設(shè)置定時器工作于方式1 MOV TH0,#0FH MOV TL0,#0B1H;越高發(fā)聲頻率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms為一次溢出中斷 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1;允許4個中斷,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0;一開始就運(yùn)行定時器,以開始顯示FFF,若要重新計數(shù),重置TH1/TL1就行;=查詢程序=START:MOV R5,#0BH MOV R4,#0BH MOV R

29、3,#0BH ACALL DISPLAY;未開始搶答時候顯示FFF JB P3.0,NEXT ACALL DELAY JB P3.0,NEXT;去抖動,如果“開始”按下就向下執(zhí)行,否則跳到非法搶答查詢 ACALL BARK;按鍵發(fā)聲 MOV A,R1 MOV R6,A;送R1->R6,因?yàn)镽1中保存了搶答時間 SETB OK;搶答標(biāo)志位,勇于COUNT程序中半段是否查詢搶答 MOV R7,#01H;讀搶答鍵數(shù)據(jù)信號標(biāo)志,這里表示只讀一次有用信號 MOV R3,#0AH;搶答只顯示計時,滅號數(shù) AJMP COUNT;進(jìn)入倒計時程序,“查詢有效搶答的程序”在COUNT里面NEXT:JNB P

30、1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,FALSE7 JNB P1.7,FALSE8 AJMP START;=非法搶答處理程序=FALSE1:MOV R3,#01H AJMP ERRORFALSE2:MOV R3,#02H AJMP ERRORFALSE3:MOV R3,#03H AJMP ERRORFALSE4:MOV R3,#04H AJMP ERRORFALSE5:MOV R3,#05H AJMP ERRORFALSE6:MOV

31、R3,#06H AJMP ERRORFALSE7:MOV R3,#07H AJMP ERRORFALSE8:MOV R3,#08H AJMP ERROR;=INT0(搶答時間R1調(diào)整程序)=INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;現(xiàn)在兩個時間LED上顯示R1 JNB P3.4,INC0;P3.4為+1S鍵,如按下跳到INC0 JNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DEC0 JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACK0 AJMP INT

32、0SUBINC0:MOV A,R1 CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起 MOV R1,#00H ACALL DELAY1 AJMP INT0SUBADD0:INC R1 ACALL DELAY1 AJMP INT0SUBDEC0:MOV A,R1 JZ SETR1;如果R1為0,R1就置99 DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1:MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0:RETI;=INT1(回答時間R2調(diào)整程序)=INT1SUB:MOV A,R2 MOV

33、 B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT1SUB INC1:MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUBADD1:INC R2 ACALL DELAY1 AJMP INT1SUBDEC1:MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2:MOV R2,#63H ACALL D

34、ELAY1 AJMP INT1SUBBACK1:RETI;=倒計時程序(搶答倒計時和回答倒計時都調(diào)到該程序)=REPEAT:MOV A,R2;使用錦囊時重新計時 MOV R6,A CLR RINGCOUNT:MOV R0,#00H;重置定時器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H;重置定時器RECOUNT:MOV A,R6;R6保存了倒計時間,之前應(yīng)先將搶答或答題時間給R6 MOV B,#0AH DIV AB;除十分出個位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;個位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取個位 M

35、OV A,R6 SUBB A,#07H JNC LARGER;大于5s調(diào)到LARGER,小于等于5s會提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下運(yùn)行 CLR RING AJMP CHECKFULL:CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并請R0,重新計數(shù) SETB RING MOV A,R6 JZ QUIT;計時完畢 MOV R0,#00H DEC R6;一秒標(biāo)志減1 AJMP CHECKLARGER:MOV A,R0 CJNE A,#14H,CHECK;如果1s向下運(yùn)行,否則跳到查“停/顯示” DEC R6;計時一秒R6自動減1

36、MOV R0,#00HCHECK:JNB P3.1,QUIT;如按下停止鍵退出 JNB OK,CHECKK;只在回答倒計時才有效 AJMP NEXTTCHECKK:JNB P3.0,REPEAT;判斷是否使用錦囊NEXTT:ACALL DISPLAY JB OK,ACOUNT;如果是搶答倒計時,如是則查詢搶答,否則跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用) AJMP RECOUNTACOUNT:MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRU

37、E6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP RECOUNTTZ1:JMP TRUE7TZ2:JMP TRUE8QUIT:CLR OK;如果按下了“停止”執(zhí)行的程序 CLR RING AJMP START;=正常搶答處理程序=TRUE1:ACALL BARK MOV A,R2 MOV R6,A;搶答時間R2送R6 MOV R3,#01H CLR OK;因?yàn)榇痤}的計時不在查詢搶答,所以就鎖了搶答 AJMP COUNTTRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BA

38、RK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP

39、 COUNTTRUE8:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT;=犯規(guī)搶答程序=ERROR:MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯規(guī)號數(shù)暫存與(34H)HERE:MOV A,R0 CJNE A,#06H,FLASH;0.3s向下運(yùn)行->滅并停響 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三燈全滅 AJMP CHECK1FLASH:CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計 SETB RING MOV R0,#00H MOV R3,34H;取回號數(shù) MOV R5,#0BH MOV R4,#0BH;顯示FF和號數(shù) AJMP

溫馨提示

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

最新文檔

評論

0/150

提交評論