版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗項目1:嵌入式開發(fā)系統(tǒng)熟悉KEIL C 開發(fā)環(huán)境使用方法實驗?zāi)康?1、熟悉KEIL C軟件開發(fā)環(huán)境2、搭建基本的開發(fā)環(huán)境實驗平臺:Windows XP 操作系統(tǒng)、Keil c 開發(fā)軟件主要實驗內(nèi)容:一、 上機(jī)熟悉KEIL C軟件開發(fā)環(huán)境二、 掌握搭建基本開發(fā)環(huán)境的過程,掌握比較常用的選項設(shè)置三、 學(xué)生自己編寫一段小的c代碼,掌握編譯過程。本實驗知識背景:功能強(qiáng)大的單片機(jī)開發(fā)工具KEIL CKeil Software 的8051開發(fā)工具提供以下程序你可以用它們來編譯你的C源碼匯編你的匯編源程序連接和重定位你的目標(biāo)文件和庫文件創(chuàng)建HEX文件調(diào)試你的目標(biāo)程序。l Windows應(yīng)用程序uVisi
2、on2是一個集成開發(fā)環(huán)境它把項目管理源代碼編輯程序調(diào)試等集成到一個功能強(qiáng)大的環(huán)境中l(wèi) C51美國標(biāo)準(zhǔn)優(yōu)化C交叉編譯器從你的C源代碼產(chǎn)生可重定位的目標(biāo)文件 l A51宏匯編器從你的8051匯編源代碼產(chǎn)生可重定位的目標(biāo)文件 l BL51連接/重定位器組合你的由C51和A51產(chǎn)生的可重定位的目標(biāo)文件生成絕對目標(biāo)文件 l LIB51庫管理器組合你的目標(biāo)文件生成可以被連接器使用的庫文件 l OH51目標(biāo)文件到HEX格式的轉(zhuǎn)換器從絕對目標(biāo)文件創(chuàng)建Intel HEX 格式的文件 l RTX-51實時操作系統(tǒng)簡化了復(fù)雜和對時間要求敏感的軟件項目 對由這些工具組成的開發(fā)套件進(jìn)行描述它們是為專業(yè)開發(fā)人員而設(shè)計的,
3、但所有層次的編程人員都可以用它們來獲得8051微控制器的絕大部分應(yīng)用。實驗步驟:1. 打開KEIL 軟件,新建工程2. 命名KEIL工程文件名,然后保存3. 彈出器件選擇窗口,選擇 Atmel 并雙擊4. 選擇AT89C51 或AT89S51 ,然后點擊確定5. 提示問你是否加載 標(biāo)準(zhǔn)8051 Startup 文件,點擊否6. 新建一個文本文件7. 輸入源程序或直接從其他的文本中復(fù)制源程序粘貼進(jìn)來。8. 保存剛才的文本文件9.注意選擇后綴.c10. 把剛才保存的 *.c添加到工程中11. 點擊完Add 后,這個窗口還在,再點擊 Close 12.設(shè)置目標(biāo)文件屬性13. 把 Create HEX
4、 File 前面的方框鉤起來14.編譯源程序15. 狀態(tài)顯示編譯結(jié)果16.點擊鏈接按鈕,生成16進(jìn)制文件17.狀態(tài)顯示生成16進(jìn)制文件實驗項目2:嵌入式C語言程序的設(shè)計與調(diào)試實驗?zāi)康?1、進(jìn)一步熟悉KEIL C軟件開發(fā)環(huán)境2、搭建基本的開發(fā)環(huán)境3、編寫代碼并使用KEIL C進(jìn)行調(diào)試實驗平臺:Windows XP 操作系統(tǒng)、Keil c 開發(fā)軟件主要實驗內(nèi)容:一、 上機(jī)熟悉KEIL C軟件開發(fā)環(huán)境二、 掌握搭建基本開發(fā)環(huán)境的過程,掌握比較常用的選項設(shè)置三、 學(xué)生自己編寫一段小的c代碼,掌握編譯過程,進(jìn)行調(diào)試,學(xué)會觀察寄存器和管腳等調(diào)試方法。四、 結(jié)合實驗項目1完成實驗報告1份本實驗知識背景:一、
5、 掌握實驗項目1的基本技能,能夠搭建基本的開發(fā)環(huán)境。二、 了解KEIL C開發(fā)軟件的調(diào)試環(huán)境三、 為方便觀察調(diào)試現(xiàn)象,應(yīng)針對單片機(jī)的寄存器或管腳編寫代碼。實驗步驟:1、按照實驗項目1搭建基本實驗平臺,學(xué)生可輸入自己的實驗代碼。2、輸入代碼后,處理編譯過程中的問題,保證編譯鏈接通過。3、在編譯狀態(tài)點擊按鈕可進(jìn)入調(diào)試狀態(tài)。4、進(jìn)入調(diào)試狀態(tài)5、,熟悉并掌握調(diào)試環(huán)境中的主要快捷按鈕6、查看P1端口狀態(tài)7、點擊運行,觀察P1端口8、熟悉view按鈕9、點擊按鈕觀察存儲器,在address:處填入P1端口地址0x90可以觀察P1端口在不斷變化。10、右擊代碼中的特殊功能寄存器P1,選擇菜單中的最后一項將P
6、1添加到watch windows 1窗口。11、可以在watch windows 1 觀察P1 的變化。12、學(xué)生獨立操作,進(jìn)一步熟悉操作環(huán)境,并操作前面介紹的主要功能。13、結(jié)合實驗項目1完成實驗報告1份。實驗項目3:硬件測試編碼設(shè)計與調(diào)試(沒有實驗設(shè)備)實驗?zāi)康?1、利用KEIL C軟件和51單片機(jī)實驗開發(fā)板調(diào)試端口的led2、掌握軟件與硬件的平臺搭建3、學(xué)習(xí)下載hex代碼,并在KEIL C環(huán)境下進(jìn)行調(diào)試。4、使用proteus軟件對實驗結(jié)果進(jìn)行仿真。實驗平臺:Windows XP 操作系統(tǒng)、Keil c 開發(fā)軟件、proteus軟件主要實驗內(nèi)容:一、搭建KEIL C軟件與實驗開發(fā)板的開
7、發(fā)環(huán)境,設(shè)置好波特率、串口。二、下載代碼至目標(biāo)板,單步執(zhí)行代碼,注意觀察實驗現(xiàn)象。三、對代碼進(jìn)行修改并調(diào)試,并進(jìn)行仿真測試。四、使用proteus軟件對結(jié)果進(jìn)行仿真實驗,觀察實驗結(jié)果。五、編寫實驗報告分析實驗現(xiàn)象。本實驗知識背景:為了彌補(bǔ)由于暫無實驗設(shè)備無法進(jìn)行軟、硬件平臺搭建的缺陷,加入ledkey.dll和Dpj.dll兩個能夠模擬硬件的調(diào)試文件。并將程序進(jìn)行進(jìn)行proteus仿真觀察實驗結(jié)果。實驗步驟:1、調(diào)試文件的使用方法由于暫無51單片機(jī)硬件實驗平臺,無法進(jìn)行真正的調(diào)試開發(fā),為此加入ledkey.dll和Dpj.dll兩個能夠模擬硬件的調(diào)試文件。加入的方法是:1)、將這兩個文件拷貝到
8、keilc51bin。2)、以ledkey.dll 為例,點擊options for target的debug選項在parameter填入-dledkey。3)、調(diào)出硬件仿真面板就可以使用了。2、使用Proteus軟件仿真方法1)、打開proteus軟件,單擊菜單命令“File”->”open design”,打開對應(yīng)實驗的.DSN文件。2)、在文件中,左鍵雙擊AT89C51單片機(jī),在彈出的對話框的“Program File”項中選擇在keil文件中生成的十六進(jìn)制HEX文件。3)、單擊頁面左下角按鈕開始進(jìn)入程序仿真狀態(tài),觀察仿真結(jié)果與引腳的電平變化,紅色代表高電平,藍(lán)色代表低電平。按鈕停
9、止仿真。完成實驗程序:編寫程序,完成下列實驗。1、設(shè)計程序,按下按鍵時,P1.1控制發(fā)光二極管點亮,否則,P1.0控制發(fā)光二極管點亮。2、單片機(jī)系統(tǒng)控制要求為:(1)正常情況下,8個發(fā)光二極管點亮。(2)按下K1時,第1個和第8個發(fā)光二極管閃爍,間隔時間為1S。(3)按下K2時,8個發(fā)光二極管閃爍,間隔為2S。(4)發(fā)光二極管由單片機(jī)P0口控制。3、使用單片機(jī)P0口實現(xiàn)8個LED的流水燈控制。實驗項目4:中斷系統(tǒng)程序設(shè)計實驗?zāi)康?1、掌握嵌入式c語言開發(fā)51單片機(jī)中斷系統(tǒng)的方法和特點。2、掌握軟件開發(fā)及調(diào)試平臺的搭建3、通過調(diào)試分析并學(xué)習(xí)中斷優(yōu)先級方面的知識實驗平臺:Windows XP 操作
10、系統(tǒng)、Keil c 開發(fā)軟件、proteus軟件主要實驗內(nèi)容:一、編寫中斷及中斷優(yōu)先級代碼,搭建KEIL C軟件開發(fā)環(huán)境,并編譯鏈接通過。二、單步執(zhí)行代碼,注意觀察實驗現(xiàn)象并進(jìn)行分析。三、使用proteus軟件對結(jié)果進(jìn)行仿真實驗,觀察實驗結(jié)果。四、編寫實驗報告分析實驗現(xiàn)象。本實驗知識背景:1、中斷的概念:CPU在處理某一事件A時,發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生);CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷 。80C51的中斷系統(tǒng)有5個中斷源(8052有 6個
11、) ,2個優(yōu)先級,可實現(xiàn)二級中斷嵌套 。2、80C51中斷的控制 中斷允許控制 CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。EX0(IE.0),外部中斷0允許位;ET0(IE.1),定時/計數(shù)器T0中斷允許位; EX1(IE.2),外部中斷0允許位;ET1(IE.3),定時/計數(shù)器T1中斷允許位;ES(IE.4),串行口中斷允許位;EA (IE.7), CPU中斷允許(總允許)位中斷請求標(biāo)志1)、TCON的中斷標(biāo)志IT0(TCON.0),外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時,為電平觸發(fā)方式。當(dāng)IT0=1時,為邊沿觸發(fā)方式(下降沿有效)。IE0(TCON.
12、1),外部中斷0中斷請求標(biāo)志位。IT1(TCON.2),外部中斷1觸發(fā)方式控制位。IE1(TCON.3),外部中斷1中斷請求標(biāo)志位。TF0(TCON.5),定時/計數(shù)器T0溢出中斷請求標(biāo)志位。TF1(TCON.7),定時/計數(shù)器T1溢出中斷請求標(biāo)志位2)、SCON的中斷標(biāo)志RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI。同樣,RI必須由軟件清除。TI(SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時,就啟動了發(fā)送過程。每發(fā)送完一個串行幀,由硬件置位TI。CPU響應(yīng)中斷時,不能自動清除TI,TI必須由軟件清
13、除。 中斷優(yōu)先級控制 80C51單片機(jī)有兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷服務(wù)嵌套。每個中斷源的中斷優(yōu)先級都是由中斷優(yōu)先級寄存器IP中的相應(yīng)位的狀態(tài)來規(guī)定的 。 PX0(IP.0),外部中斷0優(yōu)先級設(shè)定位;PT0(IP.1),定時/計數(shù)器T0優(yōu)先級設(shè)定位;PX1(IP.2),外部中斷0優(yōu)先級設(shè)定位;PT1(IP.3),定時/計數(shù)器T1優(yōu)先級設(shè)定位;PS (IP.4),串行口優(yōu)先級設(shè)定位;PT2 (IP.5) ,定時/計數(shù)器T2優(yōu)先級設(shè)定位。而80C52單片機(jī)有四個中斷優(yōu)先級,即可實現(xiàn)四級中斷服務(wù)嵌套。每個中斷源的中斷優(yōu)先級由中斷優(yōu)先級寄存器IP和IPH中的相應(yīng)位的狀態(tài)來規(guī)定的 。v PX0(IP
14、H.0),外部中斷0優(yōu)先級設(shè)定位;v PT0(IPH.1),定時/計數(shù)器T0優(yōu)先級設(shè)定位;PX1(IPH.2),外部中斷0優(yōu)先級設(shè)定位;PT1(IPH.3),定時/計數(shù)器T1優(yōu)先級設(shè)定位;PS (IPH.4),串行口優(yōu)先級設(shè)定位;PT2 (IPH.5) ,定時/計數(shù)器T2優(yōu)先級設(shè)定位。同一優(yōu)先級中的中斷申請不止一個時,則有中斷優(yōu)先權(quán)排隊問題。同一優(yōu)先級的中斷優(yōu)先權(quán)排隊,由中斷系統(tǒng)硬件確定的自然優(yōu)先級形成,其排列如所示:80C51單片機(jī)的中斷優(yōu)先級有三條原則:CPU同時接收到幾個中斷時,首先響應(yīng)優(yōu)先級別最高的中斷請求。正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷。正在進(jìn)行的低優(yōu)先級
15、中斷服務(wù),能被高優(yōu)先級中斷請求所中斷。 為了實現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩個用戶不能尋址的優(yōu)先級狀態(tài)觸發(fā)器。其中一個置1,表示正在響應(yīng)高優(yōu)先級的中斷,它將阻斷后來所有的中斷請求;另一個置1,表示正在響應(yīng)低優(yōu)先級中斷,它將阻斷后來所有的低優(yōu)先級中斷請求??梢匝菔緆eil下使用c語言按位設(shè)置和對整個寄存器的設(shè)置在程序中的使用。C語言的中斷函數(shù)處理,與匯編語言的區(qū)別。中斷應(yīng)用的C語言編程 C51編譯器支持在C源程序中直接開發(fā)中斷程序。中斷服務(wù)程序是通過按規(guī)定語法格式定義的一個函數(shù)。 中斷服務(wù)程序的函數(shù)定義的語法格式如下: 返回值 函數(shù)名(參數(shù)) interrupt m using n MCS
16、-51中斷源編號實驗步驟:1、 在KEIL C環(huán)境下建立一個工程項目2、 編寫代碼,設(shè)置EA、TCON、IP等寄存器3、 編寫中斷函數(shù)4、 編譯并連接,處理出現(xiàn)的錯誤保證調(diào)試通過。5、 利用實驗項目1、2學(xué)到的知識調(diào)試,可以使用單步執(zhí)行和設(shè)置斷點等方式。6、 調(diào)試時須打開調(diào)試端口,使用鍵盤LED仿真板。7、 利用實驗項目3中學(xué)到的知識同proteus軟件觀察實驗結(jié)果。完成實驗程序:4、使用定時/計數(shù)器作為延時控制,要求兩燈在P0.0和P0.1之間按1S互相閃爍。分析思考:1)、利用P3管腳,分別使用下降沿和電平觸發(fā)方式觀察中斷差別。2)、觀察中斷發(fā)生前后TCON的變化。實驗項目5:中斷、定時器
17、小系統(tǒng)綜合設(shè)計、調(diào)試及測試實驗?zāi)康?1、利用KEIL C軟件,編制應(yīng)用程序控制發(fā)光二極管定時閃爍2、掌握定時/計數(shù)器工作方式的控制3、分別用中斷和查詢兩種方式實現(xiàn) 實驗平臺:Windows XP 操作系統(tǒng)、Keil c 開發(fā)軟件、proteus軟件主要實驗內(nèi)容:一、根據(jù)定時器的結(jié)構(gòu)與工作原理,選擇定時器工作方式并計算初值。二、根據(jù)要求編寫程序。三、調(diào)試代碼、編寫實驗報告。本實驗知識要點:一、定時 / 計數(shù)器的結(jié)構(gòu)T0、T1均為16位加1計數(shù)器。計數(shù)值高八位計數(shù)值低八位計數(shù)值高八位計數(shù)值低八位TH0 TH1 TL0 TL1 工作方式控制字 TMOD 工作方式 TCON 1、工作方式控制寄存器 T
18、MOD T1 T0TMOD GATE C/T M1 M0 GATE C/T M1 M0GATE 門控位。 GATE = 0 啟動不受 /INT0或 /INT1的控制; GATE = 1 啟動受 /INT0 或 /INT1 的控制。C/T 外部計數(shù)器 / 定時器方式選擇位 C/T = 0 定時方式; C /T = 1 計數(shù)方式。M1M2 工作模式選擇位。 M1 M0 模式 說明 0 0 0 13位定時/計數(shù)器高八位TH(7 0)+ 低五位TL(4 0) 0 1 1 16位定時/計數(shù)器 TH(7 0)+ TL(7 0) 1 0 2 8位計數(shù)初值自動重裝 TL(7 0) TH(7 0) 1 1 3
19、T0運行,而T1停止工作,8位定時/計數(shù)。2、定時 / 計數(shù)器控制寄存器TCONTCON TR1 TR0 TR0 定時 / 計數(shù)器0運行控制位。 軟件置位,軟件復(fù)位。 與GATE有關(guān),分兩種情況: GATE = 0 時,若TR0 = 1,開啟T0計數(shù)工作; 若TR0 = 0,停止T0計數(shù)。 GATE = 1 時,若TR0 = 1 且/INT0 = 1時,開啟T0計數(shù); 若TR0 = 1 但 /INT0 = 0,則不能開啟T0計數(shù)。 若TR0 = 0, 停止T0計數(shù)。TR1 定時 / 計數(shù)器1運行控制位。 用法與TR1類似。二、定時 / 計數(shù)器的四種工作模式1、模式0 T1、T0的等效邏輯結(jié)構(gòu)
20、(顯示投影膠片)計數(shù)寄存器TLi 低5位 + THi8位C/T = 0 定時C/T = 1 對外計數(shù)。定時:fosc / 12 = 1 /(12/fosc) = 1 / T 等間隔,次數(shù)已定,時間確定 T 即對機(jī)器周期進(jìn)行計數(shù)。 左圖定時時間為n×T。 n 計數(shù):脈沖不等間隔。 每個下降沿計數(shù)一次 確認(rèn)一次負(fù)跳變需兩個機(jī)器周期,所以,計數(shù)頻率最高為fosc / 24。GATE = 0 時,A =“1” B = “1”(TRi = 1時),啟動計數(shù) B = “0”(TRi = 0時),停止計數(shù)。GATA = 1 時, A =“1”(/ INTXi =“1”) B =“1”(TRi =
21、1時)啟動,B = “0”(TRi = 0時)停止。A =“0”(/ INTXi =“0”)停止。2、模式1與模式0相似。與模式0的區(qū)別:計數(shù)位數(shù)不同。計數(shù)寄存器:THi(高8位)+ TLi(低8位)3、模式2與模式0、1的區(qū)別:1)計數(shù)位數(shù)不同; 2)初值自動重裝。計數(shù)寄存器:TLi(8位) 溢出時 TFiTHi(8位初值)4、模式3T0定時/計數(shù),而T1停止計數(shù),但可作波特率發(fā)生器。T0分成兩獨立定時/計數(shù)器TL0和TH0。TL0使用C/T、GATE、TR0、/INT0、TF0定時/計數(shù),TH0使用TR1、TF1 因此,只能用于定時。(展示投影膠片。)模式3時,T1可定時為模式0、1、2的
22、定時/計數(shù),但不可中斷,所以一般只作串口波特率發(fā)生器用。三、定時/計數(shù)器的應(yīng)用編程前確定參數(shù):(1)定時/計數(shù)器T0、T1選擇其一,(2)工作方式C/T及GATA,(3)計數(shù)初值加1計數(shù)、16位。FFFFH X=MN;M=213=8192(模式0) N X M=216=65536(模式1) X M M=28=256 (模式2、模式3)0000H(4)工作模式M1、M0實驗步驟:、在KEIL C環(huán)境下建立一個工程項目、編寫代碼,設(shè)置EA、TCON、IP等寄存器、編寫中斷函數(shù)、編譯并連接,處理出現(xiàn)的錯誤保證調(diào)試通過。、利用實驗項目1、2學(xué)到的知識調(diào)試,可以使用單步執(zhí)行和設(shè)置斷點等方式。、調(diào)試時須打
23、開調(diào)試端口,使用鍵盤LED仿真板。、利用實驗項目3中學(xué)到的知識同proteus軟件觀察實驗結(jié)果。完成實驗程序:5、P0接8個LED,使8個LED閃爍。當(dāng)奇數(shù)次按下INT0的按鈕時,8個LED每次同時點亮4個,點亮3次,即D0D3與D4D7交叉點亮3次。偶數(shù)次按下INT0的按鈕時,則D0D7進(jìn)行左移和右移2次。當(dāng)按下INT1的按鈕時,產(chǎn)生報警(INT1優(yōu)先)。6、教材P188,使用查詢和中斷方式實現(xiàn)方波的設(shè)置。觀察實驗結(jié)果,各寄存器的變化。本次實驗可以使用軟件仿真硬件插件dpj.dll和ledkey.dll進(jìn)行仿真,并利用proteus軟件觀察實驗結(jié)果。前面實驗項目3中,已經(jīng)介紹了dpj.dll
24、、ledkey.dll和proteus軟件的使用方法。實驗項目6:基于單片機(jī)的行列式鍵盤操作實驗實驗?zāi)康模?、掌握AT89C51與行列式鍵盤的接口技術(shù)。2、使用proteus軟件仿真鍵盤掃描程序,深刻理解鍵盤掃描程序的含義。實驗平臺:Windows XP 操作系統(tǒng)、Keil c 開發(fā)軟件、proteus軟件主要實驗內(nèi)容:一、根據(jù)行列式鍵盤的設(shè)計原理,編寫鍵盤掃描程序。二、調(diào)試代碼、編寫實驗報告。本實驗知識要點:一、鍵盤輸入過程: 1、 CPU判斷是否有鍵按下 2 、確定按下是哪個鍵 3、 此鍵代表的信息翻譯成機(jī)器識別的代碼 二、掃描程序查詢過程: 1 、行輸出全為0,無鍵按下,列輸出全為1,
25、掃描碼:F0H2 、有鍵按下,P14-P17輸出非全1,檢查按鍵所在位置 3 、逐行掃描,讀出列值4 、對得到的行號和列號譯碼,得到鍵值 5 、消除除鍵的抖動 實驗步驟:1、在KEIL C環(huán)境下建立一個工程項目。2、編寫代碼,編譯并連接,處理出現(xiàn)的錯誤保證調(diào)試通過。3、利用實驗項目3中學(xué)到的知識同proteus軟件觀察實驗結(jié)果。完成實驗程序:7、教材P269鍵盤掃描程序。實驗項目7:雙機(jī)串行通信實驗?zāi)康模?、掌握AT89C51雙機(jī)通信的基本原理。2、實現(xiàn)實現(xiàn)兩片AT89C51之間的通信,甲機(jī)將數(shù)據(jù)發(fā)送到乙機(jī)并顯示出來。使用proteus軟件仿真程序,深刻理解雙機(jī)通信的作用。實驗平臺:Windo
26、ws XP 操作系統(tǒng)、Keil c 開發(fā)軟件、proteus軟件主要實驗內(nèi)容:一、根據(jù)雙機(jī)通信原理,編寫雙機(jī)通信程序。二、調(diào)試代碼、編寫實驗報告。本實驗知識要點:在串行通信中,數(shù)據(jù)是在兩個站之間傳送的。按照數(shù)據(jù)傳送方向,串行通信可分為三種制式:單工制式(Simplex)、半雙工制式(Half duplex)、全雙工制式(Full duplex)。其中,單工制式是指甲乙雙方通信只能單向傳送數(shù)據(jù)。半雙工制式是指通信雙方都具有發(fā)送器和接收器,雙方既可發(fā)送也可接收,但接收和發(fā)送不能同時進(jìn)行,即發(fā)送時就不能接收,接收時就不能發(fā)送。全雙工制式是指通信雙方均設(shè)有發(fā)送器和接收器,并且將信道劃分為發(fā)送信道和接收
27、信道,兩端數(shù)據(jù)允許同時收發(fā),因此通信效率比前兩種高。 AT89C51內(nèi)部有一個可編程全雙工串行通信接口。該部件不僅能同時進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個同步移位寄存器使用。下面將對其內(nèi)部結(jié)構(gòu)、工作方式以及波特率進(jìn)行介紹。(1)數(shù)據(jù)緩沖器(SBUF) SBUF是串行口緩沖寄存器,包括發(fā)送寄存器和接收寄存器,以便能以全雙工方式進(jìn)行通信。此外,在接收寄存器之前還有移位寄存器,從而構(gòu)成了串行接收的雙緩沖結(jié)構(gòu),這樣可以避免在數(shù)據(jù)接收過程中出現(xiàn)幀重疊錯誤。發(fā)送數(shù)據(jù)時,由于CPU是主動的,不會發(fā)生幀重疊錯誤,因此發(fā)送電路不需要雙重緩沖結(jié)構(gòu)。在邏輯上,SBUF只有一個,它既表示發(fā)送寄存器,又表示接收寄存器,
28、具有同一個單元地址99H。但在物理結(jié)構(gòu)上,則有兩個完全獨立的SBUF,一個是發(fā)送緩沖寄存器SBUF,另一個是接收緩沖寄存器SBUF。如果CPU寫SBUF,數(shù)據(jù)就會被送入發(fā)送寄存器準(zhǔn)備發(fā)送;如果CPU讀SBUF,則讀入的數(shù)據(jù)一定來自接收緩沖器。即CPU對SBUF的讀寫,實際上是分別訪問上述兩個不同的寄存器。(2)串行控制寄存器(PCON)串行控制寄存器SCON用于設(shè)置串行口的工作方式、監(jiān)視串行口的工作狀態(tài)、控制發(fā)送與接收的狀態(tài)等。它是一個既可以字節(jié)尋址又可以位尋址的8位特殊功能寄存器。SCON用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:表1 寄存器收發(fā)控制及狀態(tài)指示表SM0SM1S
29、M2RENTB8RB8TIRISM0 SM1:串行口工作方式選擇位。這兩位組合成00、01、10、11對應(yīng)于工作方式0、1、2、3。串行接口工作方式特點見下表。表2 串口工作方式表SM0SM1工作方式功能波特率0008位同步移位寄存器f/1201110位異步串行通信(UART)可變(T1溢出率*2SMOD/32)10211位異步串行通信(UART)fORC/64或fORC/3211311位異步串行通信(UART)可變(T1溢出率*2SMOD/32)SM2:多機(jī)通信控制位。REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。TB8:方式2或3時,TB8為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件
30、置1或清0。RB9:在方式2或3時,RB8位接收到的第9位數(shù)據(jù),實際為主機(jī)發(fā)送的第9位數(shù)據(jù)TB8,使從機(jī)根據(jù)這一位來判斷主機(jī)發(fā)送的時呼叫地址還是要傳送的數(shù)據(jù)。TI:發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。注意:TI在任何工作方式下都必須由軟件清0。RI:接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。(3)輸入移位寄存器接收的數(shù)據(jù)先串行進(jìn)入輸入移位寄存器,8位數(shù)據(jù)全移入后,再并行送入接收SBUF中。(4)波特率發(fā)生器波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機(jī)用定時器T1作為波特率發(fā)生器,T
31、1設(shè)置在定時方式。波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。(5)電源控制寄存器PCON(其最高位為SMOD)(6)波特率計算波特率(band rate)是異步通信中每秒鐘傳送的二進(jìn)制數(shù)碼的位數(shù)(比特數(shù)),單位是位/秒。波特率有以下兩種作用:1)反映串行通信的速率;2)反映對傳輸通道的要求:波特率越高,要求的傳輸通道的頻帶寬度就越寬異步通信:波特率為每秒傳送的字符數(shù)和每個字符位數(shù)的乘積。AT89C51串行通信共有4種工作方式,它們分別是方式0、方式1、方式2和方式3,由串行控制寄存器SCON中的SM0 SM1決定。本設(shè)計用串行口方式1收發(fā)程序,實現(xiàn)兩片AT8
32、9C51之間的通信。(1)方式1發(fā)送 方式1輸出時,數(shù)據(jù)由TXD輸出,一幀信息為10位,1位起始位0,8位數(shù)據(jù)位(先低位)和1位停止位1。當(dāng)執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。發(fā)送開始時,內(nèi)部發(fā)送控制信號變?yōu)橛行?。將起始位向TXD輸出,此后,每經(jīng)過一個TX時鐘周期,便產(chǎn)生一個移位脈沖,并由TXD輸出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置“1” TI。(2)方式1接收 數(shù)據(jù)從RXD(P3.0)腳輸入。當(dāng)檢測到起始位的負(fù)跳變時,開始接收數(shù)據(jù)。定時控制信號有兩種):接收移位時鐘(RX時鐘,頻率和波特率相同)和位檢測器采樣脈沖(頻率是RX時鐘的16倍,1位數(shù)據(jù)期間,有16個采樣脈沖)
33、,當(dāng)采樣到RXD端從1到0的跳變時就啟動檢測器,接收的值是3次連續(xù)采樣(第7、8、9個脈沖時采樣)進(jìn)行表決以確認(rèn)是否是真正的起始位(負(fù)跳變)的開始。當(dāng)一幀數(shù)據(jù)接收完,須同時滿足兩個條件,接收才真正有效。1) RI=0,即上一幀數(shù)據(jù)接收完成時,RI=1發(fā)出的中斷請求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說明“接收SBUF”已空。2) SM2=0或收到的停止位=1(方式1時,停止位已進(jìn)入RB8),則收到的數(shù)據(jù)裝入SBUF和RB8(RB8裝入停止位),且置“1”中斷標(biāo)志RI。若這兩個條件不同時滿足,收到的數(shù)據(jù)將丟失。實驗步驟:1、在KEIL C環(huán)境下建立一個工程項目。2、編寫代碼,編譯并連接,處理出現(xiàn)
34、的錯誤保證調(diào)試通過。3、利用實驗項目3中學(xué)到的知識同proteus軟件觀察實驗結(jié)果。完成實驗程序:8、用兩塊AT89C51模擬甲機(jī)和乙機(jī),在甲機(jī)的P1口和指撥開關(guān)相連,通過調(diào)節(jié)指撥開關(guān)來輸入數(shù)據(jù),、然后把這個數(shù)據(jù)發(fā)出到乙機(jī)去。在乙機(jī)里,先通過RXD口讀取指撥數(shù)據(jù),然后P1口通過總線傳導(dǎo)各LED燈,P1一共有8個引腳,每個引腳對應(yīng)一個燈(可以考慮中斷和查詢兩種方法)。實驗項目8:系統(tǒng)軟件包、第三方應(yīng)用程序包應(yīng)用 - RTX51-Tiny實時操作系統(tǒng)實驗?zāi)康?1、掌握RTX51-Tiny實時操作系統(tǒng)調(diào)度機(jī)制2、掌握軟件開發(fā)及調(diào)試平臺的搭建方法3、通過os_wait函數(shù)的學(xué)習(xí),能基本使用RTX51-
35、Tiny完成簡單的程序設(shè)計。實驗平臺:Windows XP 操作系統(tǒng)、Keil c 開發(fā)軟件主要實驗內(nèi)容:一、了解并掌握RTX51-Tiny的基本使用方法,特別是掌握os_wait函數(shù)的使用。二、能夠搭建RTX51-Tiny的開發(fā)平臺。三、編寫實驗報告分析實驗現(xiàn)象。本實驗知識背景:RTX51是一個用于8051系列處理器多任務(wù)實時操作系統(tǒng),RTX51可以簡化那些復(fù)雜而且時間要求嚴(yán)格的工程的軟件設(shè)計工作。有二個不同的RTX51版本可以利用:RTX51 Full 使用四個任務(wù)優(yōu)先權(quán)完成同時存在時間片輪轉(zhuǎn)調(diào)度和搶先的任務(wù)切換, RTX51工作在與中斷功能相似的狀態(tài)下,信號和信息可以通過郵箱系統(tǒng)在任務(wù)之
36、間互相傳遞,你可以從一存儲池中分配和釋放內(nèi)存,你可以強(qiáng)迫一個任務(wù)等待中斷超時或者是從另一個任務(wù)或中斷發(fā)出的信號或信息。RTX51 Tiny 是一個 RTX51的子集它可以很容易地在沒有任何外部存儲器的單片8051系統(tǒng)上運轉(zhuǎn),除了下列例外RTX51 Tiny支持許多在RTX51中的特征,RTX51 Tiny僅支持時間片輪轉(zhuǎn)任務(wù)切換和使用信號進(jìn)行任務(wù)切換不支持搶先式的任務(wù)切換,不包括消息歷程,沒有存儲器池分配程序。許多微處理器應(yīng)用程序要求同時執(zhí)行兩個工作或任務(wù). 對于這樣的應(yīng)用程序一個實時操作系統(tǒng)RTOS 允許靈活的分配系統(tǒng)資源中央處理器存儲器等等.)給各個任務(wù) RTX51是一個很好使用的強(qiáng)大的實
37、時操作系統(tǒng) RTX51可以運行于所有的8051派生機(jī)型??梢允褂脴?biāo)準(zhǔn) C語言編寫和編譯一個程序或使用 C51構(gòu)造編譯他們 僅在指定任務(wù)標(biāo)識符和優(yōu)先權(quán)上有一點差別. RTX51程序也要求你載運程序中用include命令引入實施管理的頭文件并使用 BL51 linker/locator進(jìn)行連接和選擇適當(dāng)?shù)?RTX51庫文件。單任務(wù)程序一個標(biāo)準(zhǔn)的 C語言程序從主函數(shù)開始執(zhí)行,在一嵌入式應(yīng)用中,主函數(shù)通常是一段無限循環(huán)的代碼可以認(rèn)為是一個連續(xù)執(zhí)行的單獨任務(wù)。例如int counter;void main (void) counter = 0;while (1) /* 始終重復(fù) */counter+;
38、/* 計數(shù)器加1 */時間片輪轉(zhuǎn)程序更高級的 C語言程序可以在不使用實時操作系統(tǒng)的情況下實現(xiàn)時間片輪轉(zhuǎn)擬多任務(wù)系統(tǒng),在這種系統(tǒng)中任務(wù)或功能被一段無限循環(huán)程序重復(fù)調(diào)用。例如int counter;void main (void) counter = 0;while (1) /* 始終重復(fù) */check_serial_io ();process_serial_cmds (); /* 處理串行輸入 */check_kbd_io ();process_kbd_cmds (); /* process keyboard input */adjust_ctrlr_parms (); /* adjust t
39、he controller */counter+; /* increment counter */用 R T X 5 1 進(jìn)行時間片輪轉(zhuǎn)調(diào)度rtx51也能完成時間片輪轉(zhuǎn)多重任務(wù)而且允許準(zhǔn)并行執(zhí)行多個無限循環(huán)或任務(wù),任務(wù)并不是并行執(zhí)行的而是按時間片執(zhí)行的??衫玫闹醒胩幚砥鲿r間被分成時間片由 RTX51分配一個時間片給每個任務(wù),每個任務(wù)允許執(zhí)行一個預(yù)先確定的時間,然后rtx51切換到另一準(zhǔn)備運行的任務(wù)并且允許這個任務(wù)執(zhí)行片刻,時間片非常段通常為幾個毫秒,因此它表現(xiàn)得如同各個任務(wù)是同時地執(zhí)行的。RTX51使用一個8051硬件計時器中斷作為定時程序。產(chǎn)生的周期性中斷用于驅(qū)動 RTX51時鐘,RTX5
40、1不需要在你的程序中擁有一個主函數(shù),它將自動開始執(zhí)行任務(wù) 0 如果你確實有一個主函數(shù)你必須利用 RTX51 Tiny中的 os_create_task函數(shù)或RTX51中的 os_start_system函數(shù)手工啟動 RTX51。下列例子顯示一個只使用時間片輪轉(zhuǎn)任務(wù)調(diào)度的簡單的 RTX51應(yīng)用程序 在本程序里的二個任務(wù)是簡單計數(shù)器回路 rtx51開始執(zhí)行函數(shù)名為 job0的任務(wù) 0 這些功能添加了另一個叫做 job1任務(wù) 在 job0運行一會兒以后RTX51切換到 job1 在 job0運行一會兒以后RTX51轉(zhuǎn)回到j(luò)ob0 這個過程將不確定地重復(fù)下去。#include <rtx51tny
41、.h>int counter0;int counter1;void job0 (void) _task_ 0 os_create (1); /* mark task 1 as ready */while (1) /* loop forever */counter0+; /* update the counter */void job1 (void) _task_ 1 while (1) /* loop forever */counter1+; /* update the counter */R T X 5 1 事件即使是在等待一個任務(wù)的時間片到達(dá)時,你也可以使用 os_wait函數(shù)通知
42、RTX51它可以讓另一個任務(wù)開始執(zhí)行,這個功能中止正在運行的當(dāng)前任務(wù),然后等待一指定事件的發(fā)生在這個時候任意數(shù)量的其他任務(wù)仍可以執(zhí)行。使用 R T X 5 1 的時間溢出事件你可以用 os_wait函數(shù)等待的最簡單的事件是事件溢出 RTX51時鐘報時信號周期,這類事件可被用于任務(wù)中需要延遲一段時間的地方,這可用于查詢一個開關(guān)狀態(tài)的代碼中。在這樣的條件下,只須每隔 50ms左右查詢一次開關(guān)下一個例子技術(shù)示范你可以在允許其他的任務(wù)執(zhí)行的時候使用。os_wait功能延遲任務(wù)的執(zhí)行#include <rtx51tny.h>int counter0;int counter1;void job
43、0 (void) _task_ 0 os_create (1); /* mark task 1 as ready */while (1) /* loop forever */counter0+; /* update the counter */os_wait (K_TMO, 3); /* pause for 3 clock ticks */void job1 (void) _task_ 1 while (1) /* loop forever */counter1+; /* update the counter */os_wait (K_TMO, 5); /* pause for 5 clock ticks */在上面的例子中job0像前面敘述的一樣啟動 job1,然后在增加 counter0計數(shù)以后job0呼叫 os_wait函數(shù)以暫停個時鐘報時信號,這時rtx51切換到下一個任務(wù) job1 在 job1增加counter1計數(shù)以后它也調(diào)用 os_wait以暫停個時鐘報時信號,現(xiàn)在rtx51沒有其他的任務(wù)需要執(zhí)行,因此在它可以延續(xù)執(zhí)行 job0之前它進(jìn)入一個空循環(huán)等待個時鐘報時信號過去。本例子的結(jié)果是 counter0每個時鐘報時周期
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年棄土協(xié)議合同-棄土處理與循環(huán)經(jīng)濟(jì)發(fā)展合作協(xié)議3篇
- 二零二五年度總經(jīng)理企業(yè)社會責(zé)任戰(zhàn)略聘用合同3篇
- 二零二五年度手叉車轉(zhuǎn)讓與技術(shù)創(chuàng)新支持合同2篇
- 二零二五年度綠色能源投資借款合同3篇
- 2025年度建筑腳手架租賃與智能化施工現(xiàn)場解決方案合同3篇
- 2025年度農(nóng)業(yè)科技異業(yè)合作項目合同3篇
- 2024糧油采購合同模板
- 二零二五年度合作社攝影師聘用合同范本3篇
- 《保安教材》課件
- 《企業(yè)經(jīng)營診斷系統(tǒng)》課件
- 子宮內(nèi)膜間質(zhì)肉瘤的畫像組學(xué)研究
- 物理化學(xué)英語詞匯
- 山東省沂南縣2024屆八年級物理第二學(xué)期期末經(jīng)典模擬試題含解析
- MOOC 概率統(tǒng)計和隨機(jī)過程-南京郵電大學(xué) 中國大學(xué)慕課答案
- 北師大版七年級數(shù)學(xué)上冊 期末重難點真題特訓(xùn)之易錯必刷題型(96題32個考點)(原卷版+解析)
- 2023年公路養(yǎng)護(hù)工知識考試題庫附答案
- 高警示(高危)藥品考試試題與答案
- 42山東省棗莊市薛城區(qū)2023-2024學(xué)年七年級上學(xué)期期末考試生物試題
- 部編版六年級語文下冊第三單元大單元教學(xué)設(shè)計
- 前端組長述職報告
- 食品安全企業(yè)標(biāo)準(zhǔn)模板
評論
0/150
提交評論