第19章-單片機應用系統(tǒng)設計課件_第1頁
第19章-單片機應用系統(tǒng)設計課件_第2頁
第19章-單片機應用系統(tǒng)設計課件_第3頁
第19章-單片機應用系統(tǒng)設計課件_第4頁
第19章-單片機應用系統(tǒng)設計課件_第5頁
已閱讀5頁,還剩165頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第19章單片機應用系統(tǒng)設計19.1軟件編譯與調試19.2十字路口交通燈模擬控制器設計19.3單片機與PC機的串口通訊設計19.4語音報站系統(tǒng)設計第19章單片機應用系統(tǒng)設計19.1軟件編譯與調試119.1軟件編譯與調試19.1.1WAVE600的使用1.建立新程序1)選擇菜單:文件|新建文件,如圖19-1所示。2)在出現的源程序窗口中輸入所需編寫的程序,如圖19-2所示。3)保存程序,選擇菜單[文件|保存文件],保存時文件名稱必須帶上后綴名“.ASM”,如圖19-3所示。4)建立新項目,選擇菜單:文件|新建項目,如圖19-4所示。5)在彈出的窗口中,加入模塊文件,選擇剛才保存的文件jtxhd.asm,如圖19-5所示。下一頁返回19.1軟件編譯與調試19.1.1WAVE600的219.1軟件編譯與調試6)加入包含文件,若沒有包含文件,則可按取消鍵,此處按取消鍵。如圖19-6所示。7)保存項目。在保存項目對話框中輸入項目名稱,注意此處無須添加后綴名,軟件會自動將后綴名設成“.PRJ”。按保存鍵將項目存在與你的源程序相同的文件夾下。如圖19-7所示。2.調試程序1)仿真器設置,選擇菜單:設置|仿真器設置,在彈出的“仿真器設置”對話框中,按圖19-8設置,選擇“使用偉福軟件模擬器”。點擊“好”“好”結束仿真器設置。上一頁下一頁返回19.1軟件編譯與調試6)加入包含文件,若沒有包含文件,則319.1軟件編譯與調試2)雙擊項目中JTXHD.ASM文件,選擇菜單:項目|編譯,出現編譯信息見圖19-9。3)點擊,或按F8,程序單步執(zhí)行。即按一次執(zhí)行一條指令。其他執(zhí)行方法見圖19-10。4)在所需設置斷點的指令上右鍵設置斷點,如圖19-11所示。設置斷點的目的是使程序執(zhí)行到該處,達到調試程序的目的。5)查看結果,選擇菜單:窗口|數據窗口|DATA,如圖19-12、圖19-13,其他窗口見圖19-14所示。上一頁下一頁返回19.1軟件編譯與調試2)雙擊項目中JTXHD.ASM文件419.1軟件編譯與調試19.1.2KeilC的使用1.建立工程1)新建工程。點擊Project菜單,選擇彈出的下拉式菜單中的NewProject如圖19-15。接著彈出一個名為“CreateNewProject”的對話框,如圖19-16,先選擇一個合適的文件夾準備來存放工程文件,如“C51”是新建的文件夾。在“文件名”中輸入您的第一個程序項目名稱,這里我們用“test”,“保存”后的文件擴展名為uv2,這是KEILuVision2項目文件擴展名。2)選擇單片機:KeilC51提示選擇CPU器件。在這里我們選擇Atmel公司的AT89S51。此時屏幕如圖19-17所示。一個空的KeilC51工程建立完畢。上一頁下一頁返回19.1軟件編譯與調試19.1.2KeilC的使用519.1軟件編譯與調試3)首先我們要在項目中創(chuàng)建新的程序文件或加入舊程序文件。點擊圖19-18中1的新建文件的快捷按鈕,在2中出現一個名為“Textn”(其中n表示序號)的文檔,或通過菜單File-New或快捷鍵Ctrl+N來實現。點擊圖19-18中的3保存新建的程序,也可以用菜單File|Save或快捷鍵Ctrl+S進行保存。因是新文件所以保存時會彈出如圖19-19的文件操作窗口,我們把第一個匯編語言編寫的程序命名為test1.asm,保存在項目所在的目錄中。注意:擴展名“.asm”不可省略。上一頁下一頁返回19.1軟件編譯與調試3)首先我們要在項目中創(chuàng)建新的程序文619.1軟件編譯與調試4)添加源程序文件到工程中?,F在,一個空的源程序文件“test1.asm”已經建立,但是這個文件與剛才新建的工程之間并沒有什么內在聯系。我們需要把它添加到工程中去。單擊KeilC51軟件左邊項目工作窗口“Target1”上的“+”,將其展開。然后右擊“SourceGroup1”文件夾,會彈出如圖19-20所示的選擇菜單。單擊其中的“AddFilestoGroup‘SourceGroup1’”項,將彈出如圖19-21所示的對話框。請在文件類型下拉列表中選擇Asmsourcefile源文件,再選擇剛剛保存的文件“test1.asm”,按ADD按鈕(請不要多次點擊“Add”按鈕),最后按“Close”按鈕,程序文件已加到項目中了。這時可以點擊SourceGroup1文件夾圖標左邊的“+”展開后查看。5)輸入程序(略)上一頁下一頁返回19.1軟件編譯與調試4)添加源程序文件到工程中。現在,一719.1軟件編譯與調試6)單擊KeilC51工具欄的“”圖標,彈出名為“OptionsforTarget‘Target1’”的對話框。單擊“Output”標簽頁,選中“CreateHEXFile”項,然后“確定”。參見圖19-22。7)編譯程序圖19-23中1、2、3都是編譯按鈕,不同是1是用于編譯單個文件;2是編譯當前項目,如果先前編譯過一次之后文件沒有做動編輯改動,這時再點擊是不會再次重新編譯的;3是重新編譯,每點擊一次均會再次編譯鏈接一次,不管程序是否有改動。在3右邊的是停止編譯按鈕,只有點擊了前三個中的任一個,停止按鈕才會生效。上一頁下一頁返回19.1軟件編譯與調試6)單擊KeilC51工具欄的“819.1軟件編譯與調試8)編譯后的結果會生成IntelHEX格式的程序文件“test1.hex”,如圖19-24。該文件可以被專門的芯片燒寫工具(例如Top2004編程器)載入并最終燒錄到具體的芯片中。芯片安裝到自己的電路板上,通電,就可以運行里面的程序了。2.調試程序1)進入仿真狀態(tài)如果程序編譯通過,就可以仿真了。在仿真之前,有一項參數最好配置一下,仍然按“”圖標進入編譯環(huán)境設置,如圖19-25,找到“target”下的“Xtal(MHz)”項,填入合適的晶振頻率,比如12。最后點擊“確定”。進入仿真狀態(tài)很簡單,直接點擊工具欄紅色的“”圖標。上一頁下一頁返回19.1軟件編譯與調試8)編譯后的結果會生成IntelH919.1軟件編譯與調試2)仿真窗口(1)源程序窗口KeilC51調試界面的中間是源程序窗口。黃色箭頭“”所指為當前即將執(zhí)行的代碼。以深灰色標記的程序行是可以執(zhí)行的代碼(當然,在調試過程中未必一定要去執(zhí)行)。以淺灰色標記的程序行不可作為代碼來執(zhí)行,它們是注釋、空行、標號或ROM數據表。以綠色標記的程序行表示曾經執(zhí)行過的代碼。如圖19-26所示。上一頁下一頁返回19.1軟件編譯與調試2)仿真窗口上一頁下一頁返回1019.1軟件編譯與調試(2)寄存器窗口KeilC51調試界面的左邊是寄存器窗口。8051的工作寄存器(R0~R7)和系統(tǒng)寄存器(a、b、sp、dptr、PC、psw)都列出來了。Value欄顯示的是寄存器的當前數值。如果在調試過程中某個寄存器的值有變化,則會用藍色的背景標記。單擊psw寄存器左邊的“+”,展開后還可以看到其每一位的情況。(3)匯編窗口單擊工具欄的“”圖標,源程序窗口會自動切換成匯編窗口。在匯編窗口里,我們可以看到每條指令的存儲地址和編碼等信息。再次單擊“”,回到源程序窗口。上一頁下一頁返回19.1軟件編譯與調試(2)寄存器窗口上一頁下一頁返回1119.1軟件編譯與調試(4)存儲器窗口單擊工具欄的“”圖標,將顯示出存儲器窗口。51單片機的存儲器分為多個不同的存儲空間,如果要觀察代碼存儲器,就在地址欄“Address:”內輸入“C:地址”,例如:C:0080H;如果要觀察外部數據存儲器,就輸入“X:地址”;如果要觀察內部數據存儲器,則可以輸入“I:地址”。拖動存儲器窗口右邊的滾動條還可以觀察輸入地址附近的存儲單元。存儲器窗口有“Memory#1~Memory#4”共4個觀察子窗,您可以用來分別觀察代碼存儲器、內部數據存儲器和外部數據存儲器。存儲器的內容是可以修改的。用鼠標右擊打算要修改的存儲單元,選擇“ModifyMemoryat…”項,彈出修改對話框,可以隨意修改存儲單元的內容。上一頁下一頁返回19.1軟件編譯與調試(4)存儲器窗口上一頁下一頁返回1219.1軟件編譯與調試(5)變量觀察和堆棧窗口單擊工具欄的“”圖標,將顯示變量觀察和堆棧窗口(Watch&CallStackWindow)。在Locals標簽頁,會自動顯示局部變量的名稱和數值。在C語言程序的函數中,每一對花括號“{}”內定義變量都是局部變量,能夠自動顯示。在“Watch”標簽頁內,先用鼠標點擊一次“typeF2toedit”,再按功能鍵“F2”,輸入所要觀察的局部或全局變量的名稱,回車后就能顯示出當前數值。在“CallStack”標簽頁內,可以實時地觀察到堆棧的使用情況。上一頁下一頁返回19.1軟件編譯與調試(5)變量觀察和堆棧窗口上一頁下一頁1319.1軟件編譯與調試3)程序的運行控制KeilC51能夠實現程序單步和全速運行,具體由工具欄上的按鈕來實現:(1)復位按鈕“”:單擊此圖標,能夠使程序復位,程序將從地址C:0000H處執(zhí)行。(2)全速運行“”:單擊此圖標,能夠使程序全速運行。(3)停止運行“”:該圖標原來是灰色(不可操作),在進入全速運行狀態(tài)后會變成紅色。如果要停下來,則可以按此圖標。上一頁下一頁返回19.1軟件編譯與調試3)程序的運行控制上一頁下一頁返回1419.1軟件編譯與調試(4)單步進入“”:按此圖標可以實現程序的單步執(zhí)行。在遇到函數調用時,會跟蹤進入函數體。(5)單步跳過“”:也是單步執(zhí)行,但是遇到函數時,視作“1條指令”來執(zhí)行,不會跟蹤進入。(6)單步跳出“”:在調試程序時,如果希望從某個函數中提前返回,則可以按此圖標。上一頁下一頁返回19.1軟件編譯與調試(4)單步進入“”:按此圖1519.1軟件編譯與調試(7)執(zhí)行到光標“”:用鼠標單擊某條可執(zhí)行的代碼(深灰色標記的程序行)。然后按此圖標,則程序開始全速執(zhí)行,當遇到光標所在的行時,會自動停下來。如果單擊不可執(zhí)行的程序行(有淺灰色標記),試圖讓程序執(zhí)行到該行,是不允許的,“”圖標也會立即變成灰色,不讓你操作。上一頁下一頁返回19.1軟件編譯與調試(7)執(zhí)行到光標“”:用1619.1軟件編譯與調試(8)設置/清除斷點“”:KeilC51支持斷點設置功能。單擊需要設置斷點的行,再單擊此圖標,我們會看到該行被一個紅色的小方塊標記。當程序全速運行時遇到斷點,便會自動停下來。KeilC51允許在同一個程序里設置多個斷點。清除某個斷點的方法是,將光標停在該行上,再按一次“”圖標。另外一種設置/清除斷點的快捷方法是,用鼠標在目標程序行的空白處雙擊,您不妨試一試。(9)清除所有斷點“”:如果設置了多個斷點,想一并清除,則可以按此圖標。上一頁下一頁返回19.1軟件編譯與調試(8)設置/清除斷點“”1719.1軟件編譯與調試4)外圍設備訪問KeilC51的一大特色是在仿真調試時支持對外圍設備的訪問。單擊菜單“Peripherals”,會彈出外圍設備菜單。在Peripherals菜單里列出了標準51的外圍設備(相對于CPU內核而言):中斷、I/O端口、串行口和定時器等?,F在執(zhí)行菜單“Peripherals|I/O-Ports|Port1”,彈出P1端口的界面見圖19-27。在位0~7中,用√表示高電平,無√表示低電平。執(zhí)行菜單“Peripherals|Timer|Timer0”,彈出定時器T0的界面。參見圖19-28。上一頁下一頁返回19.1軟件編譯與調試4)外圍設備訪問上一頁下一頁返回1819.1軟件編譯與調試單擊開啟\關閉調試模式按鈕,我們使用Peripherals菜單

選擇I/O-Ports

P1,打開P1調試窗口,再按運行鍵,這時就可以看到P1中不斷循環(huán)狀態(tài),空為“0”,打鉤為“1”。如圖19-29。要停止程序運行回到文件編輯模式中,就要先按停止按鈕,再按開啟\關閉調試模式按鈕。19.1.3TOP2004通用USB編程器的使用TOP2004通用編程器(圖19-30)直接采用USB接口通訊和供電,可以工作在Win98SE/Me/2000/XP操作系統(tǒng),無須外接電源,編程速度快,支持2.5V~6.5V器件,軟件升級靈活。上一頁下一頁返回19.1軟件編譯與調試單擊開啟\關閉調試模式按鈕,我們使用1919.1軟件編譯與調試1.編程器軟件的安裝1)請務必斷開編程器,不要連接編程器2)運行配套光盤中TOPWIN目錄內的SETUP.EXE文件,按照提示進行安裝3)最后按“確認”重啟電腦4)電腦重啟完成后,用配套的USB電纜連接編程器,電腦會提示“找到新硬件”按照提示自動搜索軟件,一直完成USB初始化安裝5)光盤中TOPWIN10.EXE是中文界面的編程器軟件,可以進行安裝上一頁下一頁返回19.1軟件編譯與調試1.編程器軟件的安裝上一頁下一頁返回2019.1軟件編譯與調試6)運行“開始-程序-TOPWIN”軟件會出現“正在初始化USB接口,需要3~10秒”的界面,隨后進入專用編程軟件7)如果因為安裝次序不正確引起的或者其他原因造成安裝失敗,可以點擊:我的電腦-右鍵“屬性”-硬件-設備管理器-JUNGO中有黃色感嘆號的選中按DEL刪除,然后再重復以上1~6步驟即可。8)編程器的專用軟件界面見圖19-31.2.讀寫芯片的步驟1)將51芯片插入插座,注意方向上一頁下一頁返回19.1軟件編譯與調試6)運行“開始-程序-TOPWIN”2119.1軟件編譯與調試2)運行編程器軟件3)型號

選擇ATMEL

89S514)讀寫

擦除

顯示正常結束5)讀寫

讀器件

工作區(qū)顯示全FF

退出6)裝載

選擇文件(*.hex)

在工作區(qū)顯示裝載的文件的十六進制代碼7)讀寫

寫器件

顯示寫入完成

退出8)完成,取出芯片,放入實驗板驗證。上一頁返回19.1軟件編譯與調試2)運行編程器軟件上一頁返回2219.2十字路口交通燈模擬控制器設計19.2.1電路設計要求某十字路口,如下圖19-32所示,設計一個十字路口交通燈信號控制器,指揮交通車的通行。要求如下:1.東西通道和南北通道交替通行,東西通道每次放行30秒,南北通道每次放行20秒。2.綠燈亮表示可以通行,紅燈亮表示禁止通行。3.每次綠燈變紅燈時,黃燈先亮5秒(此時另一干道上的紅燈不變)。4.十字路口要有數字顯示,作為時間提示,以便人們更直觀地把握時間。具體要求東西通道、南北通道通行時間及黃燈亮的時間均以秒為單位作減計數。5.在黃燈亮時,原紅燈按1Hz的頻率閃爍。下一頁返回19.2十字路口交通燈模擬控制器設計19.2.1電路設2319.2十字路口交通燈模擬控制器設計19.2.2電路設計目的熟悉單片機控制功能熟悉單片機定時功能、工作方式、定時器中斷、外中斷、串口工作方式熟悉顯示數字的方法熟練字型碼的用法19.2.3硬件電路設計及工作原理1.電路設計根據電路設計要求,設計出圖19-33所示電路。上一頁下一頁返回19.2十字路口交通燈模擬控制器設計19.2.2電路設2419.2十字路口交通燈模擬控制器設計2.電路原理該控制器采用AT89S51芯片作為主控芯片,利用P1口控制驅動芯片74LS240(八反相緩沖器/線驅動器/線接收器三態(tài)門)驅動發(fā)光二極管LED模擬來實際交通燈。倒計時顯示部分利用單片機的串行口實現。串行口工作在方式0時,通過外接移位寄存器74LS164實現串并轉換。需要顯示的數據經RXD端輸出,經過74LS164串并轉換輸出到共陽極的LED數碼顯示管顯示。利用T0定時器進行1秒定時。根據需要設計外圍電路與單片機接口。1)相關知識一:AT89S51一般教科書以AT89C51講述的較多,而AT89S51可與AT89C51兼容,相同的部分本書就不加以詳細講述,這里主要介紹一下兩者不同點。上一頁下一頁返回19.2十字路口交通燈模擬控制器設計2.電路原理上一頁下2519.2十字路口交通燈模擬控制器設計(1)89S51與89C51的不同之處(2)89S51相對于89C51增加的新功能2)相關知識二:74LS2407LS240內部結構及引腳圖見圖19-34,74LS240的真值表見表19-1,管腳使能見表19-2.74LS240輸入和輸出內部電路結構:見圖19-35,由內部結構可以看出74LS240有較大的驅動能力。3)相關知識三:74LS164本例采用74LS164把串行口逐位輸出的數據進行串并轉換進而控制LED的顯示。74LS164的封裝如下圖19-36所示,圖19-37為74LS164內部邏輯圖,圖19-38為時序圖.上一頁下一頁返回19.2十字路口交通燈模擬控制器設計(1)89S51與892619.2十字路口交通燈模擬控制器設計5)單片機最小系統(tǒng)原理如圖19-39所示。6)模擬交通燈驅動電路(圖19-40)DS1~DS3、DS4~DS6分別模擬東西方向和南北方向的兩組燈。7)紅黃綠燈時間顯示電路LED采用共陽極,利用510電阻限流,顯示的數據由串口提供,即串口工作在移位寄存器工作方式,并利用74LS164把逐位移出的數據轉化為八位并行輸出的數據,作為LED的字形碼。具體電路如圖19-41.上一頁下一頁返回19.2十字路口交通燈模擬控制器設計5)單片機最小系統(tǒng)原理2719.2十字路口交通燈模擬控制器設計19.2.4軟件設計1.利用定時器定時1S1)定時/計數器的四種工作方式工作方式0:定時/計數器的工作方式0稱之為13位定時/計數器方式。它由TL(0/1)的低5位和TH(0/1)的8位構成13位的計數器,此時TL(0/1)的高3位未用。工作方式2:在工作方式2中,只有低8位參與計數,而高8位是不參與計數的,用作預置數的存放,這樣計數范圍就小了.每當計數溢出,就會打開T0(或T1)的高、低8位之間的開關,預置數就進入低8位。上一頁下一頁返回19.2十字路口交通燈模擬控制器設計19.2.4軟件設2819.2十字路口交通燈模擬控制器設計工作方式3:在這種工作方式下,T0被拆成2個獨立的定時/計數器來用。其中,TL0可以構成8位的定時器或計數器工作方式;而TH0則只能作為定時器用。工作方式1:工作方式1是16位的定時/計數器方式,將TMOD的M1M0設為“01”即可,其它特性與工作方式0相同.2)定時1S十字路口交通燈模擬控制器定時器采用工作方式1,先定時125ms,然后在定時中斷程序中累加中斷次數,8次為一秒,這樣就可以起到定時1s的功能.上一頁下一頁返回19.2十字路口交通燈模擬控制器設計工作方式3:在這種工作2919.2十字路口交通燈模擬控制器設計十字路口交通燈模擬控制器設計采用6M晶振,因此定時125ms可用下列語句實現.工作方式方式1是16位計數結構的工作方式,計數器由TH0全部8位和TL0全部8位構成。當為定時工作方式時,定時時間計算公式為:(216-計數初值)×晶振周期×12或(216-計數初值)×機器周期當某單片機系統(tǒng)的外部晶振頻率為6MHz,則最小定時時間為:[216-(216-1)]×1/6×10-6×12=2×10-6=2(

s)最大定時時間為:(216-0)×1/6×10-6×12=131072×10-6(s)=131072(

s)≈131(ms)定時125ms則計數初值為216-125ms/2

s=3036=(0BDC)H上一頁下一頁返回19.2十字路口交通燈模擬控制器設計十字路口交通燈模擬控制3019.2十字路口交通燈模擬控制器設計所以初始化定時器T0工作于方式1,定時125MS的語句如下:MOVTMOD,#01MOVTH0,#3cHMOVTL0,#0b0H定時1S在定時器0中斷程序中完成,即計數八次為1S。定時器中斷初始化程序如下:SETBEA ;開中斷SETBET0 ;定時器0允許中斷 SETBTR0 ;開始定時定時器定時1S的中斷流程圖見圖19-43上一頁下一頁返回19.2十字路口交通燈模擬控制器設計所以初始化定時器T0工3119.2十字路口交通燈模擬控制器設計2.外中斷程序對于外中斷必須有中斷的初始化程序、中斷服務程序1)中斷的初始化步驟(1)要使用中斷則首先必須中斷允許。(2)硬件的初始化:設置引腳連接設置I/O口的輸入輸出(3)軟件的初始化:設置中斷寄存器,設置中斷服務程序地址,清除中斷標志,設置中斷觸發(fā)模式上一頁下一頁返回19.2十字路口交通燈模擬控制器設計2.外中斷程序上一頁下3219.2十字路口交通燈模擬控制器設計(4)使能中斷外中斷是由外部原因引起的中斷,有兩個中斷源。即外中斷0(INT0)和外中斷1(INT1),中斷請求信號由引腳P3.2(INT0)和P3.3(INT1)輸入。外中斷請求信號有兩種方式,一是電平方式,二是脈沖方式??赏ㄟ^有關控制位的定義進行規(guī)定。電平方式為低電平有效,只需在單片機的(INT0)和(INT1)中斷請求輸入端采樣到有效的低電平時,就會激活外部中斷。脈沖方式則在脈沖的后負跳沿有效,即在相鄰兩個機器周期對中斷請求引入端進行采樣中,如前一次為高,后一次為低即為有效中斷請求。這就要求在這種中斷方式,中斷請求信號的脈沖寬度必須大于一個機器周期,以保證電平變化能被單片機采樣到。上一頁下一頁返回19.2十字路口交通燈模擬控制器設計(4)使能中斷上一頁下3319.2十字路口交通燈模擬控制器設計2)定時器控制寄存器(TCON)外中斷請求方式的控制位在定時控制寄存器TCON(地址為88H)中的位88(IT0)和位8A(IT1)兩個位,當IT0(IT1)=0為電平方式,IT0(IT1)=1為脈沖方式。同時在此寄存器中的位89(IE0)和位8B(IE1)為外中斷請求標志位,當CPU采樣到INT0(INT1)端出現有效中斷請求時,此位由硬件置1。在中斷響應完成后轉向中斷服務時,再由硬件自動清。3)中斷允許控制寄存器(IE)下面我們對有關控制位作說明:EA——中斷允許總控制位,EA=0,中斷總禁止,禁止所有中斷。EA=1,中斷總允許,總允許位打開后,各中斷的允許或禁止由各中斷允許控制位設置決定。上一頁下一頁返回19.2十字路口交通燈模擬控制器設計2)定時器控制寄存器3419.2十字路口交通燈模擬控制器設計4)中斷優(yōu)先級控制寄存器

(IP)MCS-51的中斷優(yōu)先級控制比較簡單,只設置了高、低兩個級別的有限級,各中斷源的優(yōu)先級別由優(yōu)先寄存器(IP)進行控制。5)中斷控制寄存器的狀態(tài)設置本例設計要采用定時器中斷,外中斷0、1。定時器中斷、外中斷、串口中斷控制如下,其中外中斷0、1優(yōu)先級最高,保證了應急通行的需求.上一頁下一頁返回19.2十字路口交通燈模擬控制器設計4)中斷優(yōu)先級控制寄存3519.2十字路口交通燈模擬控制器設計MOVSCON,#00H;串口工作于工作方式0,既移位寄存器狀態(tài)SETBEA;開總中斷SETBET0;開定時器中斷SETBTR0;啟動T0定時器SETBIT0;外中斷0為脈沖觸發(fā)方式SETBIT1;外中斷0為脈沖觸發(fā)方式MOVIP,#05;外中斷0,1為高優(yōu)先級SETBEX0;開外中斷0SETBEX1;開外中斷1外中斷程序流程圖見圖19-44,定時中斷程序和外中斷0,1程序見源程序。上一頁下一頁返回19.2十字路口交通燈模擬控制器設計MOVSCON,#3619.2十字路口交通燈模擬控制器設計3.串口工作方式設計1)串口工作方式串口有4種工作方式:方式0、1、2、3.由串口控制寄存器SCON和PCON控制。SM0、SM1功能見表19-9,SM2:0表示單機通訊,1表示多機通訊,REN:O禁止接收,1允許接收,TB8:發(fā)送數據第9位,RB9:接收數據第9位,TI:發(fā)送中斷標志,RI:接收中斷標志。(1)方式1:10位異步收發(fā)方式1下,串行口位10位通用異步接口。發(fā)送或接收一幀數據信息為10位,包括1位起始位“0”、8位數據位、1位停止位“1”。上一頁下一頁返回19.2十字路口交通燈模擬控制器設計3.串口工作方式設計上3719.2十字路口交通燈模擬控制器設計(2)方式2:11位異步收發(fā)方式。發(fā)送或接收一幀信息包括1位起始位“0”、8位數據位、1位可編程位、1位停止位“1”。(3)方式3:11位異步收發(fā)。方式3為波特率可變的11位異步通信方式,除了波特率有所區(qū)別之外,其余方式都與方式2相同。(4)方式0:在方式0下,串行口作同步移位寄存器用,以8位數據為一幀,先發(fā)送或接收最低位,每個機器周期發(fā)送或接收一位,故其波特率固定為“fosc/12”。串行數據由RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)端送出。這種方式常用于擴展I/O口??梢酝饨?4165或者74164.上一頁下一頁返回19.2十字路口交通燈模擬控制器設計(2)方式2:11位異3819.2十字路口交通燈模擬控制器設計2)十字路口交通燈模擬控制器串口設計本例設計串口工作于工作方式0,既同步移位寄存器狀態(tài)

MOVSCON,#00H;串口工作方式0

傳送數據語句如下:MOVDPTR,#SEGTAB1;字形碼0~9地址

MOVA,DIS_LB;低位數據MOVCA,@A+DPTR;查表

MOVSBUF,A;發(fā)送數據

DL1:JNBTI,DL1;查詢是否發(fā)送完一個字節(jié)

CLRTI上一頁下一頁返回19.2十字路口交通燈模擬控制器設計2)十字路口交通燈模擬3919.2十字路口交通燈模擬控制器設計4.字形碼根據各管的接線形式,可分成共陰極型和共陽極型。給LED數碼管的七個發(fā)光二極管加不同的電平,二極管顯示不同亮暗的組合就可以形成不同的字形,這種組合稱之為字形碼。下面以1為高電平,0為低電平,給出字形碼表。5.軟件總流程圖(見圖19-45)上一頁下一頁返回19.2十字路口交通燈模擬控制器設計4.字形碼上一頁下一頁4019.2十字路口交通燈模擬控制器設計19.2.5源程序清單;以下為共陽極LED,交通燈控制器源程序DIS_LBEQU32H;時間數據高位DIS_HBEQU33H;時間數據高位E_PASSTEQU30;東西方向綠燈通電時間N_PASSTEQU20;南北方向綠燈通電時間FLASHTEQU5;黃燈閃爍時間SECOND_FEQU20H.0;定時1S標志INT0_FEQU20H.1;外中斷0標志位上一頁下一頁返回19.2十字路口交通燈模擬控制器設計19.2.5源程4119.2十字路口交通燈模擬控制器設計INT1_FEQU20H.1;外中斷1標志位ORG0000HAJMPMAINORG0003H;外中斷0入口地址LJMPINT_0;調至外中斷0服務程序ORG000BH;TO中斷入口AJMPT0_INT;調至T0服務程序ORG0013H;外中斷1入口地址LJMPINT_0;調至外中斷1服務程序ORG0100H上一頁下一頁返回19.2十字路口交通燈模擬控制器設計INT1_FEQ4219.2十字路口交通燈模擬控制器設計MAIN:;***********************************;初始化程序MOVSP,#50H;定時器T0工作于方式1,定時125MS,開起定時器0中斷MOVTMOD,#01MOVTH0,#0BHMOVTL0,#0DCH上一頁下一頁返回19.2十字路口交通燈模擬控制器設計MAIN:上一頁下一頁4319.2十字路口交通燈模擬控制器設計;串口工作于工作方式0,既移位寄存器狀態(tài)MOVSCON,#00HSETBEA;;開總中斷SETBET0;開定時器中斷SETBIT0;外中斷0為脈沖觸發(fā)方式SETBIT1;外中斷0為脈沖觸發(fā)方式MOVIP,#05;外中斷0,1為高優(yōu)先級SETBEX0;開外中斷0SETBEX1;開外中斷1;***********************************上一頁下一頁返回19.2十字路口交通燈模擬控制器設計;串口工作于工作方式04419.2十字路口交通燈模擬控制器設計MOVR2,#0MOV20H,#0;開始所有燈亮以便檢測交通燈的好壞,亮一秒MOVP1,#0FFHSETBTR0;開啟定時JNBSECOND_F,$CLRSECOND_F;********************************上一頁下一頁返回19.2十字路口交通燈模擬控制器設計MOVR2,#0上4519.2十字路口交通燈模擬控制器設計T_LIGHT:MOVR3,#E_PASSTF_STEP:MOVP1,#24H;東西亮綠燈,南北亮紅燈,即P1MOVA,R3LCALLH_D;調用十六-十進制程序LCALLDIS;調用顯示程序JNBINT0_F,LP11AJMPF_STEPLP11:JNBINT1_F,LP12AJMPT_STEPLP12:JNBSECOND_F,$;顯示上面數據1SCLRSECOND_FCJNER3,#0,F_STEP;變化顯示數據上一頁下一頁返回19.2十字路口交通燈模擬控制器設計T_LIGHT:MOV4619.2十字路口交通燈模擬控制器設計;************************************MOVR3,#FLASHT;東西亮綠燈,南北閃爍黃燈S_STEP:MOVA,R3MOVP1,#22HLCALLH_DLCALLDISJNBINT0_F,LP21;是否第一次出現外中斷0,是轉東西亮綠燈,南北亮紅燈,;否則檢測是否有外中斷1信號第一次出現AJMPF_STEP;上一頁下一頁返回19.2十字路口交通燈模擬控制器設計;**********4719.2十字路口交通燈模擬控制器設計LP21:JNBINT1_F,LP22;AJMPT_STEP;外中斷1第一次出現轉東西亮紅燈,南北亮綠燈LP22:JNBSECOND_F,$CLRSECOND_F;未出現外中斷正常顯示CJNER3,#0,LP1AJMPT_STEPLP1:MOVP1,#02H

MOVA,R3LCALLH_DLCALLDISJNBSECOND_F,$CLRSECOND_FCJNER3,#0,S_STEP上一頁下一頁返回19.2十字路口交通燈模擬控制器設計LP21:JNBI4819.2十字路口交通燈模擬控制器設計;************************************T_STEP:MOVR3,#N_PASST;南北亮綠燈,東西亮紅燈LP2:MOVP1,#81HMOVA,R3LCALLH_DLCALLDISJNBINT0_F,LP31AJMPF_STEPLP31:JNBINT1_F,LP32AJMPT_STEPLP32:JNBSECOND_F,$CLRSECOND_FCJNER3,#0,LP2上一頁下一頁返回19.2十字路口交通燈模擬控制器設計;**********4919.2十字路口交通燈模擬控制器設計;************************************MOVR3,#FLASHT;南北亮綠燈,東西閃爍黃燈FORTH_STEP:MOVP1,#41HMOVA,R3LCALLH_DLCALLDISJNBINT0_F,LP41AJMPF_STEPLP41:JNBINT1_F,LP42AJMPT_STEP上一頁下一頁返回19.2十字路口交通燈模擬控制器設計;**********5019.2十字路口交通燈模擬控制器設計LP42:JNBSECOND_F,$CLRSECOND_FCJNER3,#0,LP3LJMPT_LIGHTLP3:MOVP1,#40H

MOVA,R3LCALLH_DLCALLDISJNBSECOND_F,$CLRSECOND_FCJNER3,#0,FORTH_STEPLJMPT_LIGHT上一頁下一頁返回19.2十字路口交通燈模擬控制器設計LP42:JNB5119.2十字路口交通燈模擬控制器設計;************************************;十六進制轉換為十進制H_D:MOVB,#10DIVABMOVDIS_HB,AJNZLP5MOVA,#10LP5:MOVA,BMOVDIS_LB,ARET上一頁下一頁返回19.2十字路口交通燈模擬控制器設計;**********5219.2十字路口交通燈模擬控制器設計;************************************;時間顯示子程序,顯示兩位十進制數,發(fā)光顯示器共陽極,

DIS:MOVR7,#2MOVR0,#DIS_LBDL0:MOVA,@R0ADDA,#0BHMOVCA,@A+PCMOVSBUF,A上一頁下一頁返回19.2十字路口交通燈模擬控制器設計;**********5319.2十字路口交通燈模擬控制器設計

DL1:JNBTI,DL1CLRTIINCR0DJNZR7,DL0RETSEGTAB:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FH,00H;************************************T0_INT:CLRTR0MOVTH0,#0BHMOVTL0,#0DCHSETBTR0上一頁下一頁返回19.2十字路口交通燈模擬控制器設計DL1:JNBTI5419.2十字路口交通燈模擬控制器設計INCR2CJNER2,#8,RETURNMOVR2,#0SETBSECOND_FDECR3RETIINT_0:CLREX0;關外中斷CLREX1JNBINT0_F,INT0LP1;檢測外中斷0信號是否第一次,是則置位CLRINT0_F;外中斷0信號第二次出現,恢復數據,啟動定時器0上一頁下一頁返回19.2十字路口交通燈模擬控制器設計INCR2上一頁下一5519.2十字路口交通燈模擬控制器設計MOVR3,40H;SETBTR0;SETBEX1;開外中斷1AJMPINT0LP2;INT0LP1:CLRTR0;外中斷0信號第一次出現,關定時器0清1S標志位

CLRSECOND_F;SETBINT0_F;置位外中斷0標志位

MOV40H,R3;保存數據

MOVR3,#99;送99S顯示上一頁下一頁返回19.2十字路口交通燈模擬控制器設計MOVR3,40H5619.2十字路口交通燈模擬控制器設計INT0LP2:SETBEX0;開外中斷0RETIINT_1:CLREX1CLREX0JNBINT1_F,INT1LP1CLRINT1_FMOVR3,40HSETBTR0SETBEX0AJMPINT1LP2上一頁下一頁返回19.2十字路口交通燈模擬控制器設計INT0LP2:SE5719.2十字路口交通燈模擬控制器設計INT1LP1:CLRTR0CLRSECOND_F

SETBINT1_FMOV40H,R3MOVR3,#99INT1LP2:SETBEX1RETURN:RETIEND上一頁返回19.2十字路口交通燈模擬控制器設計INT1LP1:C5819.3單片機與PC機的串口通訊設計19.3.1設計任務設計硬件電路以便單片機和PC機的電平匹配,根據硬件電路設計軟件實現單片機和PC機的串行通訊。19.3.2設計目的隨著計算機技術的快速發(fā)展和廣泛應用,上位機和下位機的主從工作方式更加為數據采集系統(tǒng)所采用,由于微機的分析處理能力較強,處理速度更快,而單片機則使用靈活方便,所以一般主機采用微機,從機采用單片機來構成主從多機工作模式。在實際應用中,在要求數據量大的應用場合,單片機往往難以勝任,而PC機著重發(fā)展海量高速數值運算技術,其控制能力是有限的。這時使用多個單片機結合PC機組成分布式系統(tǒng)是一個比較好的解決方案,這樣單片機與PC機的數據通信技術就變得十分重要,本設計的主要目的就在于,實現單片機與PC機之間的串行通訊。因此必須熟悉單片機串行通訊技術,了解串行口的工作方式;熟悉串口中斷技術;了解串口調試助手的使用;了解通訊協(xié)議下一頁返回19.3單片機與PC機的串口通訊設計19.3.1設計任5919.3單片機與PC機的串口通訊設計19.3.3硬件電路設計及工作原理利用MAX232芯片完成單片機TTL電平到RS-232雙向電平的轉換,達到電平匹配,并通過規(guī)定單片機和PC機的通訊協(xié)議,實現單片機與PC機的串行通訊。1.相關知識一:單片機與PC串行通訊實現方法1)利用MODEM實現單片機與PC間的遠程通信(遠距離通訊)在單片機應用中,時常遇到與計算機通信的情況。但在遠距離(大于2km)通信時,必須用調制解調器MODEM。一般資料介紹的單片機與MODEM間連接至少要用4~5個I/O口。上一頁下一頁返回19.3單片機與PC機的串口通訊設計19.3.3硬件電6019.3單片機與PC機的串口通訊設計2)利用MAX232芯片實現單片機與PC間的通信(近距離通訊)單片機和PC機的串行通信一般采用RS-232、RS-422或B3-485總線標準接口,也有采用非標準的20nnJL電流環(huán)的。為保證通信的可靠,在選擇接口時必須注意:(1)通信的速率(2)通信距離(3)抗干擾能力(4)組網方式。本書主要介紹采用RS-232接口與單片機通信的方法。2.相關知識二:RS232通常RS-232接口以9個接腳(DB-9)或是25個接腳(DB-25)的型態(tài)出現,一般個人計算機上會有兩組RS-232接口,分別稱為COM1和COM2。上一頁下一頁返回19.3單片機與PC機的串口通訊設計2)利用MAX232芯6119.3單片機與PC機的串口通訊設計(1)DB-25:PC和XT機采用DB-25型連接器。DB-25連接器定義了25根信號線,分為4組:①異步通信的9個電壓信號(含信號地SG)2,3,4,5,6,7,8,20,22②20mA電流環(huán)信號9個(12,13,14,15,16,17,19,23,24)③空6個(9,10,11,18,21,25)④保護地(PE)1個,作為設備接地端(1腳)上一頁下一頁返回19.3單片機與PC機的串口通訊設計(1)DB-25:P6219.3單片機與PC機的串口通訊設計(2)DB-9連接器在AT機及以后,不支持20mA電流環(huán)接口,使用DB-9連接器,作為提供多功能I/O卡或主板上COM1和COM2G兩個串行接口的連接器。它只提供異步通信的9個信號。DB-25型連接器的引腳分配與DB-25型引腳信號完全不同。因此,若與配接DB-25型連接器的DCE設備連接,必須使用專門的電纜線。電纜長度:在通信速率低于20kb/s時,RS-232C所直接連接的最大物理距離為15m(50英尺)。上一頁下一頁返回19.3單片機與PC機的串口通訊設計(2)DB-9連接器6319.3單片機與PC機的串口通訊設計3.相關知識三:TTL與RS232電平轉換電路RS-232規(guī)定的電平和一般微處理器的邏輯電平不一致,必須進行電平轉換,實現邏輯電平轉換可以采用以下三種方式。1)采用MCl488和MCl489芯片的轉換接口MCl488和MCl489芯片為早期的RS-232至TTL邏輯電平的轉換芯片,不便之處是需要±12V電壓,并且功耗較大,不適合用于低功耗的系統(tǒng)。上一頁下一頁返回19.3單片機與PC機的串口通訊設計3.相關知識三:TTL6419.3單片機與PC機的串口通訊設計2)采用分立元件實現的轉換接口圖19-46為采用分立元件實現的RS-232-TTL電平的轉換接口電路,其特點是利用PC機的BS-232接口的③腳信號出(也可用④、⑦腳)來供給負電源,FC機的③、④、⑦腳在非發(fā)送邏輯"0"電平時均為1電平(-10V左右),其驅動能力為20mA,利用這個特性,用一個二極管和電解電容,即在電解電容上獲取了RS-232通信所需的負電源。該電路簡單、功耗小,在沒有專用芯片時不失為一種替代方法。上一頁下一頁返回19.3單片機與PC機的串口通訊設計2)采用分立元件實現的6519.3單片機與PC機的串口通訊設計3)采用MAX232芯片的轉換接口(見圖19-47)MAX232是MAXIM公司生產的,包含兩路驅動器和接收器的RS-232轉換芯片。芯片內部有一個電壓轉換器,可以把輸入的+5v電壓轉換為RS-232接口所需的±10V電壓,尤其適用于沒有±12V的單電源系統(tǒng)。與此原理相同的芯片還有MAx202、AD公司的ADDtl01以及INl2只SIL公司的ICl232芯片。上一頁下一頁返回19.3單片機與PC機的串口通訊設計3)采用MAX232芯6619.3單片機與PC機的串口通訊設計4.相關知識四:串口通訊及通訊協(xié)議1)串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數據的同時用另一根線接收。它很簡單并且能夠實遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設備線總常不得超過20米,并且任意兩個設備間的長度不得超過2米;而對于串口而言,長度可達1200米(RS485)。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線(2)發(fā)送(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數據同時在另一根線上接收數據。其他線用于握手,但不是必須的。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。上一頁下一頁返回19.3單片機與PC機的串口通訊設計4.相關知識四:串口通6719.3單片機與PC機的串口通訊設計2)所謂通信協(xié)議是指通信雙方的一種約定。約定包括對數據格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題做出統(tǒng)一規(guī)定,通信雙方必須共同遵守。因此,也叫做通信控制規(guī)程,或稱傳輸控制規(guī)程。5.本書實例通訊協(xié)議的規(guī)定本書以一個簡單系統(tǒng)設計為例,介紹通訊協(xié)議,通過規(guī)定的通訊協(xié)議完成單片機與PC的通訊功能,實現PC對單片機的控制。為了簡化設計,單片機不起控制作用,PC機也不作數據處理工作,單片機的控制功能用做加、減法模擬。另外上位機程序也不用編寫,直接使用串口調試助手。上一頁下一頁返回19.3單片機與PC機的串口通訊設計2)所謂通信協(xié)議是指6819.3單片機與PC機的串口通訊設計(1)系統(tǒng)結構:系統(tǒng)主要由單片機A,單片機B,PC機構成。單片機可完成加法、減法以便模擬控制功能。(2)系統(tǒng)任務:a:區(qū)分單片機A、單片機B。b:啟動單片機A、單片機B。c:使單片機A、單片機B停止工作。d:單片機根據接收的命令完成相應的工作(3)根據系統(tǒng)的任務要求,規(guī)定了下面通訊協(xié)議:波特率:9600bps,起始位一位,數據位八位,停止位一位,無校驗位約定通訊格式見表19-11上一頁下一頁返回19.3單片機與PC機的串口通訊設計(1)系統(tǒng)結構:系統(tǒng)主6919.3單片機與PC機的串口通訊設計6.相關知識五:串口調試助手的使用下圖19-48為串口調試助手的界面,下面簡要介紹一下它的使用方法:1)設置串口參數通過下拉菜單選擇串口、波特率、奇偶校驗、數據位數、停止位:(1)串口號選擇:COM1~COM4,一般PC有兩個串口,與單片機連接的串口假設是COM2則在下拉菜單中選擇COM2;(2)波特率選擇:波特率有300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200可供選擇,單片機軟件設計的的串口波特率為9600,為了與單片機收發(fā)數據速度匹配,PC機選擇9600。上一頁下一頁返回19.3單片機與PC機的串口通訊設計6.相關知識五:串口調7019.3單片機與PC機的串口通訊設計(3)校驗位:由NONE、ODD、EVEN即無奇偶校驗、奇校驗、偶校驗。主要用作簡單檢錯,出于簡化設計的目的這里選擇無奇偶校驗NONE,對數據的正確性要求較高的場合,要設奇偶檢驗位,對數據的正確性要求非常高的場合,串口調試助手還不能滿足要求,應該自己編制程序,對數據進行嚴格校驗,糾錯。(4)數據位選擇:8位、7位、6位這就是要實際傳送的數據位數。這里選擇8位。(5)停止位選擇:1位、2位,這里選擇1位上一頁下一頁返回19.3單片機與PC機的串口通訊設計(3)校驗位:由NON7119.3單片機與PC機的串口通訊設計2)接收區(qū)接收數據:如果要按十六進制形式顯示接收數據,將十六進制顯示選項選中。如果接收ASCII碼則十六進制不選,點擊打開/關閉串口區(qū)中的打開串口按鈕。此時狀態(tài)指示燈亮.顯示接收數據的長度:因某些限制,顯示接收數據的文本不能太長,所以當顯示文本長度快達到62K時會自動將顯示文本刪減到32K,此時文本可保留32K的字符或約10K的十六進制數據顯示。上一頁下一頁返回19.3單片機與PC機的串口通訊設計2)接收區(qū)上一頁下一頁7219.3單片機與PC機的串口通訊設計選中自動清空,則數據滿接收框后數據清空??梢允謩狱c擊清除顯示按鈕,則此前顯示區(qū)的數據全部清除。點擊停止顯示按鈕,則數據停止顯示,點擊繼續(xù)顯示按鈕,則數據從新開始顯示,點擊保存顯示數據可以把但前顯示框的數據保存在默認的路徑C:\COMDATA,要更改保存路徑點擊更改就會出現下圖對話框。選擇保存數據的文件夾。界面見圖19-49.上一頁下一頁返回19.3單片機與PC機的串口通訊設計選中自動清空,則數據滿7319.3單片機與PC機的串口通訊設計3)發(fā)送區(qū)可以發(fā)送單字符串,多字符串(字符串序列)或直接在鍵盤上發(fā)送英文字符。有兩種發(fā)送數據格式,一種是普通的字符串,另外一種是十六進制數據即HEX格式數據。發(fā)送HEX格式數據時要在字符串輸入區(qū)中輸入HEX格式字符串,并且要將相應區(qū)內的十六進制發(fā)送選項選中。在發(fā)送輸入框中輸入1234ABCDFF不選中十六機制,點擊發(fā)送,則字符串1234ABCDFF發(fā)送出去,發(fā)送的數據為14字節(jié)。因為上述字符串中的1,其實是ASCII碼1,用十六進制數31H表示,為一個字節(jié)。14字節(jié)數分別為4個數字、6個字母,4個空格鍵的ASCII碼。1234ABCDFF字符串用十六機制表示為313220333420414220434420454620。見圖19-50串口調試助手界面3,發(fā)送、接收的字節(jié)數見TXRX的值。上一頁下一頁返回19.3單片機與PC機的串口通訊設計3)發(fā)送區(qū)上一頁下一頁7419.3單片機與PC機的串口通訊設計4)狀態(tài)欄:顯示發(fā)送,接收數據的字節(jié)數。計數清零按鈕,可以清零收發(fā)數據的字節(jié)數。狀態(tài)欄和自動發(fā)送一個非常重要的用途是檢測通訊是否出錯,特別是在高速傳送數據時的出錯情況檢測,例如以20MS的速度發(fā)送命令給單片機并要求單片機實時傳送相應的數據回PC機,因此發(fā)送數據和接收數據應該有嚴格的比例關系,如果比值變化,說明出現數據丟失現象,應該檢測硬件和軟件。7.硬件電路原理圖串口通訊原理如圖19-51所示。上一頁下一頁返回19.3單片機與PC機的串口通訊設計4)狀態(tài)欄:顯示發(fā)送,7519.3單片機與PC機的串口通訊設計19.3.4串口通訊源程序清單;;****************************************S1_FEQU20H.0;發(fā)送地址命令起始位C_FEQU20H.1;發(fā)送命令指令命令位D_FEQU20H.2;發(fā)送地址命令命令位S2_FEQU20H.3;發(fā)送命令指令起始位FIN1_FEQU20H.4;發(fā)送地址命令結束位FIN2_FEQU20H.5;發(fā)送命令指令起始位COM_FEQU20H.6;發(fā)送命令數據結束位AD_FEQU20H.7;發(fā)送加法命令位SB_FEQU21H.0;發(fā)送減法命令位SD_FEQU21H.1;發(fā)送回送命令位FDATA_FEQU21H.2;發(fā)送數據命令第一位上一頁下一頁返回19.3單片機與PC機的串口通訊設計19.3.4串口通7619.3單片機與PC機的串口通訊設計ADD_FEQU21H.3;發(fā)送加法命令位SEND_FEQU21H.4;發(fā)送回送命令位SUBB_FEQU21H.5;發(fā)送減法命令位A_FEQU21H.6;發(fā)送地址A位F_DATAEQU40H;要接收的數據高位S_DATAEQU41H;要接收的數據低位位J_DATAEQU42H;要發(fā)送運算結果高位上一頁下一頁返回19.3單片機與PC機的串口通訊設計ADD_FEQU7719.3單片機與PC機的串口通訊設計;************************************ORG0000HLJMPSTARTORG0023H;串口中斷入口地址LJMPSERI_INT;轉串口中斷程序ORG0100HSTART:MOVSP,#67HMOV20H,#0;清零各存儲單元MOV21H,#0MOVF_DATA,#0MOVS_DATA,#0MOVJ_DATA,#0上一頁下一頁返回19.3單片機與PC機的串口通訊設計;**********7819.3單片機與PC機的串口通訊設計;************************************;初始化T1,串口MOVTMOD,#20H;定時器T1自動重裝載MOVTL1,#0FDH;波特率9600MOVTH1,#0FDHMOVPCON,#00HMOVSCON,#50H;串口工作方式1;MOVSCON,#0F0H;多機通訊,串口工作方式3SETBEA;開中斷,SETBES;開串口中斷,SETBTR1;啟動定時器1,上一頁下一頁返回19.3單片機與PC機的串口通訊設計;*********7919.3單片機與PC機的串口通訊設計;************************************LP1:JNBADD_F,LP2;根據接收的命令完成加法或減法工作LCALLADD_S;調用加法子程序LP2:JNBSUBB_F,LP3LCALLSUBB_S;調用減法子程序LP3:JNBSEND_F,LP1LCALLSEND_S;調用發(fā)送數據子程序AJMPLP1;***********************************CLRRS0;使用0組通用寄存器CLRRS1上一頁下一頁返回19.3單片機與PC機的串口通訊設計;**********8019.3單片機與PC機的串口通訊設計;************************************;串口中斷服務程序SERI_INT:JBRI,REC;接受數據TRAN:CLRTI;;發(fā)送數據INCR0DJNZR1,TRAN_NEXT;數據是否發(fā)送完

MOV20H,#0MOV21H,#0SINTOUT:RETI上一頁下一頁返回19.3單片機與PC機的串口通訊設計;*********8119.3單片機與PC機的串口通訊設計TRAN_NEXT:MOVSBUF,@R0;數據發(fā)送繼續(xù)

AJMPSINTOUTREC:CLRRI;接收數據

MOVA,SBUFJNBFIN2_F,LOOP21JNBADD_F,LOOP22JNBFDATA_F,LP11MOVS_DATA,ACLRFDATA_FAJMPFIN上一頁下一頁返回19.3單片機與PC機的串口通訊設計TRAN_NEXT:M8219.3單片機與PC機的串口通訊設計LP11:MOVF_DATA,ALOOP22:JNBSUBB_F,LOOP23JNBFDATA_F,LP12

MOVS_DATA,ACLRFDATA_FAJMPFINLP12:MOVF_DATA,ALOOP23:JNBFDATA_F,LP13MOVS_DATA,ACLRFDATA_FAJMPFIN上一頁下一頁返回19.3單片機與PC機的串口通訊設計LP11:MOV8319.3單片機與PC機的串口通訊設計LP13:MOVF_DATA,ALOOP21:JNBFIN1_F,LOOPLJMPCOMSLOOP:CJNEA,#53H,LOOP1;是否為地址指令SSETBS1_F;置位發(fā)送地址命令起始字FIN:AJMPRETIFINLOOP1:CJNEA,#44H,LOOP2;是否為地址命令DJNBS1_F,FIN1SETBD_F;置位發(fā)送地址命令字AJMPFINFIN1:CLRS1_FAJMPFIN上一頁下一頁返回19.3單片機與PC機的串口通訊設計LP13:MOVF8419.3單片機與PC機的串口通訊設計LOOP2:CJNEA,#41H,LOOP3;是否為本機地址AJNBD_F,FIN2SETBA_F;;置位發(fā)送地址AAJMPFINFIN2:CLRS1_FCLRD_FAJMPFINLOOP3:CJNEA,#21H,FIN3;是否為!JNBA_F,FIN3SETBFIN1_F;置位發(fā)送地址命令結束字AJMPFIN上一頁下一頁返回19.3單片機與PC機的串口通訊設計LOOP2:CJNE8519.3單片機與PC機的串口通訊設計FIN3:CLRS1_FCLRD_FCLRA_FAJMPFINCOMS:CJNEA,#53H,LOOP11;是否為命令指令起始位SSETBS2_F;是置位命令指令起始位AJMPRETIFINLOOP11:JNBS2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論