版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式理論及應(yīng)用設(shè)計題目:基于C/OS-II8*8點(diǎn)陣的設(shè)計與制作嵌入式系統(tǒng)設(shè)計課程設(shè)計一、概述1. 單片機(jī)介紹單片機(jī)又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機(jī)系統(tǒng)集成到一個芯片上。概括的講:一塊芯片就成了一臺計算機(jī)。它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時,學(xué)習(xí)使用單片機(jī)是了解計算機(jī)原理與結(jié)構(gòu)的最佳選擇。2. 單片機(jī)歷史單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SoC三大階段。 1.SCM即單片微型計算機(jī)(Single Chip Microcomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)?!皠?chuàng)新模式”獲得
2、成功,奠定了SCM與通用計算機(jī)完全不同的發(fā)展道路。在開創(chuàng)嵌入式系統(tǒng)獨(dú)立發(fā)展道路上,Intel公司功不可沒。 2.MCU即微控制器(Micro Controller Unit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時,對象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對象的智能化控制能力。它所涉及的領(lǐng)域都與對象系統(tǒng)相關(guān),因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術(shù)廠家。從這一角度來看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當(dāng)數(shù)Philips公司。 3.單片機(jī)是嵌入式系統(tǒng)的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解
3、決;因此,專用單片機(jī)的發(fā)展自然形成了SoC化趨勢。隨著微電子技術(shù)、IC設(shè)計、EDA工具的發(fā)展,基于SoC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計會有較大的發(fā)展。因此,對單片機(jī)的理解可以從單片微型計算機(jī)、單片微控制器延伸到單片應(yīng)用系統(tǒng)。3. 單片機(jī)的應(yīng)用領(lǐng)域目前單片機(jī)滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了
4、。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。 單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,在大型電路中,這種模塊化應(yīng)用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。此外,單片機(jī)在工商,金融,科研、教育,國防航空航天等領(lǐng)域都有著十分廣泛的用途。二、單片機(jī)的結(jié)構(gòu)與原理1.AT89C55芯片 AT89C55單片機(jī)芯片內(nèi)部結(jié)構(gòu)框圖如圖1所示。圖1 AT89C55單片機(jī)芯片內(nèi)部結(jié)構(gòu)AT89C55,它是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含20kbytes 的可反復(fù)擦寫的Fl
5、ash只讀程序存儲器(ROM)和256*8bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8 位中央處理器(CPU)和Flash存儲單元,功能強(qiáng)大AT89C55單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場合。主要性能參數(shù):與MCS-51產(chǎn)品指令和引腳完全兼容20K字節(jié)可重擦寫Flash閃速存儲器1000次擦寫周期全靜態(tài)擦寫周期:0Hz33Hz三級加密程序存儲器256*8字節(jié)內(nèi)部RAM32個可編程I/O口線三個16位定時/計數(shù)器8個中斷源低功耗空閑和掉電模式功能特性概述: AT89C55是一種低功耗
6、,高性能8位CMOS單片機(jī),具有20K字節(jié)可重擦寫Flash閃速存儲器,該設(shè)備是采用Atmel的高密度非易失性內(nèi)存技術(shù),并與業(yè)界標(biāo)準(zhǔn)80C51指令集和引腳兼容,片上閃存程序存儲器可重新編程的系統(tǒng)或由傳統(tǒng)的非易失性內(nèi)存編程通過將通用的8位CPU與Flash在monolithicchip芯片, AT89C55是一個強(qiáng)大的微型計算機(jī)提供了一個高度靈活和成本有效地解決許多嵌入式控制應(yīng)用。 該AT89C55的標(biāo)準(zhǔn)提供了以下功能:20,000字節(jié)的閃存,256內(nèi)存,32個字節(jié)/ O線,三個16位定時器/計數(shù)器,6向量兩級中斷結(jié)構(gòu),全雙工串行端口,片上振蕩器和時鐘電路。此外,AT89C55的目的是為降低到零
7、頻率靜態(tài)邏輯,支持兩種軟件可選省電模式??臻e模式停止的CPU,同時允許RAM工作,定時器/計數(shù)器,串行端口和中斷系統(tǒng)繼續(xù)運(yùn)作。運(yùn)作。在掉電模式保存RAM的內(nèi)容,但凍結(jié)振蕩器,禁用直到下一個硬件復(fù)位所有其他片上功能運(yùn)作。引腳說明:Vcc:電源供電GND:地P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在 flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1
8、 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),P2口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部
9、電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。
10、RST:復(fù)位輸入。關(guān)于這兩個機(jī)器周期針高,而振蕩器運(yùn)行重置設(shè)備。:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在flash編程時,此引腳()也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無
11、效。:程序存儲允許()輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次信號。:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH),端必須保持低電平(接地)。需注意的是:如果加密位被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。XTAL2:
12、振蕩器反相放大器的輸出端。用戶軟件寫入1秒不應(yīng)該對這些非上市地點(diǎn),因為它們可用于未來的產(chǎn)品援引新功能。在這種情況下,重置或新位無效值將始終為0。定時器2:控制和狀態(tài)位載于登記T2CON(見表2)和T2MOD(見表4定時器2)。登記冊對(RCAP2H,RCAP2L的)是捕捉/定時器2裝入寄存器的16位捕捉模式或16位自動重載模式。中斷寄存器:個別中斷使能位在IE名冊。兩個優(yōu)先事項可以設(shè)定6個中斷源的IP每冊。數(shù)據(jù)存儲器:AT89C52有256個字節(jié)的內(nèi)部RAM,高128個字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM和特殊功能寄存器的地址的相同的,但物理上它們是分開的。當(dāng)
13、一條指令訪問7FH以上的內(nèi)部地址單元時,指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問高128字節(jié)RAM還是訪問特殊功能 寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。定時器0和定時器1: AT89C52的定時器0和定時器1的工作方式與AT89C51相同。定時器2: 定時器2是一個16位定進(jìn)/計數(shù)器。它既可當(dāng)定時器使用,也可作為外部事件計數(shù)器使用,其工作方式由特殊功能寄存器T2CON的C/T2位選擇。定時器2有三種工作方式:捕獲方式,自動重裝載(向上或向下計數(shù))方式和波特率發(fā)生器方式,工作方式由T2CON的控制位來選擇,如表3所示:定時器2由兩個8位寄存器TH2和TL2組成,在定
14、時器工作方式中,每個機(jī)器周期TL2寄存器的值加1,由于一個機(jī)器周期由12個振蕩時鐘構(gòu)成,因此,計數(shù)速率的1/12.在計數(shù)工作方式時,當(dāng)T2引腳上外部輸入信號產(chǎn)生由1至9的下降沿時,寄存器的值加1,在這種工作方式下,每個機(jī)器周期的5SP2期間,對外部輸入進(jìn)行采樣。若在第一個機(jī)器周期中采到的值為1,而在下一個機(jī)器周期中采到的值為9,則在緊跟綜著的下一個周期的S3P1期間寄存器加1.由于識別1至0的跳變需要2個機(jī)器周期(24個振蕩周期),因此,最高計數(shù)速率為振蕩頻率的1/24.為確保采樣的正確性,要求輸入的電平在變化前至少保持一個完整周期的時間,以保證輸入信號至少被采樣一次??删幊虝r鐘輸出:定時器2
15、可通過編程從P1.0輸出一個占空比為50%的時鐘信號,如圖8所示。P1.0引腳除了是一個標(biāo)準(zhǔn)的I/O口外,還可以通過編程使用作為定時/計數(shù)器2的外部時鐘和輸出占空比50%的時鐘脈沖。當(dāng)時鐘振蕩頻率為16MHz時,輸出時鐘頻率范圍為61Hz4MHz。當(dāng)設(shè)置定時/計數(shù)器2為時鐘發(fā)生器時,C/T2(T2CON.1)=0,(T2MOD.1)=1,必須由TR2(T2CON.2)啟動或停止定時器。時鐘輸出頻率取決于振蕩頻率和定時器2捕獲寄存器(RCAP2H,RCAP2L)的重新裝載值,公式如下:在時鐘輸出方式下,定時器2的翻轉(zhuǎn)不會產(chǎn)生中斷,這個特性與作為波特率發(fā)生器使用時相仿。定時器2作為波特率發(fā)生器使用
16、是,還可作為時鐘發(fā)生器使用,但需要注意的是波特率和時鐘頻率不能分開確定,這是因為它們同使用RCAP2H和RCAP2L。中斷:AT89C55共有6個中斷向量:兩個外中斷(INT0和INT1),3個定時器中斷(定時器0、1、2)和串行口中斷。所有這些中斷源如圖所示。這些中斷源可通過分別設(shè)置專用寄存器IE的置位或清0來控制每一個中斷的允許或禁止。IE也有一個總禁止位EA,它能控制所有中斷的允許或禁止。注意表中的IE。6為保留位,在AT89C51中IE。5也是保留位。程序員不應(yīng)將“1”寫入這些位,它們是將來AT89系列產(chǎn)品作為擴(kuò)展用的。定時器2的中斷是由T2CON中的TF2和EXF2邏輯或產(chǎn)生的,當(dāng)轉(zhuǎn)
17、向中斷服務(wù)程序時,這些標(biāo)志位不能被硬件清除,事實上,服務(wù)程序需要確定是TF2或EXF2產(chǎn)生中斷,而由軟件清除中斷標(biāo)志位。定時器0和定時器1的標(biāo)志位TF0和TF1在定時器溢出那個機(jī)器周期的S5P2狀態(tài)置位,而會在下一個機(jī)器周期才查詢到該中斷標(biāo)志。然而,定時器2的標(biāo)志位TF2在定時器溢出的那個機(jī)器周期的S2P2狀態(tài)置位,并在同一個機(jī)器周期內(nèi)查詢到該標(biāo)志。三、 uCos-II在AT89C55上的移植雖然C/OS-II大部分源代碼是用C語言寫的,但是完成和處理器一些有關(guān)的代碼時,照舊必須要用匯編語言來實現(xiàn)的。要使uCOS-II正常運(yùn)行,必須滿足一下要求:(1)處理器的C編譯器能產(chǎn)生可重入型代碼。(2)
18、用C語言就可以打開和關(guān)閉中斷。(3)處理器支持中斷,并且能產(chǎn)生定時中斷(通常頻率在10至100Hz之間)。(4)處理器能支持容納一定量的數(shù)據(jù)存儲硬件堆棧(可能是幾千字節(jié))。(5)處理器有將堆棧指針和其他CPU寄存器的內(nèi)容讀出并存儲到堆?;騼?nèi)存中的指令。AT89C55與KeilCx51編譯器可以滿足以上條件,可以將uCOS-II移植到AT89C55系列處理器。需要說明一點(diǎn),目前uCOS-II的版本較多,但基本都一致,兼容性也很好,本例采用的是uCOS-II V2.52版。C/OS-II的移植包括以下幾個部分。(1)設(shè)置與編譯器有關(guān)的代碼OS_CPU.H在差異的處理器中有差異的字長,所以必須界說一
19、系列數(shù)據(jù)范例以確保移植的準(zhǔn)確性。另外,在uC/OS-II中,不使用C的short、int和long等數(shù)據(jù)范例,這些都是和編譯器相干的。下面即是uC/OS-II界說的一部分?jǐn)?shù)據(jù)范例。typedef unsigned char BOOLEAN;typedef unsigned char INT8U; /*無標(biāo)志8位整數(shù) */typedef signed char INT8S; /*有標(biāo)志8位整數(shù) */typedef unsigned int INT16U; /*無標(biāo)志16位整數(shù) */typedef signed int INT16S; /*有標(biāo)志16位整數(shù) */typedef unsigned l
20、ong INT32U; /*無標(biāo)志32位整數(shù) */typedef signed long INT32S; /*有標(biāo)志32位整數(shù) */typedef float FP32; /*單精度浮點(diǎn)數(shù) */typedef double FP64; /*雙精度浮點(diǎn)數(shù) */首先來看對臨界段的處理,就是關(guān)中斷,處理完畢后在開中斷。uCOS-II提供了3種方法來處理,針對AT89C55單片機(jī),可以使用方法1來處理臨界段。在AT89C55系列單片機(jī)中,中斷允許寄存器IE的第7位EA為中斷允許控制為,EA=0屏蔽所有中斷、EA=1允許所有中斷。AT89C55堆棧從低地址往高地址增長(1=向下,0=向上),因此將OS_
21、STK_GROWTH定義為0。OS_TASK_SW()是一個宏,在uCOS-II從低優(yōu)先級任務(wù)切換到高優(yōu)先級任務(wù)是被調(diào)用。uCOS-II假定任務(wù)切換時靠中斷級代碼完成的,或者說uCOS-II的任務(wù)切換時靠模仿中斷動作來完成的。uCOS-II需要一條處理器指令,使其行為就像是硬件中斷。MCS-51沒有軟中斷指令,在這種情況下,需要將堆棧結(jié)構(gòu)設(shè)置成與中斷堆棧結(jié)構(gòu)一樣,在用函數(shù)調(diào)用的方式來實現(xiàn)任務(wù)切換,也就是說,通過函數(shù)來模仿軟中斷指令。(2)用C語言編寫6個與操作體系有關(guān)的函數(shù)OS_CPU_C.C這10個函數(shù)是:OSTaskStkInit()、OSTaskCreatHook()、OSTaskDel
22、Hook()、OSTaskSwHook()、OSTaskStatHook()、OSTaskIdleHook()、OSTimeTickHook()、OSInitHookBegin()、OSInitHookEnd()和OSTCBInitHook()。這10個函數(shù)只對OSTaskStkInit()編寫代碼,后9個函數(shù)必須聲明,但是內(nèi)部并沒有代碼。在對堆棧設(shè)計時需要考慮一下因素:傳統(tǒng)的8051處理器在中斷來臨時只將程序計數(shù)器PC的值壓入堆棧。按照uCOS-II的要求,保存全部寄存器,AT89C55的寄存器有PSW、ACC、B、DPL、DPH、R0-R7和SP。Cx51編譯器允許用CPU寄存器傳遞3個參
23、數(shù)。堆棧從低地址向高地址增長。堆棧指針指向上次入棧地址。AT89C55存在系統(tǒng)棧。系統(tǒng)棧深度為256字節(jié)。因為需要進(jìn)行任務(wù)棧與系統(tǒng)棧的復(fù)制,獲得系統(tǒng)棧的起始地址,所以需要對系統(tǒng)進(jìn)行一些定義。首先,堆棧起點(diǎn)由Keil決定,只關(guān)心大小,然后通過SOStack獲得keil分配的SP起點(diǎn)。下面的代碼就是相關(guān)的匯編代碼,可以放在啟動代碼中,也可以放在相關(guān)的文件中。為了函數(shù)重入,形參和局部變量必須保存在堆棧里。MCS-51硬件堆棧太小,Keil將根據(jù)內(nèi)存模式在相應(yīng)內(nèi)存空間仿真堆棧,增長方向由上向下,與硬件棧相反。對于大模式編譯,函數(shù)返回地址保存在硬件堆棧里,形參和局部變量放在仿真堆棧中,對MCS-51咬使
24、用大模式編譯。3. 編寫4個匯編語言函數(shù)OS_CPU_A.SuC/OS-II的移植實例要求用戶編寫4個簡略的匯編語言函數(shù):OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。表2移植所需要的具體材料及移植的參數(shù)編譯器硬件堆棧大小任務(wù)棧大小系統(tǒng)棧保存參數(shù)(包括模棧指針?C_XBP)每秒切換次數(shù)定時器初值單片機(jī)型號Keil Cx5130H50H1750B800HSTC11F48XE4. 測試、編寫驅(qū)動和應(yīng)用步伐做完以上事情以后,就要測試移植的是否準(zhǔn)確。測試一個C/OS-II實時內(nèi)核并不龐大,即是讓這個實時內(nèi)核在自己的目的板上跑起來。uC/OS-I
25、I移植完成以后,就要在這個實時內(nèi)核之上編寫接口驅(qū)動步伐。由于嵌入式操作體系體積更小,功效更強(qiáng),且快速、穩(wěn)固,更具有針對性,因此不像其它操作體系那樣,對體系的全部接口配置都需要驅(qū)動、管理、調(diào)治和監(jiān)視。由于嵌入式產(chǎn)品是針對特別的用途而計劃的,有很強(qiáng)的埋頭性,因此,在編寫驅(qū)動步伐時內(nèi)容更精簡,更具有穩(wěn)固性,編寫出的驅(qū)動模塊更小。編寫驅(qū)動步伐應(yīng)完成以下基本功效:對配置初始化和開釋;把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);讀取應(yīng)用步伐傳送給配置文件的數(shù)據(jù)和回送應(yīng)用步伐懇求的數(shù)據(jù);檢測和處理配置出現(xiàn)的錯誤。實現(xiàn)了以上功效以后,一個嵌入式操作體系就基本組成了。4、 系統(tǒng)硬件電路設(shè)計1. 復(fù)位電路部分如圖所示
26、,當(dāng)要對晶片重置時,只要按此開關(guān)就能完成LED和開關(guān)的重置。2.晶振部分產(chǎn)生時鐘信號 3總設(shè)計圖5、 系統(tǒng)軟件設(shè)計#include includes.hunsigned char i=0;unsigned char j=0;unsigned char a8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char b8=0x30,0x18,0x24,0x12,0x24,0x18,0x30,0x00; void TaskStartyya(void *yydata) reentrant;void TaskStartyyb(void *yydata)
27、 reentrant;void TaskStartyyc(void *yydata) reentrant;void TaskStartyyd(void *yydata) reentrant;void TaskStartyye(void *yydata) reentrant;OS_STK TaskStartStkyyaMaxStkSize;/注意:我在ASM文件中設(shè)置?STACK空間為40H即64。OS_STK TaskStartStkyybMaxStkSize;/任務(wù)堆棧OS_STK TaskStartStkyycMaxStkSize;OS_STK TaskStartStkyydMaxStkS
28、ize;OS_STK TaskStartStkyyeMaxStkSize;void main(void) OSInit(); InitTimer0(); InitSerial(); InitSerialBuffer();KeyInit(); OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya0,2); OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb0,3); OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc0,4);
29、 OSTaskCreate(TaskStartyyd, (void *)0, &TaskStartStkyyd0,5);OSTaskCreate(TaskStartyye, (void *)0, &TaskStartStkyye0,6); OSStart();void TaskStartyya(void *yydata) reentrant /任務(wù)1for(;)TH0=(65536-1000)/256; TL0=(65536-1000)%256; P3=ai; P1=bi; i+; if(i=8) i=0; 6、 軟件調(diào)試1. 軟件調(diào)試 根據(jù)程序框圖,寫出對應(yīng)的程序,在keilC中進(jìn)行調(diào)試編譯
30、,生成.hex文件。在Proteus中畫出電路圖,并裝載上述生成的.hex文件,首先要對程序中的每個子函數(shù)進(jìn)行功能測試,在得到我們想要的功能后還要對子函數(shù)與子函數(shù)之間的調(diào)用進(jìn)行測試,在所有子函數(shù)測試都通過后才在能鑲嵌到主函數(shù)中進(jìn)行測試,仿真觀察結(jié)果,根據(jù)結(jié)果再對程序進(jìn)行修改,調(diào)試,直到滿意為止。2、硬件調(diào)試2.1、檢查元器件 在焊接之前應(yīng)先檢查各元器件的好壞。檢查電容、電感、電阻的大小是否正確。檢查二極管是否導(dǎo)通。2.2、排列元器件由于本次課程設(shè)計采用的是萬用板,元器件在電路上的排列要自己排列分布好,以為焊接減少不必要的麻煩。2.3、焊接 在分布好元器件的格局后,開始焊接,先焊接單片機(jī)底座、排母、其它元器件。焊接完元器件后即元器件分布在萬用板上已定型。然后根據(jù)電路圖,用導(dǎo)線連接各引腳。在用導(dǎo)線連接時應(yīng)注意,導(dǎo)線焊接在元器件引腳上時剝皮部分長度要適中。每焊完一個元器件都應(yīng)該檢查是否有錯。2.4、調(diào)試按照電路圖焊接完畢后,檢查電路完畢后。單片機(jī)先不裝上去,接上電源,用萬用表測試單片機(jī)和液晶的電源引腳,看其值是否正常,不正常檢查電路調(diào)試直至正常。以避免燒壞元器件。完成以上步驟后,接上電源裝上單片機(jī),看是否實現(xiàn)功能。如果出錯,檢查電路,調(diào)試,直至出現(xiàn)正確結(jié)果。七、實物組裝八、心得體會經(jīng)過這次課程設(shè)計,我覺得自己學(xué)到了不少東西。歸納起來,主要有以下幾點(diǎn):1.通過這次課程設(shè)計,我能將以前四
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度地鐵站內(nèi)停車場外包運(yùn)營管理合同3篇
- 2024至2030年中國電腦刻字機(jī)行業(yè)投資前景及策略咨詢研究報告
- 2025年范文委托擔(dān)保服務(wù)合同
- 2024年度旅游景區(qū)停車場管理服務(wù)合同3篇
- 2024至2030年飛碟形路燈項目投資價值分析報告
- 服裝行業(yè)半期貨銷售合同
- 居間合同協(xié)議2025年
- 2024至2030年肥肝醬項目投資價值分析報告
- 2024至2030年中國前后保險杠行業(yè)投資前景及策略咨詢研究報告
- 2024年度醫(yī)療康復(fù)設(shè)備區(qū)域代理合作框架合同3篇
- 【9歷期末】安徽省合肥市包河區(qū)智育聯(lián)盟2023-2024學(xué)年九年級上學(xué)期1月期末歷史試題
- 2024年短劇拍攝及制作協(xié)議版
- 2024年度專業(yè)外語培訓(xùn)機(jī)構(gòu)兼職外教聘任合同3篇
- 汽車維修安全生產(chǎn)管理制度(3篇)
- 個人的車位租賃合同范文-個人車位租賃合同簡單版
- 用電安全專項檢查工作方案模版(3篇)
- 2025年廣東省春季高考數(shù)學(xué)仿真模擬試卷試題(含答案解析+答題卡)
- 新媒體運(yùn)營工作年終總結(jié)
- 微積分(I)知到智慧樹章節(jié)測試課后答案2024年秋南昌大學(xué)
- 低空經(jīng)濟(jì)的商業(yè)化路徑分析
- 新外貿(mào)業(yè)務(wù)員年終總結(jié)
評論
0/150
提交評論