![基于AT89S51單片機(jī)的多路搶答器設(shè)計(jì)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/3/3eef4af4-a5b1-4924-acc8-c8e406b6368a/3eef4af4-a5b1-4924-acc8-c8e406b6368a1.gif)
![基于AT89S51單片機(jī)的多路搶答器設(shè)計(jì)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/3/3eef4af4-a5b1-4924-acc8-c8e406b6368a/3eef4af4-a5b1-4924-acc8-c8e406b6368a2.gif)
![基于AT89S51單片機(jī)的多路搶答器設(shè)計(jì)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/3/3eef4af4-a5b1-4924-acc8-c8e406b6368a/3eef4af4-a5b1-4924-acc8-c8e406b6368a3.gif)
![基于AT89S51單片機(jī)的多路搶答器設(shè)計(jì)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/3/3eef4af4-a5b1-4924-acc8-c8e406b6368a/3eef4af4-a5b1-4924-acc8-c8e406b6368a4.gif)
![基于AT89S51單片機(jī)的多路搶答器設(shè)計(jì)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/3/3eef4af4-a5b1-4924-acc8-c8e406b6368a/3eef4af4-a5b1-4924-acc8-c8e406b6368a5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 畢 業(yè) 設(shè) 計(jì)(論 文)題 目: 基于51單片機(jī)的搶答器設(shè)計(jì) 院 (系): 專 業(yè): 班 級(jí): 學(xué)生姓名: 導(dǎo)師姓名: 職稱: 目 錄第一章 搶答器的概述 1.1 系統(tǒng)設(shè)計(jì)的功能 1.2 搶答器需求分析 1.3 搶答器的工作原理第二章 單片機(jī)的功能簡(jiǎn)介 2.1 89系列單片機(jī)的概述 2.2 at89s51的功能 2.2.1 ta89s51特殊功能寄存器 2.2.2 at89s51單片機(jī)的內(nèi)部結(jié)構(gòu)第三節(jié) 硬件電路的設(shè)計(jì)3.1 總電路原理3.2 時(shí)鐘頻率電路的設(shè)計(jì)3.3 復(fù)位電路的設(shè)計(jì)3.3.1 復(fù)位電路的可靠性設(shè)計(jì)3.3.2 人工復(fù)位3.4 顯示電路的設(shè)計(jì)3.5 控制電路的實(shí)現(xiàn)3.6 發(fā)聲3.
2、7 系統(tǒng)復(fù)位第四章 軟件設(shè)計(jì)4.1 軟件任務(wù)分析4.2 顯示子程序的設(shè)計(jì)4.3 定時(shí)器t0、t1中斷服務(wù)程序的設(shè)計(jì)4.4 搶答器處理程序的設(shè)計(jì)4.5 主程序及分析第五章 元器件及焊接調(diào)試第六章 設(shè)計(jì)小結(jié)致謝參考文獻(xiàn)摘 要隨著科學(xué)技術(shù)的發(fā)展和普及,各種各樣的競(jìng)賽越來(lái)越多,其中搶答器的作用也就顯而易見(jiàn)。目前很多搶答器基本上采用小規(guī)模數(shù)字集成電路設(shè)計(jì),使用起來(lái)不夠理想。因此設(shè)計(jì)一更易于使用和區(qū)分度高的搶答器成了非常迫切的任務(wù)?,F(xiàn)在單片機(jī)已進(jìn)入各個(gè)領(lǐng)域,以其功耗小、智能化而著稱,所以若利用單片機(jī)來(lái)設(shè)計(jì)搶答器,便使以上問(wèn)題得以解決.針對(duì)以上情況,本文設(shè)計(jì)出以at89s51單片機(jī)為核心的八路搶答器。我們采
3、用了數(shù)字顯示器直接指示,自動(dòng)鎖存顯示結(jié)果,并自動(dòng)復(fù)位的設(shè)計(jì)思想,它能根據(jù)不同的搶答輸入信號(hào),經(jīng)過(guò)單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號(hào)相對(duì)應(yīng)的輸出信號(hào),最后通過(guò)led數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組的搶答時(shí)間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,它充分利用了單片機(jī)系統(tǒng)的優(yōu)點(diǎn),具有結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大、可靠性好、實(shí)用性強(qiáng)的特點(diǎn)。本設(shè)計(jì)是以八路搶答為基本理念??紤]到依需設(shè)定限時(shí)回答的功能,利用89s51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來(lái),使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開(kāi)關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。
4、同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開(kāi)始后搶答才有效,如果在開(kāi)始搶答前搶答為無(wú)效;滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無(wú)效非法。 第一章 搶答器的概述1.1 系統(tǒng)設(shè)計(jì)的功能1.基本功能:(1) 同時(shí)供8名選手比賽,分別用8個(gè)按鈕s0 s7表示。(2)設(shè)置一個(gè)系統(tǒng)清除和搶答控制開(kāi)關(guān)s,該開(kāi)關(guān)由主持人控制。(3)搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),揚(yáng)聲器發(fā)出聲響提示,并在七段數(shù)碼管上顯示選手號(hào)碼。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。2.擴(kuò)展功能:(1)搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)
5、。當(dāng)主持人啟動(dòng)開(kāi)始鍵后,定時(shí)器進(jìn)行減計(jì)時(shí)。(2)參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。在這段(3)如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。1.2 搶答器的需求分析1、在搶答中,只有開(kāi)始后搶答才有效,如果在開(kāi)始搶答前搶答為無(wú)效。2、搶答限定時(shí)間和回答問(wèn)題的時(shí)間可是在199s設(shè)定。3、可以顯示是哪位選手有效搶答和無(wú)效搶答,正確按鍵后有音樂(lè)提示。4、搶答時(shí)間和回答問(wèn)題時(shí)間倒記時(shí)顯示,時(shí)間完后系統(tǒng)自動(dòng)復(fù)位。5、按鍵鎖定,在有效狀態(tài)下,按鍵無(wú)效非法。1.3 搶答的工作過(guò)程圖2
6、-4搶答器電路表2-1 74ls148的功能真值表1、如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按加一鍵或減一鍵進(jìn)入調(diào)節(jié)狀態(tài),此時(shí)會(huì)顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,如想加一秒按一下加1s鍵,如果想減一秒按一下減1s鍵,時(shí)間led上會(huì)顯示改變后的時(shí)間,調(diào)整范圍為099s, 0s時(shí)再減1s會(huì)跳到99,99s時(shí)再加1s會(huì)變到0s。2、主持人按搶答開(kāi)始鍵,會(huì)有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)20s搶答時(shí)間),如有選手搶答,會(huì)有提示音,并會(huì)顯示其號(hào)數(shù)并立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè)20s搶答時(shí)間),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。3、如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按停止按鍵,系統(tǒng)會(huì)自動(dòng)進(jìn)入
7、準(zhǔn)備狀態(tài),等待主持人按搶答開(kāi)始進(jìn)入下次搶答計(jì)時(shí)。4、如果主持人未按搶答開(kāi)始鍵,而有人按了搶答按鍵,犯規(guī)搶答,led上不顯示任何結(jié)果,直到按下停止 鍵為止。1.4 搶答器的工作原理及流程搶答器的基本工作原理:在搶答競(jìng)賽或呼叫時(shí)2,有多個(gè)信號(hào)同時(shí)或不同時(shí)送入主電路中,搶答器內(nèi)部的寄存器工作,并識(shí)別、記錄第一個(gè)號(hào)碼,同時(shí)內(nèi)部的定時(shí)器開(kāi)始工作,記錄有關(guān)時(shí)間并產(chǎn)生超時(shí)信號(hào)。在整個(gè)搶答器工作過(guò)程中,顯示電路、語(yǔ)音電路等還要根據(jù)現(xiàn)場(chǎng)的實(shí)際情況向外電路輸出相應(yīng)信號(hào)。搶答器的工作流程分為、系統(tǒng)復(fù)位、正常流程、違例流程等幾部分,如圖2-2所示,下面分別予以介紹。第二章 單片機(jī)的功能簡(jiǎn)介2.1 89系列單片機(jī)的概況
8、mcs-51 單片機(jī)是美國(guó)inte 公司于1980 年推出的產(chǎn)品,典型產(chǎn)品有 80 31(內(nèi)部沒(méi)有程序存儲(chǔ)器,實(shí)際使用方面已經(jīng)被市場(chǎng)淘汰)、8051(芯片采用hmos,功耗是630mw,是89c51 的5 倍,實(shí)際使用方面已經(jīng)被市場(chǎng)淘汰)和8751 等通用產(chǎn)品,一直到現(xiàn)在, mcs-5 1 內(nèi)核系列兼容的單片機(jī)仍是應(yīng)用的主流產(chǎn)品(比如目前流行的89s51、已經(jīng)停產(chǎn)的89c51 等),各高校及專業(yè)學(xué)校的培訓(xùn)教材仍與mcs-51 單片機(jī)作為代表進(jìn)行理論基礎(chǔ)學(xué)習(xí)。有些文獻(xiàn)甚至也將8051 泛指mcs-51 系列單片機(jī),8051 是早期的最典型的代表作,由于mcs-51 單片機(jī)影響極深遠(yuǎn),許多公司都推
9、出了兼容系列單片機(jī),就是說(shuō)mcs-51 內(nèi)核實(shí)際上已經(jīng)成為一個(gè)8 位單片機(jī)的標(biāo)準(zhǔn)。其他的公司的51 單片機(jī)產(chǎn)品都是和mcs-51 內(nèi)核兼容的產(chǎn)品而以。同樣的一段程序,在各個(gè)單片機(jī)廠家的硬件上運(yùn)行的結(jié)果都是一樣的,如atmel 的89c51(已經(jīng)停產(chǎn))、89s51, philips(菲利浦),和winbond(華邦)等,我們常說(shuō)的已經(jīng)停產(chǎn)的89c51 指的是atmel公司的 at 89c51 單片機(jī),同時(shí)是在原基礎(chǔ)上增強(qiáng)了許多特性,如時(shí)鐘,更優(yōu)秀的是由flash(程序存儲(chǔ)器的內(nèi)容至少可以改寫 1000 次)存儲(chǔ)器取帶了原來(lái)的 rom(一次性寫入),at89c51 的性能相對(duì)于8051 已經(jīng)算是非
10、常優(yōu)越的了。不過(guò)在市場(chǎng)化方面,89c51 受到了pic 單片機(jī)陣營(yíng)的挑戰(zhàn),89c51 最致命的缺陷在于不支持isp(在線更新程序)功能,必須加上isp 功能等新功能才能更好延續(xù)mcs-51 的傳奇。89s51就是在這樣的背景下取代89c51 的,現(xiàn)在,89s51 目前已經(jīng)成為了實(shí)際應(yīng)用市場(chǎng)上新的寵兒,作為市場(chǎng)占有率第一的atmel 目前公司已經(jīng)停產(chǎn)at89c51,將用at89s51 代替。89s51 在工藝上進(jìn)行了改進(jìn),89s51 采用 0.35 新工藝,成本降低,而且將功能提升,增加了競(jìng)爭(zhēng)力。89sxx 可以像下兼容89cxx 等51 系列芯片。市場(chǎng)上見(jiàn)到的89c51 實(shí)際都是atmel 前
11、期生產(chǎn)的巨量庫(kù)存而以。如果市場(chǎng)需要,atmel當(dāng)然也可以再恢復(fù)生產(chǎn)at89c51。 at89s51/ls51單片機(jī)是低功耗的、具有4kb在線課編程flash存儲(chǔ)器的單片機(jī)。它與通用80c51系列單片機(jī)的指令系統(tǒng)和引腳兼容。片內(nèi)的flash可允許在線重新編程,也可使用非易失性存儲(chǔ)器編程。他將通用cpu和在線可編程flash集成在一個(gè)芯片上,形成了功能強(qiáng)大、使用靈活和具有較高性能性價(jià)比的微控制器。2.2 at89s51的功能 2.2.1 at89s51特殊功能寄存器特殊功能寄存器也稱專用寄存器,是具有特殊功能的所有寄存器的集合,簡(jiǎn)稱sfr(special function register)。特殊
12、功能寄存器共含有22個(gè)不同寄存器。它們的地址分配在80hffh中,即在ram地址中。這些寄存器的名稱和地址見(jiàn)表2-2。表2-1器件選型方案的詳細(xì)清單器件名稱 規(guī)格型號(hào) 數(shù)量微處理器 at89s51 1電阻 3wtt10k 8電容 30pf 3晶振 12mhz 1按鈕 - 11反相器 - 37段數(shù)碼管 7seg-mpx4cc 4 揚(yáng)聲器 - 1 雖然特殊功能寄存器地址在80hffh之中,但在80hffh的地址單元中,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的,如果對(duì)這些單元進(jìn)行操作,得到的是一些隨機(jī)數(shù),而寫入則無(wú)效。所以,用戶編程時(shí)不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元
13、,它們是公司留待將來(lái)開(kāi)發(fā)新產(chǎn)品時(shí)使用的表2-2 at89s51特殊功能寄存器列表符號(hào)地址注釋*acce0h累加器*bf0h乘法寄存器*pswd0h程序狀態(tài)字sp81h堆棧指針dpl82h數(shù)據(jù)存儲(chǔ)器指針低8位dph83h數(shù)據(jù)存儲(chǔ)器指針高8位*iea8h中斷允許控制器*ipd8h中斷優(yōu)先控制器*p080h端口0*p190h端口1*p2a0h端口2*p3b0h端口3pcon87h電源控制及波特率選擇*scon98h串行口控制器sbuf99h串行數(shù)據(jù)緩沖器*tcon88h定時(shí)器控制tmod89h定時(shí)器方式選擇tl08ah定時(shí)器0低8位tl18bh定時(shí)器1低8位th08ch定時(shí)器0低8位th18dh定時(shí)
14、器1高8位注:帶*號(hào)的特殊功能寄存器都是可以位尋址的寄存器2.2.2 at89s51單片機(jī)的內(nèi)部結(jié)構(gòu)at89s51單片機(jī)內(nèi)部由cpu、4kb的fperom ,128b的ram,兩個(gè)16位的定時(shí)/計(jì)數(shù)器t0和t1,4個(gè)8位的i/o端p0、p1、p2、p3等組成。單片微機(jī)內(nèi)部最核心的部分是cpu。cpu主要功能是產(chǎn)生各種控制信號(hào),控制存儲(chǔ)器、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算以及位操作處理等,cpu按其功能可分為運(yùn)算器和控制器兩部分。控制器由程序計(jì)數(shù)器pc、指令儲(chǔ)存器、指令譯碼器、實(shí)時(shí)控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對(duì)來(lái)自存儲(chǔ)器中的指令進(jìn)行譯碼,通過(guò)實(shí)時(shí)控制電路,在規(guī)定的時(shí)
15、刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號(hào),使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運(yùn)算器由算術(shù)邏輯器部件alu、累加器acc、暫存器、程序狀態(tài)字寄存器psw,bcd碼運(yùn)算調(diào)整電路等組成。外部定時(shí)元件復(fù)位中斷電源系統(tǒng)時(shí)鐘romcpu定時(shí)/計(jì)數(shù)器串行i/o口并行i/o口ram圖2-3 at89s51單片機(jī)的內(nèi)部結(jié)構(gòu)圖為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個(gè)通用寄存器b和一些專用寄存器,還增加了位處理邏輯電路的功能3。其內(nèi)部結(jié)構(gòu)如圖2-3所示。 第三章 硬件電路的設(shè)計(jì)3.1 總電路原理為使硬件電路設(shè)計(jì)盡可能合理,應(yīng)注意以下幾方面:(1) 盡可能采用功能強(qiáng)的芯片,以簡(jiǎn)化電路,功能強(qiáng)的芯片可以代替若
16、干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價(jià)格不斷下降,并不一定比若干普通芯片價(jià)格的總和高。(2) 留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路時(shí),要考慮到將來(lái)修改擴(kuò)展的方便。因?yàn)楹苌儆幸诲N定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來(lái)可能要為一點(diǎn)小小的修改或擴(kuò)展而被迫進(jìn)行全面返工。(3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計(jì)采用at89c51單片機(jī)。(4) ram空間,at89s51內(nèi)部ram不多,當(dāng)要增強(qiáng)軟件數(shù)據(jù)處理功能時(shí),往往覺(jué)得不足。如果系統(tǒng)配置了外部ram,則建議多留一些空間。如選用8155作i/o接口,就可以增強(qiáng)256字節(jié)ram.如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的ram,如6264,62
17、256等。隨著軟件設(shè)計(jì)水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級(jí)換代。只要在硬件電路設(shè)計(jì)初期考慮到這一點(diǎn),就應(yīng)該為系統(tǒng)將來(lái)升級(jí)留足夠的ram空間,哪怕多設(shè)計(jì)一個(gè)ram的插座,暫不插芯片也好。(5) i/o端口:在樣機(jī)研制出來(lái)后進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問(wèn)題,而這些問(wèn)題不是靠單純的軟件措施來(lái)解決的。如有些新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計(jì)就預(yù)留出一些i/o端口,雖然當(dāng)時(shí)空著沒(méi)用,那么用的時(shí)候就派上用場(chǎng)了。p2.4為開(kāi)始搶答9,p2.5為加分,p2.6
18、為減分,p1.0-p1.7為六八搶答輸入,數(shù)碼管段選p0口,位選p2口低3位,蜂鳴器輸出為p2.7口。 3.2 時(shí)鐘頻率電路的設(shè)計(jì)時(shí)鐘電路是計(jì)算機(jī)的心臟,它控制著計(jì)算機(jī)的工作節(jié)奏。mcs-51單片機(jī)允許的時(shí)鐘頻率是因型號(hào)而異的。晶振的選擇:6mhz的晶振,其機(jī)器周期是2us。12mhz的晶振,其機(jī)器周期是1us, 也就是說(shuō)在執(zhí)行同一條指令時(shí)用6mhz的晶振所用的時(shí)間是12mhz晶振的兩倍。為了提高整個(gè)系統(tǒng)的性能我選擇了12mhz的晶振。振蕩方式的選擇:內(nèi)部振蕩方式,mcs-51內(nèi)部都有一個(gè)反相放大器,xtal1、xtal2分別為反相放大器輸入和輸出端,外接定時(shí)反饋元件以后就組成振蕩器,產(chǎn)生時(shí)鐘
19、送至單片機(jī)內(nèi)部的各個(gè)部件。這樣就構(gòu)成了內(nèi)部振蕩方式外部振蕩方式是把已有的時(shí)鐘信號(hào)引入單片機(jī)內(nèi)。這種方式適合用來(lái)使單片機(jī)的時(shí)鐘與外部信號(hào)一致。在我的這個(gè)設(shè)計(jì)中沒(méi)有也無(wú)需與外部時(shí)鐘信號(hào)一致,所以我選擇了內(nèi)部振蕩方式,由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。晶振我選擇了12mhz,相對(duì)于6mhz的晶振,整個(gè)系統(tǒng)的運(yùn)行速度更快了。電容器c1、c2起穩(wěn)定振蕩頻率、快速起振的作用,電容值我選擇了30pf。內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)穩(wěn)定性高。 圖3-2時(shí)鐘電路的設(shè)計(jì)單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生
20、一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在xtal2引腳產(chǎn)生幅度為3v左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 c1,c2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。c1,c2的典型值為30pf。單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為12mhz,即fosc=12mhz,則時(shí)鐘周期為1/12s。3.3 復(fù)位電路的設(shè)計(jì)3.3.1 復(fù)位電路的可靠性
21、設(shè)計(jì)計(jì)算機(jī)在啟動(dòng)運(yùn)行是都需要復(fù)位,使中央處理器cpu和系統(tǒng)中的其它部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。mcs-51的復(fù)位輸入引腳rst為mcs-51提供了初始化的手段,可以使程序從指定處開(kāi)始執(zhí)行,在mcs-51的時(shí)鐘電路工作后,只要rst引腳上出現(xiàn)超過(guò)兩個(gè)機(jī)器周期以上的高電平時(shí),即可產(chǎn)生復(fù)位的操作。只要 rst保持高電平,則mcs-51循環(huán)復(fù)位。只有當(dāng)rst由高電平變低電平以后,mcs-51才從0000h地址開(kāi)始執(zhí)行程序。本系統(tǒng)采用按鍵復(fù)位方式的復(fù)位電路。mcs-51單片機(jī)有一個(gè)復(fù)位引腳rst,它是施密特觸發(fā)輸入,當(dāng)振蕩器起振后,該引腳上出現(xiàn)2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘周期)以上
22、的高電平。使器件復(fù)位,只要rst保持高電平,mcs-51保持復(fù)位狀態(tài)。此時(shí)ale、/psen、p0、p1、p2、p3口都輸出高電平。rst變?yōu)榈碗娖胶?,退出?fù)位,cpu從初始狀態(tài)開(kāi)始工作。復(fù)位以后內(nèi)部寄存器的初始狀態(tài)為(sp=07,p0、p1、p2、p3為0ffh外,其它寄存器都為0。在rst復(fù)位端接一個(gè)電容至vcche 一個(gè)電阻至vss,就能實(shí)現(xiàn)上電自動(dòng)復(fù)位,對(duì)于cmos單片機(jī)只要接一個(gè)電容至vcc即可。如圖,在加電瞬間,電容通過(guò)電阻充電,就在rst端出現(xiàn)一定時(shí)間的高電平,只要高電平時(shí)間足夠長(zhǎng),就可以使mcs-51有效地復(fù)位。rst端在加電時(shí)應(yīng)保持的高電平時(shí)間包括vcc的上升時(shí)間和振蕩器起振
23、時(shí)間,vcc上升時(shí)間若為10ms,振蕩器起振時(shí)間和頻率有關(guān)。10mhz時(shí)間約為1ms,1mhz時(shí)約為10ms,所以一般為了可靠地復(fù)位,rst在上電時(shí)應(yīng)保持20ms以上的高電平。圖2.5中,rc時(shí)間常數(shù)越大,上電時(shí)rst端保持高電平的時(shí)間越長(zhǎng)。當(dāng)振蕩頻率為12mhz時(shí),典型值為c=10uf,r=8.2k. 圖3-3上電復(fù)位電路3.3.2人工復(fù)位除上電自動(dòng)復(fù)位以外,常常需要人工復(fù)位,將一個(gè)按鈕開(kāi)關(guān)并聯(lián)于上電自動(dòng)復(fù)位電路,按一下開(kāi)關(guān)就rst端出現(xiàn)一段時(shí)間的高電平,即使器件復(fù)位。如圖所示圖3-4上電和開(kāi)關(guān)復(fù)位而我們?cè)谶@次的畢業(yè)設(shè)計(jì)中運(yùn)用的人工復(fù)位電路. 其中電平復(fù)位是通過(guò)rst端經(jīng)電阻和電源vcc接通
24、而實(shí)現(xiàn)的,按鍵手動(dòng)電平復(fù)位電路如圖。當(dāng)時(shí)鐘頻率選用12mhz時(shí),c選取10uf,r選擇1000歐。3.4 顯示電路的設(shè)計(jì)顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來(lái)解決。3.4.1 顯示模塊在系統(tǒng)硬件中的安排操作者主要設(shè)計(jì)從顯示設(shè)備上獲取微機(jī)系統(tǒng)的信息的,因此,操作者每操作一下,顯示設(shè)備商都應(yīng)該有一定的反應(yīng)。這說(shuō)明,顯示模塊與操作有關(guān),即監(jiān)控程序是需要調(diào)用顯示模塊。不同的操作需要顯示不同的內(nèi)容,這又說(shuō)明各執(zhí)行模塊對(duì)顯示模塊的驅(qū)動(dòng)方式是不同的。另一方面,在操作者沒(méi)有進(jìn)行操作時(shí),顯示內(nèi)容也是變化的,如顯示現(xiàn)場(chǎng)各物理量的變化情況。這時(shí)顯示模塊不
25、是由操作者通過(guò)命令鍵來(lái)驅(qū)動(dòng),而是由各類自動(dòng)執(zhí)行的功能模塊來(lái)驅(qū)動(dòng)。自動(dòng)執(zhí)行的各類模塊在安排在各種中斷子程序中,這就是說(shuō),各種中斷子程序也要調(diào)用顯示模塊。如果監(jiān)控安排在中斷子程序中,兩者的要求就統(tǒng)一了,問(wèn)題比較好解決,如果監(jiān)控程序安排在主程序中,在監(jiān)控程序調(diào)用顯示模塊的過(guò)程中發(fā)生了中斷,中斷子程序也調(diào)用顯示模塊,這時(shí)就容易出問(wèn)題。一種比較妥善的辦法是只讓一處調(diào)用顯示模塊,其他各處均不得直接調(diào)用顯示模塊,但有權(quán)申請(qǐng)顯示。這就要設(shè)置一個(gè)顯示申請(qǐng)標(biāo)志,當(dāng)某模塊需要顯示時(shí),將申請(qǐng)標(biāo)志置位,同時(shí)設(shè)定有關(guān)顯示內(nèi)容(或指針)。由于一處調(diào)用顯示模塊,故不會(huì)發(fā)生沖突。為了使顯示模塊能及時(shí)反應(yīng)系統(tǒng)需要,應(yīng)將顯示模塊安
26、排在一個(gè)重復(fù)執(zhí)行的循環(huán)(如監(jiān)控循環(huán)或時(shí)鐘中斷子程序)中。當(dāng)監(jiān)控程序(鍵盤解釋程序)安排在時(shí)鐘中斷子程序中時(shí),處理比較方便,只要在監(jiān)控程序的匯合處調(diào)用顯示模塊就可以了。這里將顯示功能集中到一起,作為一個(gè)功能模塊,就要求它的功能全面,能根據(jù)系統(tǒng)軟件提供的信息自動(dòng)完成顯示內(nèi)容的查找,變換和輸出驅(qū)動(dòng)。這樣設(shè)計(jì)使得各功能模塊都不必考慮顯示問(wèn)題,只要給出一個(gè)簡(jiǎn)單的信息(如顯示格式編碼)甚至不用再提供額外信息,直接利用當(dāng)前狀態(tài)變量和軟件標(biāo)志就可以完成所需的顯示要求。如果編寫這樣一個(gè)集中顯示模塊有困難,也可以將顯示模塊編小一些,只完成顯示緩沖區(qū)的內(nèi)容輸出到顯示器件上的工作。這時(shí)各功能模塊在提出顯示申請(qǐng)時(shí),還需
27、要將顯示內(nèi)容按需要的格式送入顯示緩沖區(qū)中。這樣分而治之比較容易編程,但要小心出現(xiàn)顯示混亂。例如后臺(tái)程序需要調(diào)用顯示,將有關(guān)信息送入到現(xiàn)實(shí)緩沖區(qū)進(jìn)行顯示;中斷返回后,后臺(tái)程序繼續(xù)送完后半部分顯示內(nèi)容,但前半部分內(nèi)容已經(jīng)變了,這樣就出現(xiàn)了顯示錯(cuò)誤。解決的辦法是,在申請(qǐng)顯示前,先檢查是否已經(jīng)有顯示申請(qǐng),如果有,就不再申請(qǐng),等待下次機(jī)會(huì);如果沒(méi)有,則先申請(qǐng)標(biāo)志位,再將顯示內(nèi)容送入顯示緩沖區(qū)。這時(shí)就不必?fù)?dān)心其他前臺(tái)模塊來(lái)打擾了,就可以得到一次完整的顯示機(jī)會(huì)。在這里我們使用的是七段數(shù)碼管顯示,通常在顯示6上我們采用的方法一般包括兩種:一種是靜態(tài)顯示,一種是動(dòng)態(tài)顯示。其中靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,程序
28、編寫簡(jiǎn)單,但占用端口資源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒(méi)靜態(tài)好,程序編寫復(fù)雜,但是相對(duì)靜態(tài)顯示而言占用端口資源少。在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法。并通過(guò)查表法,將其在數(shù)碼管上顯示出來(lái),其中p0口為字型碼輸入端,p2口低3位為字選段輸入端。在這里我們通過(guò)查表將字型碼送給7段數(shù)碼管顯示的數(shù)字,數(shù)碼管顯示原理如下: mov a,r5 movc a,a+dptr ;查字型碼 mov p2,#01h ;送位選碼 mov p0,a ;送字型碼acall delay ;調(diào)延時(shí),去閃爍在七段數(shù)碼管顯示中可分為共陽(yáng)極和共陰極兩種類型極。以共陰為例,要想a段亮,向a段送1就是,返之送0,共陽(yáng)剛好相反。
29、3.5 掃描電路的實(shí)現(xiàn)鍵盤是人與微機(jī)系統(tǒng)打交道的主要設(shè)備。關(guān)于鍵盤硬件電路的設(shè)計(jì)方法也可以在文獻(xiàn)和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程序。站在系統(tǒng)監(jiān)控軟件設(shè)計(jì)的立場(chǎng)上來(lái)看,僅僅完成鍵盤掃描,讀取當(dāng)前時(shí)刻的鍵盤狀態(tài)是不夠的,還有不少問(wèn)題需要妥善解決,否則,人們?cè)诓僮麈I盤就容易引起誤操作和操作失控現(xiàn)象。在單片機(jī)應(yīng)用中鍵盤用得最多的形式是獨(dú)立鍵盤及矩陣鍵盤。 它們各有自己的特點(diǎn),其中獨(dú)立鍵盤硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤與獨(dú)立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨(dú)立鍵盤復(fù)雜得多,而且在程序算法上比它要煩
30、瑣,但它在節(jié)省端口資源上有優(yōu)勢(shì)得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過(guò)程中產(chǎn)生的“毛刺” 現(xiàn)象。這里采用最常用的方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無(wú)效。3.5.1 按鈕輸入的硬件處理按鈕的觸點(diǎn)在閉合和斷開(kāi)時(shí)均會(huì)產(chǎn)生抖動(dòng),這是觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不妥善處理,將會(huì)引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行。現(xiàn)在一般均用軟件延時(shí)的方法來(lái)避開(kāi)抖動(dòng)階段,這一延時(shí)過(guò)程一般大于5ms,例如取1
31、0-20ms。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺(tái)程序)或鍵盤中斷(外部中斷)子程序中,則該延時(shí)子程序便可直接插入讀鍵過(guò)程中。如果讀鍵過(guò)程安排在定時(shí)中斷子程序中,就可省去專門的延時(shí)子程序,利用兩次定時(shí)中斷的時(shí)間間隔來(lái)完成抖動(dòng)處理。3.6 發(fā)聲我們知道,聲音的頻譜范圍約在幾十到幾千赫茲7,若能利用程序來(lái)控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。3.7 系統(tǒng)復(fù)位使cpu進(jìn)入初始狀態(tài),從0000h地址開(kāi)始執(zhí)行程序的過(guò)程叫系統(tǒng)復(fù)
32、位。從實(shí)現(xiàn)系統(tǒng)復(fù)位的方法來(lái)看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過(guò)cpu外部的硬件電路給cpu的reset端加上足夠時(shí)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對(duì)片內(nèi)通用寄存器的內(nèi)容沒(méi)有影響。但是,硬件復(fù)位還能自動(dòng)清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個(gè)事實(shí)卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來(lái)模擬硬件復(fù)位功能,最后通過(guò)轉(zhuǎn)移指令使程序從0000h地址開(kāi)始執(zhí)行。對(duì)各專用寄存器的復(fù)位操作是容易的,也沒(méi)有必要完全模擬,可根據(jù)實(shí)際需要去主程序初始化過(guò)程中完成。而對(duì)中斷激活標(biāo)志的清除工作常被
33、遺忘,因?yàn)樗鼪](méi)有明確的位地址可供編程。有的編程人員用020000(ljmp 0000h)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000h地址就完成了軟件復(fù)位,就是這類錯(cuò)誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進(jìn)行的工作,這時(shí)程序出錯(cuò)完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級(jí)中斷響應(yīng)。由于軟件看門是高級(jí)中斷,它將阻止說(shuō)要中斷響應(yīng),由此可見(jiàn)清除中斷激活標(biāo)志的重要性。在所有的指令中,只有reti指令能夠清除中斷激活標(biāo)志。前文各處提案到的出錯(cuò)處理程序err主要完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。有復(fù)位時(shí)系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動(dòng)”和“熱啟動(dòng)”。 “冷啟動(dòng)
34、”時(shí),系統(tǒng)的狀態(tài)全部無(wú)效,進(jìn)行徹底的初始化操作;而“熱啟動(dòng)”時(shí),對(duì)系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”。復(fù)位關(guān)中斷,設(shè)定堆棧上電標(biāo)志冷啟自檢全面初始化熱啟動(dòng)恢復(fù)被破壞的信息部分初始化建立上電標(biāo)志開(kāi)始運(yùn)轉(zhuǎn)為了使系統(tǒng)能正確決定采用何種啟動(dòng)方式,常用上電標(biāo)志來(lái)區(qū)分,如圖3-6所示。圖3-6 系統(tǒng)復(fù)位策略圖第四章 軟件設(shè)計(jì)4.1 軟件任務(wù)分析軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電
35、路設(shè)計(jì)基本定型后,也就基本上決定下來(lái)了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來(lái)看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量,計(jì)算,顯示,打印8,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。 4.2 顯示子程序的設(shè)計(jì)顯示子程序,及部分注解如下:display:mov dptr,#dat1;查表顯示程序,利用p0口做段選碼口輸出/p2低三位做位選碼輸出,mov a,r3movc a,a+dptrmov p2
36、,#0fehmov p0,aacall delaymov dptr,#dat2mov a,r5movc a,a+dptrmov p2,#0fdhmov p0,aacall delaymov a,r4movc a,a+dptrmov p2,#0fbhmov p0,aacall delayretdat1: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,71h第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻?/p>
37、為零顯示熄滅4.3 定時(shí)器t0、t1中斷服務(wù)程序的設(shè)計(jì)=to溢出中斷(響鈴程序)=t0int: mov th0,#0echmov tl0,#0ffhjnb ring,out;cpl p3.6;ring標(biāo)志位為1時(shí)候p3.6口不斷取反使喇叭發(fā)出一定頻率的聲音out: retit1溢出中斷(計(jì)時(shí)程序):t1int: mov th1,#3chmov tl1,#0b0hinc r0retiend4.4 搶答器處理程序的設(shè)計(jì)搶答器處理程序:true1: acall bark;按鍵發(fā)聲mov a,r2mov r6,a;搶答時(shí)間r2送r6mov r3,#01hclr ok;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就
38、鎖了搶答ajmp counttrue2:acall bark;mov a,r2mov r6,amov r3,#02hclr okajmp counttrue3:acall bark;mov a,r2mov r6,amov r3,#03hclr okajmp counttrue4:acall bark;mov a,r2mov r6,amov r3,#04hclr okajmp counttrue5: acall bark;mov a,r2mov r6,amov r3,#05hclr okajmp counttrue6: acall bark;mov a,r2mov r6,amov r3,#06h
39、clr okajmp counttrue7: acall bark;mov a,r2mov r6,amov r3,#07hclr okajmp counttrue8: acall bark;mov a,r2mov r6,amov r3,#08hclr okajmp count4.5 程序及分析單片機(jī)控制8路搶答器程序ok equ 20h;搶答開(kāi)始標(biāo)志位ring equ 22h;響鈴標(biāo)志位org 0000hajmp mainorg 0003hajmp int0suborg 000bhajmp t0intorg 0013hajmp int1suborg 001bhajmp t1intorg 004
40、0hmain: mov r1,#30;初設(shè)搶答時(shí)間為30s mov r2,#60;初設(shè)答題時(shí)間為60s mov tmod,#11h;設(shè)置未定時(shí)器/模式1 mov th0,#0f0h mov tl0,#0ffh;越高發(fā)聲頻率越高,越尖 mov th1,#3ch mov tl1,#0b0h;50ms為一次溢出中斷 setb ea setb et0 setb et1setb ex0setb ex1;允許四個(gè)中斷,t0/t1/int0/int1 clr okclr ring setb tr1 setb tr0;一開(kāi)始就運(yùn)行定時(shí)器,以開(kāi)始顯示fff.如果想重新計(jì)數(shù),重置th1/tl1就可以了;=查詢程序
41、=start: mov r5,#0bh mov r4,#0bh mov r3,#0bhacall display;未開(kāi)始搶答時(shí)候顯示fff jb p3.0,next;ddddddd acall delay jb p3.0,next;去抖動(dòng),如果開(kāi)始鍵按下就向下執(zhí)行,否者跳到非法搶答查詢 acall bark;按鍵發(fā)聲 mov a,r1 mov r6,a;送r1-r6,因?yàn)閞1中保存了搶答時(shí)間 setb ok;搶答標(biāo)志位,用于count只程序中判斷是否查詢搶答 mov r3,#0ah;搶答只顯示計(jì)時(shí),滅號(hào)數(shù) ajmp count;進(jìn)入倒計(jì)時(shí)程序,查詢有效搶答的程序在count里面next: jn
42、b p1.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,tz1 jnb p1.7,tz2 ajmp starttz1:jmp false7tz2:jmp false8;=非法搶答處理程序=false1: acall bark;按鍵發(fā)聲mov r3,#01h ajmp errorfalse2: acall barkmov r3,#02h ajmp errorfalse3: acall barkmov r3,#03h ajmp errorfalse4
43、: acall barkmov r3,#04h ajmp errorfalse5: acall barkmov r3,#05h ajmp errorfalse6: acall barkmov r3,#06h ajmp errorfalse7: acall barkmov r3,#07h ajmp errorfalse8: acall barkmov r3,#08h ajmp error;=int0(搶答時(shí)間r1調(diào)整程序)=int0sub:mov a,r1 mov b,#0ah div ab mov r5,a mov r4,b mov r3,#0ah acall display;先在兩個(gè)時(shí)間le
44、d上顯示r1 jnb p3.4,inc0;p3.4為+1s鍵,如按下跳到inco jnb p3.5,dec0;p3.5為-1s鍵,如按下跳到deco jnb p3.1,back0;p3.1為確定鍵,如按下跳到backo ajmp int0subinc0: mov a,r1cjne a,#63h,add0;如果不是99,r2加1,如果加到99,r1就置0,重新加起。 mov r1,#00h acall delay1ajmp int0subadd0: inc r1 acall delay1 ajmp int0subdec0: mov a,r1 jz setr1;如果r1為0, r1就置99, de
45、c r1 acall delay1 ajmp int0subsetr1: mov r1,#63h acall delay1 ajmp int0subback0: reti ;=int1(回答時(shí)間r2調(diào)整程序)=int1sub:mov a,r2 mov b,#0ah div abmov r5,a mov r4,b mov r3,#0ah acall display jnb p3.4,inc1 jnb p3.5,dec1 jnb p3.1,back1 ajmp int1subinc1: mov a,r2 cjne a,#63h,add1 mov r2,#00h acall delay1ajmp i
46、nt1subadd1: inc r2 acall delay1 ajmp int1subdec1: mov a,r2 jz setr2 dec r2 acall delay1 ajmp int1subsetr2: mov r2,#63h acall delay1 ajmp int1subback1: reti ;=倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)=count: mov r0,#00h;重置定時(shí)器中斷次數(shù) mov th1,#3ch mov tl1,#0b0h;重置定時(shí)器recount:mov a,r6;r6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給r6 mov b,#0ah
47、 div ab;除十分出個(gè)位/十位 mov 30h,a;十位存于(30h) mov 31h,b;個(gè)位存于(31h) mov r5,30h;取十位 mov r4,31h;取個(gè)位 mov a,r6 subb a,#07h jnc larger;大于5s跳到larger,小于等于5s會(huì)提醒 mov a,r0 cjne a,#0ah,full;1s中0.5s向下運(yùn)行 clr ring ajmp checkfull: cjne a,#14h,check;下面是1s的情況,響并顯示號(hào)數(shù)并清r0,重新計(jì) setb ring mov a,r6 jz quit;計(jì)時(shí)完畢 mov r0,#00h dec r6;一
48、秒標(biāo)志減1 ajmp checklarger: mov a,r0 cjne a,#14h,check;如果1s向下運(yùn)行,否者跳到查停/顯示 dec r6;計(jì)時(shí)一秒r6自動(dòng)減1 mov r0,#00hcheck: jnb p3.1,quit;如按下停止鍵退出 acall display jb ok,accout;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過(guò)查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用) ajmp recountaccout:jnb p1.0,true1 jnb p1.1,true2 jnb p1.2,true3 jnb p1.3,true4 jnb p1.4,true5 jnb p1.5,tr
49、ue6 jnb p1.6,tz3 jnb p1.7,tz4 ajmp recounttz3:jmp true7tz4:jmp true8 quit: clr ok;如果按下了停止鍵執(zhí)行的程序 clr ring ajmp start;=正常搶答處理程序=true1: acall bark;按鍵發(fā)聲 mov a,r2 mov r6,a;搶答時(shí)間r2送r6 mov r3,#01h clr ok;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答 ajmp counttrue2:acall bark; mov a,r2 mov r6,a mov r3,#02h clr ok ajmp counttrue3:acall bark; mov a
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2 臘八粥 說(shuō)課稿-2024-2025學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)下冊(cè)001
- 2024年五年級(jí)數(shù)學(xué)上冊(cè) 3 小數(shù)除法7課時(shí) 循環(huán)小數(shù)配套說(shuō)課稿 新人教版
- 2025工礦產(chǎn)品買賣合同
- 2025同村土地承包合同
- 2025學(xué)校食品供貨合同簡(jiǎn)單版樣本
- 2025版集體勞動(dòng)合同范文
- 2025加盟經(jīng)銷合同范文
- 6-2《插秧歌》說(shuō)課稿及反思 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 2023九年級(jí)數(shù)學(xué)上冊(cè) 第2章 一元二次方程2.2 一元二次方程的解法2.2.3 因式分解法第2課時(shí) 選擇合適的方法解一元二次方程說(shuō)課稿 (新版)湘教版
- 軟膜天花施工方案
- YY/T 0681.2-2010無(wú)菌醫(yī)療器械包裝試驗(yàn)方法第2部分:軟性屏障材料的密封強(qiáng)度
- GB/T 20472-2006硫鋁酸鹽水泥
- 彭大軍橋牌約定卡
- 煙氣管道阻力計(jì)算
- 城鄉(xiāng)環(huán)衛(wèi)一體化保潔服務(wù)迎接重大節(jié)日、活動(dòng)的保障措施
- 醫(yī)院-9S管理共88張課件
- 高考作文復(fù)習(xí):議論文論證方法課件15張
- MySQL數(shù)據(jù)庫(kù)項(xiàng)目式教程完整版課件全書電子教案教材課件(完整)
- 藥品生產(chǎn)質(zhì)量管理工程完整版課件
- 《網(wǎng)絡(luò)服務(wù)器搭建、配置與管理-Linux(RHEL8、CentOS8)(微課版)(第4版)》全冊(cè)電子教案
- 職業(yè)衛(wèi)生教學(xué)課件生物性有害因素所致職業(yè)性損害
評(píng)論
0/150
提交評(píng)論