2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。由RAM ,ROM,CPU構(gòu)成,定時,計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動化上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)計(jì)通過對它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。</p><p>

2、;  本設(shè)計(jì)是通過單片機(jī)設(shè)計(jì)一個多功能電子表,要求不僅具有電子時鐘的功能還具有鬧鈴、設(shè)定鬧鈴時間、整點(diǎn)報(bào)時、生日提醒功能,而且能夠預(yù)置生日時間</p><p>  關(guān)鍵字:單片機(jī);多功能電子表;跑表;數(shù)碼管顯示。</p><p><b>  ABSTRACT</b></p><p>  Single chip computer is the s

3、ingle chip computer. By RAM, ROM, CPU constitute, time, count and multiple interface in the integration of micro controller. Its small size, low cost, the function is strong, widely used in intelligent industry and indus

4、trial automation. And 51 series microcontroller is the most typical and various microcontroller most representative one. This curriculum design through to its study, application, thus achieved the study, design, developm

5、ent, soft and hard ability. </p><p>  This is designed by SCM design a multi-functional electronic watch, requirement not only has the function of electronic clock still has alarm, set alarm time, integral p

6、oint to announce, birthday reminds function, and can preset birthday time </p><p>  Key word: SCM, Multi-function digital watches, PaoBiao; Digital pipe display. </p><p><b>  目 錄</b&g

7、t;</p><p><b>  摘 要0</b></p><p>  ABSTRACT0</p><p><b>  目 錄1</b></p><p><b>  引言2</b></p><p>  1、 AT89S52單片機(jī)介紹3&l

8、t;/p><p>  2、設(shè)計(jì)功能及說明6</p><p>  3、整體設(shè)計(jì)方案8</p><p>  4、單模塊流程設(shè)計(jì)及程序設(shè)計(jì)8</p><p>  4.1初始化模塊8</p><p>  4.2 開關(guān)檢測模塊9</p><p>  4.3顯示主程序9</p><

9、;p>  4.4鬧鈴及整點(diǎn)報(bào)時判斷程序(EIGHT)11</p><p>  4.5中斷(TO)計(jì)時程序11</p><p>  4.6中斷(T1)預(yù)置程序11</p><p>  4.7中斷(INT0)設(shè)定程序12</p><p>  5、單模塊軟件測試12</p><p>  5.1編碼中常用的程序

10、結(jié)構(gòu)說明12</p><p>  5.2 單模塊軟件測試中的問題及解決14</p><p>  6、軟件部分燒寫調(diào)試14</p><p><b>  5、總結(jié)16</b></p><p><b>  致謝17</b></p><p><b>  參考文獻(xiàn):

11、18</b></p><p><b>  附錄A19</b></p><p><b>  附錄B:19</b></p><p>  引言 </p><p>  1957年,Ventura發(fā)明了世界上第一

12、個電子表,從而奠定了電子表的基礎(chǔ),電子表開始迅速發(fā)展起來?,F(xiàn)代的電子表是基于單片機(jī)的一種計(jì)時工具,采用延時程序產(chǎn)生一定的時間中斷,用于一秒的定義,通過計(jì)數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時進(jìn)一,滿二十四小時小時清零。從而達(dá)到計(jì)時的功能,是人民日常生活不可缺少的工具。 </p><p>  現(xiàn)在高精度的計(jì)時工具大多數(shù)都使用了石英晶體

13、振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計(jì)時時,譯碼代替機(jī)械式傳動,用LED顯示器代替指針顯示進(jìn)而顯示時間,減小了計(jì)時誤差,這種表具有時、分、秒顯示時間的功能,還可以進(jìn)行時和分的校對,片選的靈活性好。</p><p>  1、 AT89S52單片機(jī)介紹

14、 </p><p>  AT89S52 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié) Flash,256 字節(jié) RAM,32 位 I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個 16 位定時器/計(jì)數(shù)器,一個 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至 0Hz 靜態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許 RAM、定時器/計(jì)數(shù)器、串口、中

15、斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。</p><p>  圖 1.1 單片機(jī)引腳圖</p><p>  VCC : 電源 GND: 地</p><p>  P0 口:P0 口是一個 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅(qū)動 8 個 TTL 邏輯電平。對 P0 端

16、口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0 具有內(nèi)部上拉電阻。在 flash 編程時,P0 口也用來接收指令字節(jié);在程序校驗(yàn)時,輸出指令字節(jié)。程序校時,需要外部上拉電阻。</p><p>  P1 口:P1 口是一個具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p1 輸出緩沖器能驅(qū)動 4 個TTL 邏輯電平。對 P1 端口寫“1”時,

17、內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0 和 P1.2 分別作定時器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(P1.0/T2)和時器/計(jì)數(shù)器 2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。</p><p>  表1.1 AT89S52 P1口第二功能表</p><p>  P2 口:P2 口是一個具有

18、內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 輸出緩沖器能驅(qū)動 4 個TTL 邏輯電平。對 P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVX @DPTR)時,P2 口送出高八位地址</p><p>  P3 口:P3 口是一個具有內(nèi)部上拉電阻的

19、8 位雙向 I/O 口,p2 輸出緩沖器能驅(qū)動 4 個TTL 邏輯電平。對 P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3 口亦作為 AT89S52 特殊功能(第二功能)使用,如下表所示。</p><p>  表1.2 AT89S52 P3口第二功能表</p><p>  RST: 復(fù)位輸

20、入。晶振工作時,RST 腳持續(xù) 2 個機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計(jì)時完成后,RST 腳輸出 96 個晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能無效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效。</p><p>  ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低 8 位地址的輸出脈沖。在 flash 編程時,此引腳(PROG)也用作編

21、程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE 脈沖將會跳過。</p><p>  PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當(dāng) AT89S52 從外部程序存儲器執(zhí)行外部代碼時,PSEN 在每個機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN 將不被激活。</p>

22、<p>  EA/VPP:訪問外部程序存儲器控制信號。為使能從 0000H 到 FFFFH 的外部程序存儲器讀取指令,EA 必須接 GND。為了執(zhí)行內(nèi)部程序指令,EA 應(yīng)該接 VCC。在 flash 編程期間,EA 也接收 12 伏 VPP 電壓。</p><p>  XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。</p><p>  XTAL2:振蕩器反相放大器的輸

23、出端。</p><p><b>  2、設(shè)計(jì)功能及說明</b></p><p>  電子數(shù)字鐘實(shí)現(xiàn)的主要功能:</p><p>  ① 實(shí)現(xiàn)正常走時(秒→分→時→日→月→年進(jìn)位)</p><p> ?、?能夠預(yù)置時間和日期</p><p> ?、?能夠自動區(qū)分平閏年和大小月</p>

24、<p> ?、?具有鬧鈴及設(shè)定鬧鈴時間功能</p><p>  ⑤ 具有整點(diǎn)報(bào)時功能</p><p> ?、?具有生日提醒功能,能夠預(yù)置生日時間</p><p> ?、?在任何一種預(yù)置狀態(tài)下,預(yù)置項(xiàng)目會閃爍顯示</p><p><b>  其它設(shè)計(jì)說明:</b></p><p> ?、?

25、優(yōu)先級:預(yù)置>鬧鈴>報(bào)時>生日提醒>正常顯示,即預(yù)置狀態(tài)下鬧鈴、報(bào)時功能及生日提醒功能都無效</p><p> ?、?生日時間到五個數(shù)碼管顯示“HAPPY”</p><p> ?、?生日顯示狀態(tài)下,按下中斷INT0恢復(fù)正常顯示且此后只有在下更改生日日期或第二年生日顯示才有效。</p><p>  ④ 正常顯示狀態(tài)下按下中斷INT0進(jìn)入預(yù)置狀態(tài)

26、,再按一次恢復(fù)。</p><p> ?、?用數(shù)碼管(K0,K1)控制顯示狀態(tài):00:時間,01:鬧鈴時間,10:日期,11。</p><p>  生日時間且顯示樣板如下圖所示:</p><p>  生日:6 月1 日生日,最 鬧鈴:于早晨6 點(diǎn)10 分響,最后后兩位bd 為birthday 的縮寫 一位為一表示使

27、能有效。</p><p>  日期:08 年2 月29 日 時間:12 點(diǎn)39 分45 秒</p><p> ?、?預(yù)置由撥碼開關(guān)K2/K3/K4分別控制數(shù)碼管12/34/56顯示值,預(yù)置優(yōu)先級:</p><p>  LED34>LED12>LED56(相應(yīng)數(shù)碼管顯示的項(xiàng)目,顯示狀態(tài)下才能預(yù)置)</p>

28、;<p> ?、?整點(diǎn)報(bào)時聲音為59分51、53、55、57秒的后半秒報(bào)四聲低音, 59秒的后半秒報(bào)一聲高音</p><p> ?、?鬧鈴每次響一分鐘</p><p>  ⑨ 不論是預(yù)置狀態(tài)還是正常走時狀態(tài)均能夠自動區(qū)分平閏年和大小月</p><p> ?、?鬧鈴使能由撥碼開關(guān)K5控制并實(shí)時顯示</p><p><b>

29、;  3、整體設(shè)計(jì)方案</b></p><p>  系統(tǒng)硬件電路根據(jù)系統(tǒng)功能可知,需要六個數(shù)碼管,一個外部中斷INT0,一個揚(yáng)聲器,由此結(jié)合單片機(jī)課程學(xué)習(xí)中對實(shí)驗(yàn)面板的了解,做出如下電路:</p><p>  圖 3.1系統(tǒng)硬件電路圖</p><p>  如圖,晶振頻率12MHz,撥碼開關(guān)數(shù)值由P0口讀入;P2口的輸出作為控制數(shù)碼管的段控信號,經(jīng)74LS

30、573即8位數(shù)據(jù)鎖存器接到數(shù)碼管中。數(shù)碼管采用共陰接法(圖中未標(biāo)示);P1.0-P1.5作為數(shù)碼管的位控信號出端;開關(guān)W2經(jīng)一個基本RS鎖存器接入INT0,每按一次開關(guān)INTO取反次,按兩次輸入一個下降沿;揚(yáng)聲器由P1.6口控制。</p><p>  4、單模塊流程設(shè)計(jì)及程序設(shè)計(jì)</p><p>  在完成了系統(tǒng)總流程設(shè)計(jì)后,便進(jìn)入到了系統(tǒng)設(shè)計(jì)中工作量最大的模塊流程設(shè)計(jì)。由于系統(tǒng)模塊劃分雖

31、然是系統(tǒng)設(shè)計(jì)的基礎(chǔ),但比較簡單而且模塊劃分有多種方法,因此單模塊的設(shè)計(jì)可以認(rèn)為是本程序中最關(guān)鍵的部分。單模塊設(shè)計(jì)的好壞與否決定了系統(tǒng)功能能否被穩(wěn)定地實(shí)現(xiàn)以及下一階段調(diào)試程序的難度。鑒于單模塊設(shè)計(jì)的重要性,我在設(shè)計(jì)中并不急于對模塊進(jìn)行編碼,而是反復(fù)論證模塊的可行性和流程圖,為下一階段的工作做好準(zhǔn)備,同時也能夠盡早發(fā)現(xiàn)系統(tǒng)模塊劃分的錯誤,加以解決。</p><p><b>  4.1初始化模塊</b&

32、gt;</p><p>  初始化模塊包含了各中斷的跳轉(zhuǎn)語句、存儲資源的分配、各存儲器和寄存器的賦值以及中斷及計(jì)時器的狀態(tài)設(shè)置。源程序中共使用了17字節(jié)的內(nèi)部數(shù)據(jù)存儲地址,其中包含3字節(jié)位尋址地址以便于進(jìn)行位判斷。</p><p>  三字節(jié)的位尋址地址分配如下:</p><p>  22H—秒的存儲地址,方便對整點(diǎn)報(bào)時條件進(jìn)行判斷</p><p

33、>  23H—月的存儲地址,方便對大小月平閏年進(jìn)行判斷</p><p>  另外一個位尋址字節(jié)00H地址拆開用做程序狀態(tài)標(biāo)志位</p><p>  00H(bit,BS)—生日標(biāo)志位,到生日那天為 1 使程序轉(zhuǎn)入生日顯示段</p><p>  01H(bit,SS)—預(yù)置標(biāo)志,以INT0控制其值,控制預(yù)置閃爍的實(shí)現(xiàn)</p><p>  

34、02H(bit,GS)—閃爍標(biāo)志,在預(yù)置標(biāo)志有效時控制閃爍項(xiàng)目的亮和滅兩狀態(tài)</p><p>  03H(bit,F(xiàn)C)—頻率控制,在整點(diǎn)報(bào)時時控制產(chǎn)生低音還是高音</p><p>  04H(bit,NB)—忽略生日標(biāo)志,控制預(yù)置及報(bào)時的優(yōu)先級高于生日顯示</p><p>  05H(bit)—控制生日信號的有效與否,其使用目的參見調(diào)試過程</p>

35、<p>  源程序中使用了兩個寄存器R1、R0,R1用于控制閃爍的間隔時間, R0用于顯示延時。在初始化模塊中設(shè)定了中斷的優(yōu)先級、定時計(jì)數(shù)器的工作模式、并打開了定時計(jì)數(shù)器TO開始計(jì)時其他資源分配項(xiàng)目參見源程序集合及注釋。初始化模塊指令很大一部分都是偽指令,方便了后面程序的編寫。</p><p>  4.2 開關(guān)檢測模塊</p><p>  開關(guān)檢測模塊主要執(zhí)行兩個任務(wù):</

36、p><p> ?、弊x取鬧鈴使能控制撥碼開關(guān)K5的值并賦予鬧鈴使能相應(yīng)值;</p><p> ?、沧x取顯示選擇開關(guān)(K0,K1)的值并將要顯示的項(xiàng)目值送入顯示緩存LED12、LED34、LED56當(dāng)k5為1時將A1H送入RE反之送入A1H,其中A為“—”的字型碼查表偏移量。當(dāng)顯示生日日期時,將生日Birthday的縮寫“bd”的字型碼送入顯示緩存 LED56。</

37、p><p>  圖 4.1開關(guān)檢測流程圖</p><p><b>  4.3顯示主程序</b></p><p>  顯示主程序是程序中最復(fù)雜的模塊,實(shí)現(xiàn)的功能也最多,占用了程序運(yùn)行過程當(dāng)中90%以上的執(zhí)行時間。流程圖中由判斷SS(預(yù)置信號)開始分成兩個分支,當(dāng)SS=1,即預(yù)置狀態(tài)下程序進(jìn)入預(yù)置閃爍部分。</p><p>  

38、圖 4.2 顯示主程序流程圖</p><p>  預(yù)置閃爍的優(yōu)先級是:LED34>LED12>LED56即同預(yù)置優(yōu)先級相同(參見調(diào)試部分的詳細(xì)說明)閃爍首先判斷是否對LED34進(jìn)行判斷閃爍,如果是則另外兩個顯示值直接顯示,否則判斷是否對LED12進(jìn)行閃爍,如果是則直接顯示LED56的值,只有當(dāng)前兩個顯示值都不閃爍的時候,才判斷是否對LED56進(jìn)行閃爍,這樣就確保了每次只有一個顯示值閃爍。預(yù)置通過GS

39、標(biāo)志位判斷預(yù)置的亮/滅,由R1控制每50輪顯示對GS取反一次。</p><p>  當(dāng)SS=0時進(jìn)入判斷鬧鈴/報(bào)時及正常顯示模塊,模塊EIGHT(參見其說明)對鬧鈴及報(bào)時條件進(jìn)行判斷,符合條件則對P1.6取反一次并使NB(忽略生日)有效,此時行對BS(生日標(biāo)志)的判斷,即使響鈴優(yōu)先級高于生日顯示(其實(shí)也可以對程序進(jìn)行修改使響鈴和生日顯示不發(fā)生沖突,修改方法參見程序優(yōu)化)。當(dāng)不響鈴并且生日標(biāo)志BS有效時顯示HAPP

40、Y其單列開來。本程序由生日標(biāo)志BS控制,當(dāng)?shù)竭_(dá)生日時間時,T0中斷程序會將BS置1使之有效在顯示主程序中通過判斷BS的置來控制是否執(zhí)行本模塊標(biāo)志BS有效時顯示HAPPY其單列開來。本程序由生日標(biāo)志BS控制,當(dāng)?shù)竭_(dá)生日時間時,T0中斷程序會將BS置1使之有效在顯示主程序中通過判斷BS的置來控制是否執(zhí)行本模塊</p><p>  4.4鬧鈴及整點(diǎn)報(bào)時判斷程序(EIGHT)</p><p>  

41、在顯示主程序中每隔一段時間調(diào)用一次本程序來實(shí)現(xiàn)鬧鈴及報(bào)時功能。符合鬧鈴條件時,每調(diào)用一次本程序?qū)1.6取反一次,調(diào)節(jié)調(diào)用的時間間隔便可以調(diào)節(jié)報(bào)時的輸出頻率。在主程序中設(shè)置每完成對一個數(shù)碼管的顯示變調(diào)用一次本程序,顯示一個數(shù)碼管的時間大約為1ms,因此響鈴頻率高音約為500Hz,低音約為250Hz。程序判斷鬧鈴使能RE后分成兩個分支,當(dāng)RE=A1時判斷鬧鈴條件是否滿足,滿足則對P1.6取反一次,否則跳轉(zhuǎn)判斷整點(diǎn)報(bào)時條件是否滿足。當(dāng)RE=

42、0時,直接怕暖整點(diǎn)報(bào)時條件是否滿足。判斷整點(diǎn)報(bào)時條件時當(dāng)當(dāng)前時間滿足:</p><p> ?。∕IN=59)∩(SECOND=59) ∩(COUNT>10)</p><p><b>  時報(bào)高音;當(dāng)滿足:</b></p><p>  (MIN=59)∩(SECOND=51/53/55/57) ∩(COUNT>10)</p>

43、;<p>  時報(bào)低音。利用位尋址區(qū)來存儲SECOND的方法,(SECOND>50)∩(SECOND.0=1)時便滿足報(bào)低音的秒條件。利用TO中斷次數(shù)存儲器COUNT的大小可以判斷是否到了后半秒(T0每50ms中斷一次,中斷20次到達(dá)一秒)。通過增加一個標(biāo)志位FC來時下對高低音的區(qū)分,高音不受FC的影響,低音只有當(dāng)FC=0的時候才對P1.6取反一次。并且每調(diào)用一次本程序便對FC取反一次,便達(dá)到每調(diào)用兩次取反一次P1.

44、6的效果。本程序的執(zhí)行時間小于40us,因此多次調(diào)用不過分影響執(zhí)行。</p><p>  4.5中斷(TO)計(jì)時程序</p><p>  中斷計(jì)時程序的流程比較簡單。程序除實(shí)現(xiàn)正常走時外還需要判斷是否到達(dá)生日時間置生日標(biāo)志位有效。程序的輸出均為BCD碼,方便了顯示程序?qū)Ω叩臀坏姆蛛x并查表顯示。程序比較復(fù)雜的地方在于對平閏年及大小月的判斷。把月MONTH存儲在位尋址區(qū),當(dāng)MONTH=02H時

45、判斷是否是平閏年,先將年由BCD碼轉(zhuǎn)化為二進(jìn)制碼,此時當(dāng)年的后兩位為全零的時候?yàn)殚c年(由于只顯示年的個位和十位,由2000年開始,00年、04年…為閏年,其共同特點(diǎn)就是二進(jìn)制后兩位為零),否則為平年。當(dāng)MONTH≠2時判斷是否為大小月,MOUTH<7時單月(即MONTH.0=1的月)為大月,否則為小月;當(dāng)MONTH>7時雙月為大月。</p><p>  4.6中斷(T1)預(yù)置程序</p>

46、<p>  T1通過中斷INT0控制開啟或關(guān)閉,每次定時50毫秒,存儲地址COUNTS計(jì)數(shù)15次執(zhí)行一次中斷程序。由開關(guān)(K0,K1)控制預(yù)置項(xiàng)目,通過開關(guān)K2/K3/K4來分別控制LED12/LED34/LED56的預(yù)置,當(dāng)兩個開關(guān)都是有效時,具有優(yōu)先級的區(qū)分,確保無論按幾個開關(guān)都最多只有一個項(xiàng)目被預(yù)置。判斷預(yù)置的優(yōu)先級順序是:</p><p>  LED34>LED12>LED56&l

47、t;/p><p>  這樣安排的原因是由于根據(jù)生活經(jīng)驗(yàn)LED34所對應(yīng)的4個項(xiàng)目(小時、鬧鈴分、月、生日日)被預(yù)置的可能性最大。在預(yù)置日期和生日是要注意對大小月及平閏年進(jìn)行判斷(判斷方法與中斷計(jì)時程序中說明的方法類似,但不需要考慮進(jìn)位)且月和日在溢出后應(yīng)置一而不是歸零。</p><p>  4.7中斷(INT0)設(shè)定程序</p><p>  中斷INT0設(shè)置是否進(jìn)行預(yù)置

48、以及對生日標(biāo)志的清除。且有如下設(shè)置順序:清除預(yù)置信號并關(guān)T1>清除生日標(biāo)志>設(shè)定預(yù)置信號并開T1。每按一次中斷都只執(zhí)行其中一個項(xiàng)目</p><p><b>  5、單模塊軟件測試</b></p><p>  5.1編碼中常用的程序結(jié)構(gòu)說明</p><p>  ① JNB SS,THREEB;</p><p>

49、  SJMP THREEA</p><p>  THREEB:LJMPTHREE11;</p><p>  THREEA:JNBP0.3,THREE1</p><p>  由于使用JNB等跳轉(zhuǎn)指令的時候,跳轉(zhuǎn)長度比較短,故需要跳轉(zhuǎn)到比較遠(yuǎn)的地方時需要用</p><p><b>  這個結(jié)構(gòu)。相當(dāng)于:</b></p&

50、gt;<p>  JNB SS,THREE11</p><p>  JNB P0.3,THREE1</p><p> ?、?THREE1:MOV A,LED34</p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,

51、A</b></p><p>  THREE13:SETB P1.3</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE13</p><p><b>  CLR P1.3</b></p><p>  MOV A,LED34&l

52、t;/p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE14:SETB P1.2</p>&l

53、t;p><b>  NOP</b></p><p>  DJNZ R0,THREE14</p><p><b>  CLR P1.2</b></p><p>  顯示主程序中常用的語句段,分離LED34中的高半位和低半位作為字形碼段控信號查表偏移量,通過R0延時,延時時間大約為每個數(shù)碼管1ms。</p>

54、<p> ?、?TEN6A:MOV A,MONTH</p><p>  CJNE A,#08H,TEN7A</p><p>  TEN7A:JC TEN9A</p><p>  判斷MONTH是否大于08H,由于CJNE指令不能對直接地址進(jìn)行比較只能通過A來判斷。</p><p> ?、躆OV A,YEAR</p>

55、<p><b>  ADD A,#01</b></p><p><b>  DA A</b></p><p>  MOV YEAR,A</p><p>  對T0及T1中斷程序中常用的對某項(xiàng)目進(jìn)行加一并進(jìn)行BCD碼調(diào)整的的程序段,由于“INC A”指令不影響標(biāo)志位,故不能和“DA A”指令結(jié)合使用。</p

56、><p>  5.2 單模塊軟件測試中的問題及解決</p><p>  由于此前花費(fèi)大量的經(jīng)歷在模塊的流程圖設(shè)計(jì)當(dāng)中,因此在模塊調(diào)試的過程中并沒有出現(xiàn)太多的問題。主要問題在于語法錯誤,比如前述程序結(jié)果說明中的①、④語句和一些輸入的誤。并且由于程序過于長,難以進(jìn)行完整的軟件調(diào)試,調(diào)試過程中發(fā)現(xiàn)的問題主要出現(xiàn)在燒寫調(diào)試過程中。</p><p>  6、軟件部分燒寫調(diào)試<

57、;/p><p>  我一共進(jìn)行了三次軟件部分燒寫調(diào)試,糾正了許多程序錯誤,主要修改部分如下:</p><p><b>  第一次調(diào)試:</b></p><p> ?、僦袛囝A(yù)置程序無法進(jìn)行正常的加一程序</p><p> ?、谟?jì)時進(jìn)位有誤,無法正常進(jìn)位</p><p><b> ?、廴掌跓o法正

58、常顯示</b></p><p> ?、荛W爍有錯誤,無法正常閃爍</p><p> ?、蒿@示的數(shù)字不穩(wěn)定,有許多干擾</p><p>  從第一次調(diào)試的結(jié)果上看,幾乎所有的功能都無法正常顯示。事實(shí)上,在第一次調(diào)試后對程序進(jìn)行檢查后發(fā)現(xiàn),造成這些問題的主要原因是程序有十幾處的輸入有誤,并不是程序流程上的問題。因此這里不做過多的敘述。</p>&

59、lt;p><b>  第二次調(diào)試:</b></p><p>  經(jīng)過第一次調(diào)試以后的修改,解決了第一次調(diào)試中出現(xiàn)的前四個問題,但第五個問題“顯示的數(shù)字不穩(wěn)定,有許多干擾”仍然無法發(fā)現(xiàn)問題的所在,在機(jī)房進(jìn)行了多次修改都不成功。經(jīng)過思考和對跟其他同學(xué)的顯示語句進(jìn)行比對,我判斷問題的原因可能是我在過去編程時養(yǎng)成的一個不好的習(xí)慣,我經(jīng)常使用的一個延時辦法,容易把干擾放大。對于數(shù)碼管的顯示及延時

60、我經(jīng)常使用以下語句:</p><p>  “AAA:MOV P1,#位控</p><p>  MOV P2,#段控</p><p>  DJNZ R0,AAA ”</p><p>  這個語句段比較簡單,不需要另外編寫一個延時程序,延時時間大約1.3ms,用在干擾語句比較少的地方很方便。但卻可能出現(xiàn)一個隱患,假如P1或者P2在賦值過程中會出現(xiàn)

61、干擾,那么對其重復(fù)的賦值便會放大干擾。并且由于常常只需要給其中一個數(shù)碼管賦值,而這個語句卻一次性給所有的數(shù)碼管賦位控信號,可能將單個數(shù)碼管段控信號中出現(xiàn)的干擾傳遞到其他管中。因此我對以上程序做了修改如下:</p><p>  MOV P2,#段控</p><p>  THREE13:SETB P1.3</p><p><b>  NOP</b>

62、</p><p>  DJNZ R0,THREE13</p><p><b>  CLR P1.3</b></p><p>  這樣便解決了以上提出的問題。實(shí)際上,通過調(diào)用延時程序的方法進(jìn)行延時同樣也不會出現(xiàn)以上問題,由此可見,在軟件設(shè)計(jì)中養(yǎng)成一個規(guī)范的設(shè)計(jì)習(xí)慣極為重要。在第二天調(diào)試的時候發(fā)現(xiàn)這個語句的確能夠避免干擾的出現(xiàn)。</p>

63、<p><b>  第三次調(diào)試:</b></p><p>  第三次調(diào)試基本解決了上述出現(xiàn)的問題,但又發(fā)現(xiàn)了兩個新問題:</p><p> ?、僭诔绦驁?zhí)行的過程中,一旦進(jìn)入生日顯示狀態(tài)便無法通過INT0跳出,除非日期走過一天。</p><p> ?、谠谕瑫r撥下兩個以上的預(yù)置開關(guān)時,預(yù)置和閃爍可能出現(xiàn)不同步的情況。比如預(yù)置時間時可能

64、出現(xiàn)小時在閃爍,但改變的確實(shí)分鐘的值。由于對程序的流程比較熟悉,產(chǎn)生這兩個問題原因很快就被我發(fā)現(xiàn)。第一個問題產(chǎn)生原因主要是雖然每次按下INT0都將清除生日標(biāo)志,但生日標(biāo)志的設(shè)定卻是每秒進(jìn)行一次,因此生日標(biāo)志被清除后馬上就又會出現(xiàn),所以無法跳出生日顯示。為了解決這個問題,我增加了一個標(biāo)志位05H(bit)來控制生日標(biāo)志的設(shè)定,只有在05H(bit)有效的情況下,生日顯示才有效,在按INT0清除生日表示的時候同時清除05H(bit),而05

65、H(bit)只有在重新預(yù)置生日時間以后或是過了新的一年才會有效,其設(shè)定不受外界控制。</p><p>  第二個問題產(chǎn)生的原因主要是比較簡單,預(yù)置時間時,判斷哪個項(xiàng)目閃爍的優(yōu)先級,和判斷哪個項(xiàng)目數(shù)值改變的優(yōu)先級不一致,由于是中斷程序和顯示主程序同時控制這個功能,因此這兩個優(yōu)先級必須一樣,否則當(dāng)同時按下兩個項(xiàng)目的預(yù)置開關(guān)的時候,中斷程序首先判斷一個開關(guān)有效,改變其對應(yīng)值,而顯示主程序卻首先判斷第二個開關(guān)有效,對第二

66、個開關(guān)的顯示值進(jìn)行閃爍。因此只要修改其優(yōu)先級一致即可解決這個問題。程序中設(shè)置的優(yōu)先級是K3>K2>K4。</p><p><b>  5、總結(jié)</b></p><p>  在汪普林老師耐心的指導(dǎo)下,我順利完成了這次單片機(jī)課程設(shè)計(jì)課題中的多功能電子表的設(shè)計(jì),通過這次的設(shè)計(jì)使我認(rèn)識到本人對單片機(jī)方面的知識知道的太少了,對于書本上的很多知識還不能靈活運(yùn)用,尤其是

67、對程序設(shè)計(jì)語句的理解和運(yùn)用,不能夠充分理解每個語句的具體含義,導(dǎo)致編程的程序過于復(fù)雜,使得需要的存儲空間增大。損耗了過多的內(nèi)存資源。</p><p>  本次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我所學(xué)到的知識運(yùn)用到我以后的工作中去。在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專業(yè)知識,而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,此次的多功能電子版表設(shè)計(jì)給我奠定了一個實(shí)踐基礎(chǔ),我會在以后的學(xué)

68、習(xí)、生活中磨練自己,使自己適應(yīng)于以后的競爭,同時在查找資料的過程中我也學(xué)到了許多新的知識,在和同學(xué)協(xié)作過程中增進(jìn)同學(xué)間的友誼,使我對團(tuán)隊(duì)精神的積極性和重要性有了更加充分的理解。</p><p><b>  致謝</b></p><p>  最后,感謝汪普林老師對我的細(xì)心的指導(dǎo),正是由于汪老師的細(xì)心的輔導(dǎo)和他提供給我們的參考資料,使得我的課程設(shè)計(jì)能夠順利的完成,同時感謝

69、所以在課程設(shè)計(jì)過程中給于我?guī)椭^的老師和同學(xué),非常感謝。</p><p><b>  參考文獻(xiàn):</b></p><p>  [1] 謝自美.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測試[M].武漢:華中理工大學(xué)出版社,1992.</p><p>  [2] 何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1993.</p

70、><p>  [3] 樓然笛.單片機(jī)開發(fā)[M].北京:人民郵電出版社,1994.[4] 付家才.單片機(jī)控制工程實(shí)踐技術(shù)[M].北京:化學(xué)工業(yè)出版社 2004.3.[5] 李光才.單片機(jī)課程設(shè)計(jì) 實(shí)例指導(dǎo)[M]. 北京:北京航空航天大學(xué)出版社 2004.[6] 朱定華.單片機(jī)原理及接口技術(shù)實(shí)驗(yàn)[M].北京:北方交通大學(xué)出版社2002.11.</p><p>  [7] 劉湘濤.江世明.單片

71、機(jī)原理與應(yīng)用[M]. 北京:電子工業(yè)出版社,2006.</p><p><b>  附錄A</b></p><p><b>  附錄B:</b></p><p>  ;*************************************************************ONE初始化</p>

72、<p><b>  ORG 0H</b></p><p><b>  SJMP ONE</b></p><p><b>  ORG 0003H</b></p><p>  LJMP ELEVEN</p><p><b>  ORG 000BH</b&

73、gt;</p><p><b>  LJMP NINE</b></p><p><b>  ORG 001BH</b></p><p><b>  LJMP TEN</b></p><p>  ONE:LED12 EQU 30H ;數(shù)碼管12顯示緩存</p>&l

74、t;p>  LED34 EQU 31H ;數(shù)碼管34顯示緩存</p><p>  LED56 EQU 32H ;數(shù)碼管56顯示緩存</p><p>  COUNT EQU 33H ;定時器T0(用來走時)計(jì)數(shù)值存儲器(計(jì)數(shù)中斷20次到1秒)</p><p>  COUNTS EQU 34H ;定時器T1(用來預(yù)置)計(jì)數(shù)值存儲器(計(jì)數(shù)中斷15次到預(yù)置值加1)&l

75、t;/p><p>  HOUR EQU 40H ;以下為時間,日期,鬧鈴時間,生日的存儲地址</p><p>  MIN EQU 41H</p><p>  SECOND EQU 22H</p><p>  YEAR EQU 50H</p><p>  MONTH EQU 23H</p><p> 

76、 DAY EQU 52H</p><p>  RH EQU 60H ;鬧鈴小時</p><p>  RM EQU 61H ;鬧鈴分</p><p>  RE EQU 62H ;鬧鈴使能</p><p>  BM EQU 71H ;生日-月份</p><p>  BD EQU 72H ;生日-天</p>&

77、lt;p>  MOV LED12,#0</p><p>  MOV LED34,#0</p><p>  MOV LED56,#0</p><p>  MOV COUNT,#0</p><p>  MOV COUNTS,#0</p><p>  MOV HOUR,#0</p><p>  

78、MOV MIN,#0</p><p>  MOV SECOND,#0</p><p>  MOV YEAR,#0</p><p>  MOV MONTH,#1</p><p>  MOV DAY,#1</p><p><b>  MOV RH,#0</b></p><p>

79、<b>  MOV RM,#0</b></p><p><b>  MOV RE,#0</b></p><p><b>  MOV BM,#6</b></p><p><b>  MOV BD,#1</b></p><p>  BS BIT 00H ;bi

80、rthday symbol生日標(biāo)志(到生日那天就為1)</p><p>  SS BIT 01H ;set symbol預(yù)置信號(按下中斷預(yù)置為1,便開始閃爍和預(yù)置)</p><p>  GS BIT 02H ;glisten symbol閃爍標(biāo)志</p><p>  FC BIT 03H ;frequency control頻率控制</p><

81、p>  NB BIT 04H ;neglect bitrhday symbol 忽略生日標(biāo)志</p><p><b>  CLR BS</b></p><p><b>  CLR SS</b></p><p><b>  CLR GS</b></p><p><b&

82、gt;  CLR FC</b></p><p><b>  CLR NB</b></p><p>  SETB 05H ;生日顯示有效標(biāo)志位</p><p>  MOV IP,#02H;中斷優(yōu)先級:T0>INT0>T1</p><p>  MOV TMOD,#11H</p><

83、p>  MOV IE,#8BH</p><p><b>  SETB IT0</b></p><p>  MOV TH0,#3CH ;50ms</p><p>  MOV TL0,#0B0H</p><p><b>  SETB TR0</b></p><p>  MO

84、V R1,#50 ;顯示延時用</p><p>  MOV R0,#0 ;顯示延時用</p><p>  ;************************************************************** TWO檢測開關(guān)號</p><p>  TWO:MOV P0,#0FFH</p><p>  JB P0.5,T

85、WO1</p><p>  MOV RE,#0A0H ;0A0表示鬧鈴無效,送0A0是為了方便將使能查表顯示,表中第A項(xiàng)為"-"</p><p><b>  SJMP TWO2</b></p><p>  TWO1:MOV RE,#0A1H</p><p>  TWO2:JB P0.0,TWO4<

86、;/p><p>  JB P0.1,TWO3</p><p>  MOV LED12,HOUR</p><p>  MOV LED34,MIN</p><p>  MOV LED56,SECOND</p><p>  SJMP THREE</p><p>  TWO3:MOV LED12,YEAR&

87、lt;/p><p>  MOV LED34,MONTH</p><p>  MOV LED56,DAY</p><p>  SJMP THREE</p><p>  TWO4:JB P0.1,TWO5</p><p>  MOV LED12,RH</p><p>  MOV LED34,RM<

88、/p><p>  MOV LED56,RE</p><p>  SJMP THREE</p><p>  TWO5:MOV LED12,BM</p><p>  MOV LED34,BD</p><p>  MOV LED56,#0BCH</p><p>  SJMP THREE</p>

89、<p>  ;************************************** THREE顯示主程序(同時包含了鬧鈴,預(yù)置閃爍,鬧鈴功能)</p><p>  THREE:MOV P1,#0</p><p>  MOV P0,#0FFH</p><p>  MOV DPTR,#TAB3</p><p>  JNB S

90、S,THREEB ;判斷預(yù)置信號是否有效,預(yù)置有效則轉(zhuǎn)入判斷閃爍顯示模塊,否則轉(zhuǎn)入正常顯示模</p><p><b>  塊</b></p><p>  SJMP THREEA</p><p>  THREEB:LJMP THREE11 ;THREE11是正常顯示并判斷整點(diǎn)報(bào)時及鬧鈴模塊</p><p>  THREEA

91、:JNB P0.3,THREE1 ;開始是判斷閃爍顯示,這句判斷是否預(yù)置分/月/生日的日/鬧鈴分</p><p>  JNB GS,THREE1 ;是否閃爍?</p><p>  LCALL TWELVE ;閃爍則調(diào)用延時不顯示LED34</p><p>  SJMP THREE4</p><p>  THREE1:MOV A,LED34&l

92、t;/p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE2:SETB P1.3</p><p><b>  NOP</b></p><p&

93、gt;  DJNZ R0,THREE2</p><p><b>  CLR P1.3</b></p><p>  MOV A,LED34</p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPT

94、R</p><p><b>  MOV P2,A</b></p><p>  THREE3:SETB P1.2</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE3</p><p><b>  CLR P1.2</b&g

95、t;</p><p>  JNB P0.2,THREE4 ;判斷是否預(yù)置小時/年/生日月/鬧鈴的小時</p><p>  JNB GS,THREE4 ;是否顯示小時/年/生日月/鬧鈴的小時</p><p>  LCALL TWELVE</p><p>  SJMP THREE7</p><p>  THREE4:MOV

96、 A,LED12</p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE5:SETB P1.1</p><p><b>  NOP</b></p&g

97、t;<p>  DJNZ R0,THREE5</p><p><b>  CLR P1.1</b></p><p>  MOV A,LED12</p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOV

98、C A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE6:SETB P1.0</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE6</p><p><b>  CLR P1

99、.0</b></p><p>  JB P0.0,THREE7 ;數(shù)碼管56只有在顯示日期的天時才有預(yù)置閃爍功能,其余三項(xiàng)都不需要判斷閃爍</p><p>  JNB P0.1,THREE7</p><p>  JB P0.3,THREE7</p><p>  JNB P0.4,THREE7</p><p>

100、;  JNB GS,THREE7</p><p>  LCALL TWELVE</p><p>  SJMP THREE10</p><p>  THREE7:MOV A,LED56</p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p>&l

101、t;b>  MOV P2,A</b></p><p>  THREE8:SETB P1.5</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE8</p><p><b>  CLR P1.5</b></p><p> 

102、 MOV A,LED56</p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE9:SETB P1.4&

103、lt;/p><p><b>  NOP</b></p><p>  DJNZ R0,THREE9</p><p><b>  CLR P1.4</b></p><p>  THREE10:DJNZ R1,TWOA</p><p><b>  SJMP TWOB</

104、b></p><p>  TWOA:LJMP TWO</p><p>  TWOB:MOV R1,#50 ;判斷閃爍一次是否完成</p><p>  CPL GS ;取反閃爍標(biāo)志,用于控制閃爍的亮和滅</p><p>  LJMP TWO ;一輪顯示完后再判斷開關(guān)號</p><p>  ;*******

105、*******************正常顯示</p><p>  THREE11:LCALL EIGHT ;判斷是否取反P1.6即輸出鬧鈴或整點(diǎn)報(bào)時,以下每次顯示都要調(diào)用一次</p><p>  JB NB,THREE12 ;如果是在整點(diǎn)報(bào)時狀態(tài)就不顯示生日提醒,報(bào)時過后顯示提醒</p><p>  JNB BS,THREE12</p><p&

106、gt;  SJMP SEVEN ;跳到生日提醒程序</p><p>  THREE12:CLR NB ;開始正常顯示時間及判斷鬧鈴輸出</p><p>  MOV A,LED34</p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b> 

107、 MOV P2,A</b></p><p>  THREE13:SETB P1.3</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE13</p><p><b>  CLR P1.3</b></p><p>  MOV A

108、,LED34</p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE14:SETB P1.2</p

109、><p><b>  NOP</b></p><p>  DJNZ R0,THREE14</p><p><b>  CLR P1.2</b></p><p>  LCALL EIGHT</p><p>  MOV A,LED12</p><p>  AN

110、L A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE15:SETB P1.1</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE15&l

111、t;/p><p><b>  CLR P1.1</b></p><p>  MOV A,LED12</p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p>

112、;<b>  MOV P2,A</b></p><p>  THREE16:SETB P1.0</p><p><b>  NOP</b></p><p>  DJNZ R0,THREE16</p><p><b>  CLR P1.0</b></p><p

113、>  LCALL EIGHT</p><p>  MOV A,LED56</p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE17:SETB P1.5</p>

114、;<p><b>  NOP</b></p><p>  DJNZ R0,THREE17</p><p><b>  CLR P1.5</b></p><p>  MOV A,LED56</p><p><b>  SWAP A</b></p>&l

115、t;p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P2,A</b></p><p>  THREE18:SETB P1.4</p><p><b>  NOP</b></p><p>  DJNZ R

116、0,THREE18</p><p><b>  CLR P1.4</b></p><p>  LJMP TWO ;一輪顯示完后判開關(guān)</p><p>  TAB3:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H 7FH,6FH,40H,7CH,5EH</p><p>  ;0.1.2.3.4.5.6

117、.7.8.9.-.b.d,的字形表"bd"在顯示生日時間時顯示在LED56</p><p>  ;**************************************************SEVEN生日時顯示生日祝福語”HAPPY”</p><p>  SEVEN:MOV P1,#01H</p><p>  MOV P2,#76H<

118、;/p><p>  DJNZ R0,SEVEN</p><p>  SEVEN1:MOV P1,#02H</p><p>  MOV P2,#77H</p><p>  DJNZ R0,SEVEN1</p><p>  SEVEN2:MOV P1,#04H</p><p>  MOV P2,#73H

119、</p><p>  DJNZ R0,SEVEN2</p><p>  SEVEN3:MOV P1,#08H</p><p>  MOV P2,#73H</p><p>  DJNZ R0,SEVEN3</p><p>  SEVEN4:MOV P1,#10H</p><p>  MOV P2,

120、#6EH</p><p>  DJNZ R0,SEVEN4</p><p><b>  LJMP TWO</b></p><p>  ;******************************************************************EIGHT判斷是否鬧鈴子程序</p><p>  EI

121、GHT:MOV A,RE</p><p>  CJNE A,#0A1H,EIGHT1</p><p><b>  MOV A,MIN</b></p><p>  CJNE A,RM,EIGHT1</p><p>  MOV A,HOUR</p><p>  CJNE A,RH,EIGHT1<

122、/p><p>  SJMP EIGHT4 ;鬧鈴時間到則CPLP1.6一次并忽略生日標(biāo)志(即NB有效)</p><p>  EIGHT1:MOV A,MIN</p><p>  CJNE A,#59H,EIGHT7</p><p>  MOV A,SECOND</p><p>  CJNE A,#59H,EIGHT5 ;是

123、否等于59分59秒</p><p>  EIGHT2:MOV A,COUNT ;是否到達(dá)后半秒</p><p>  CJNE A,#10,EIGHT3</p><p>  EIGHT3:JC EIGHT7</p><p>  EIGHT4:CPL P1.6</p><p><b>  SETB NB<

124、;/b></p><p>  SJMP EIGHT7</p><p>  EIGHT5:MOV A,SECOND</p><p>  CJNE A,#51H,EIGHT6 ;是否大于51秒</p><p>  EIGHT6:JC EIGHT7</p><p>  JNB 10H,EIGHT7 ;判斷是否報(bào)低音&l

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論