【正文】
g and verification.Port PinAlternate FunctionsMOSI (used for InSystem Programming)MOSO (used for InSystem Programming) SCK(used for InSystem Programming)Port 2 is an 8bit bidirectional I/O port with internal pullups. The Port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current (IIL) because of the internal 2 emits the highorder address byte during fetches from external program memory and during accesses to external data memory that use 16bit addresses (MOVX DPTR). In this application, Port 2 uses strong internal pullups when emitting 1s. During accesses to external data memory that use 8bit addresses (MOVX RI), Port 2 emits the contents of the P2 Special Function Register. Port 2 also receives the highorder address bits and some control signals during Flash programming and verification.Port 3 is an 8bit bidirectional I/O port with internal pullups. The Port 3 output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (IIL) because of the pullups. Port 3 receives some control signals for Flash programming and verification. Port 3 also serves the functions of various special features of the AT89S51, as shown in the following table.Port PinAlternate FunctionsRXD(serial input port)TXD(serial output port)INT0(external interrupt 0)INT1(external interrupt 1)T0(timer 0 external input)T1(timer 1 external input)WR(external data memory write strobe)RD(external data memory read strobe) OrganizationMCS51 devices have a separate address space for Program and Data Memory. Up to 64K bytes each of external Program and Data Memory can be addressed. Program MemoryIf the EA pin is connected to GND, all program fetches are directed to external memory. On the AT89S51, if EA is connected to VCC, program fetches to addresses 0000H through FFFH are directed to internal memory and fetches to addresses 1000H through FFFFH are directed to external memory. Data MemoryThe AT89S51 implements 128 bytes of onchip RAM. The 128 bytes are accessible via direct and indirect addressing modes. Stack operations are examples of indirect addressing, so the 128 bytes of data RAM are available as stack space.The AT89S51 has a total of five interrupt vectors: two external interrupts (INT0 and INT1), two timer interrupts (Timers 0 and 1), and the serial port interrupt. These interrupts are all shown in Figure 61. Each of these interrupt sources can be individually enabled or disabled by setting or clearing a bit in Special Function Register IE. IE also contains a global disable bit, EA, which disables all interrupts at once.中文部分:AT89S51概述1. 一般概述 該AT89S51是一個低功耗,高性能CMOS 8位微控制器,可在4K字節(jié)的系統(tǒng)內(nèi)編程的閃存存儲器。在以后的學(xué)習(xí)生活中我將不忘老師的嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和工作精神,以老師為榜樣,認(rèn)真踏實地工作,不辜負(fù)老師的期望。另外,感謝在畢業(yè)設(shè)計過程中幫助我的同學(xué),感謝多年來傳授我知識的老師們,更要感謝那些對我學(xué)習(xí)上支持和鼓勵的人。此外,您嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和忘我的工作精神值得我去學(xué)習(xí)。在此首先感謝我的指導(dǎo)老師程欽老師在我大學(xué)的最后學(xué)習(xí)階段畢業(yè)設(shè)計階段給自己的指導(dǎo),從最初的定題,到資料收集,到寫作、修改,到論文定稿,您給了我耐心的指導(dǎo)和無私的幫助,使我對整個畢業(yè)設(shè)計的思路有了總體的把握,并耐心的幫我解決了許多實際問題,使我有了很大的收獲。鞏固了所學(xué)知識的同時也提高了自己的能力,對于日后的學(xué)習(xí)和工作都有很大的幫助。通過這次畢業(yè)設(shè)計,對我自身來說得到了很大的鍛煉,我在設(shè)計過程中熟練掌握51單片機的原理,了解搶答器組成原理,掌握了搶答器的調(diào)整與測試方法,提高了動手能力與排除故障的能力。第六章 總結(jié)本文介紹了一種基于單片機的搶答器的設(shè)計方法,論文從方案比較與論證開始,并從實際出發(fā)選出了一種最佳的設(shè)計方案,并清晰地掌握了這個設(shè)計方案詳細(xì)的電路設(shè)計和程序設(shè)計的原理和過程,最終完成了硬件的制作與調(diào)試,實現(xiàn)了設(shè)計要求。用戶系統(tǒng)調(diào)試完后,將用戶程序固化帶用戶系統(tǒng)的程序存儲器中,再借用仿真器CPU是用戶系統(tǒng)運行。在具體操作中用戶系統(tǒng)在開發(fā)系統(tǒng)環(huán)境的下,先借用仿真器的CPU,存儲器等資源進(jìn)行工作。系統(tǒng)聯(lián)調(diào)方法:①采用單步,斷電,連續(xù)運行方式調(diào)試與硬件相關(guān)的各程序段既可以檢驗這些用戶程序段的正確性,又可以在各功能獨立的情況下,檢驗軟、硬件的配合情況。 系統(tǒng)聯(lián)調(diào)系統(tǒng)聯(lián)調(diào)是指讓用戶系統(tǒng)的軟件在其硬件上實際運行,進(jìn)行軟、硬件聯(lián)合調(diào)試,從中發(fā)現(xiàn)硬件故障或軟,硬件設(shè)計錯誤。各個任務(wù)調(diào)試好以后,再使各個任務(wù)同時運行。 實時多任務(wù)操作系統(tǒng)的調(diào)試方法與上述方法相似,只是實時多任務(wù)操作系統(tǒng)的應(yīng)用程序是有若干個任務(wù)程序組成的們一般是逐個任務(wù)進(jìn)行調(diào)試。 單步運行只能驗證程序正確與否,而不能確定定時精度,CPU的使用響應(yīng)等問題,所以單步和斷點調(diào)試后,還應(yīng)進(jìn)行連續(xù)調(diào)試。在這一階段如果發(fā)生故障,可以分析子程序在運行時是否破壞現(xiàn)場,緩沖單元是否發(fā)生沖突,零位的建立和清除在設(shè)計上是否失誤,堆棧區(qū)域是否溢出,或輸入設(shè)備的狀態(tài)時否正常等。通過檢測,可以發(fā)現(xiàn)程序中的死循環(huán)錯誤,機器代碼錯誤和轉(zhuǎn)移地址錯誤,同時也可以發(fā)現(xiàn)用戶系統(tǒng)中的硬件故障,軟件算法和硬件設(shè)計錯誤,在調(diào)試過程中不斷調(diào)整用戶系統(tǒng)的軟件和硬件,完成每個程序模塊的調(diào)試。 對于模塊結(jié)構(gòu)程序,要對子程序逐個進(jìn)行調(diào)試。檢查后才知識發(fā)光二極管損壞導(dǎo)致未亮起,最后更換了發(fā)光二極管功能得以實現(xiàn)。最終成功解決了數(shù)碼管閃爍的問題。通電后,執(zhí)行讀寫指令,對用戶樣機的存儲器,I/O端口進(jìn)行讀寫和邏輯檢查等操作,用示波器等設(shè)備觀察波形(如輸出波形,讀/寫控制信號,地址數(shù)據(jù)波形和有關(guān)控制電平),通過對哦性的觀察分析,發(fā)現(xiàn)和排除故障。② 聯(lián)機調(diào)試。樣機所用的電源,事先必須單獨調(diào)試后才能加到系統(tǒng)中。脫機調(diào)試是在樣機加電之前,先用萬用表等工具,根據(jù)硬件電氣原理圖和裝配圖,子線檢查樣機線路的正確性,并核對元器件型號,規(guī)格和安裝是否符合要求。軟件調(diào)試時利用開發(fā)工具進(jìn)行在線仿真調(diào)試,除發(fā)現(xiàn)和解決程序錯誤外,也可以發(fā)現(xiàn)硬件故障。第五章 系統(tǒng)調(diào)試故障與分析系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試。T0、T1的數(shù)據(jù)寄存器都是讀/寫寄存器,任何時候都可以對它們進(jìn)行讀/寫操作。T0、T1的數(shù)據(jù)寄存器:T0、T1各有一個16位的數(shù)據(jù)寄存器,它們都是由高8位寄存器和低8位寄存器組成。IE0=1外部中斷0向CPU請求中斷,當(dāng)CPU響應(yīng)外部中斷時,由硬件清“0”IE0(邊沿觸發(fā)方式)。當(dāng)置位IT1為1時,則外部中斷1端口由“1”“0”跳變(前一個機器周期為高電平,后一個機器周期為低電平,即發(fā)生負(fù)跳變)時激活中斷請求標(biāo)志位IE1,向主機請求中斷處理;如果復(fù)位IT1為0,則在(/INT1)端口出現(xiàn)低電平時,激活中斷請求標(biāo)志IE1,向主機請求中斷處理。IE1=1,外部中斷向CPU請求中斷,當(dāng)CPU響應(yīng)該中斷時由硬件清“0”IE1(邊沿觸發(fā)方式)。當(dāng)產(chǎn)生溢出時硬件置“1”TF0,向CPU請求中斷,一直保持到CPU響應(yīng)中斷時,才由硬件清“0”(也可由查詢軟件清零)。TF0:T0溢出中斷標(biāo)志。T1被允許計數(shù)后,從初值開始加1計數(shù)。與中斷源有關(guān)的位如表43 所示。由于M1和M0兩位,可以有4種工作方式,如表42所示。C/\T=1時,選擇計數(shù)功能;C/\T=0時,選擇定時功能。GATE=0時,僅由TR0和TR1置位來啟動定時器T0、T1。GATE=1時,由外部中斷/INT0、/INT1和TR0、TR1來啟動定時器。T0、T1的方式寄存器TMOD:方式寄存器TMOD是一個逐位定義的8位寄存器,是只能字節(jié)尋址的寄存器,字節(jié)地址為89H,其格式如表41所示。TMOD用于控制和確定各定時器/計數(shù)器的功能和工作模式。即TX端口有從“1”到“0”的負(fù)跳變,計數(shù)器就自動加1,計算機是在每個機器周期采樣為0時,計數(shù)器即加一計數(shù),計算機需用兩個機器周期來識別1次計數(shù),因而最大計數(shù)速率為振蕩頻率的1/24。AT89S51單片機有2個16位的定時器/計數(shù)器:定時器/計數(shù)器0(T0)和定時器/計數(shù)器1(T1)。} 定時時間程序設(shè)計本設(shè)計通過單片機定時器中斷來提供定時時間。 P2=0X0F。 write_164(DISP_SAVE[j])。j4。i20。}}void disp_all(void) //送數(shù)碼管顯示{ uchar i,j。 j=j1。} delay(3)。0x01)==0x01) { DTAT_164=1。i++) { CLK_164=0。 for(i=0。圖42 74LS164時序圖顯示子程序如下: ************************************************************************void write_164(uchar lx) //向164寫入段碼{ uchar i,j。本設(shè)計中選用動態(tài)顯示驅(qū)動方式,數(shù)據(jù)通過74LS164的數(shù)據(jù)端送至數(shù)碼管顯示。通過輪流控制各個數(shù)碼管的選通端使數(shù)碼管輪流顯示。動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示方式是將所有的段選線并聯(lián)在一起,由一個8位I/O口來控制,再利用單片機的其他I/O口來作為數(shù)碼管的位選線。靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動,在靜態(tài)顯示驅(qū)動方式下,數(shù)碼管的共陰極或共陽極共同接地或接電源,每個數(shù)碼管的段選線與8位的單片機并口連接。圖42 按鍵程序流程圖本設(shè)計