雙機通信系統(tǒng)單片機課程設(shè)計_第1頁
雙機通信系統(tǒng)單片機課程設(shè)計_第2頁
雙機通信系統(tǒng)單片機課程設(shè)計_第3頁
雙機通信系統(tǒng)單片機課程設(shè)計_第4頁
雙機通信系統(tǒng)單片機課程設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機雙機通信系統(tǒng)設(shè)計設(shè)計概況21 總體設(shè)計31.1 設(shè)計要求31.2 設(shè)計方案32 雙機通信硬件設(shè)計42.1 AT89C51簡介42.2 AT89C51串行口的工作方式52.3 晶振電路設(shè)計82.4 復(fù)位電路設(shè)計82.5 接口電路的設(shè)計92.6 輸入輸出電路設(shè)計113 雙機通信軟件設(shè)計133.1 串行通信軟件實現(xiàn)133.2 串行通信程序流程133.3 程序清單164 軟件仿真205 硬件連接216 設(shè)計總結(jié)23參考文獻(xiàn)2425 1 頁設(shè)計概況要構(gòu)成一個較大規(guī)模的控制系統(tǒng),常常需要采用多機控制實現(xiàn),而AT89C51單片機有一個異步通信方式的全雙工串行接口,可以方便地構(gòu)成雙機、多機系統(tǒng)。而串行通

2、信也成為單片機與單片機、單片機與上位機之間進(jìn)行數(shù)據(jù)傳輸?shù)闹饕绞?,是一種適用于遠(yuǎn)距離通信的數(shù)據(jù)傳輸方式。串行通信是單片機的一個重要應(yīng)用。本次課程設(shè)計就是要利用單片機來完成一個系統(tǒng),實現(xiàn)雙片單片機串行通信。通信的結(jié)果實用數(shù)碼管進(jìn)行顯示,數(shù)碼管采用查表方式顯示。兩個單片機之間采用RS232進(jìn)行雙機通信。在通信過程中,使用通信協(xié)議進(jìn)行通信。關(guān)鍵詞:單片機;串行通信;接口1 總體設(shè)計1.1 設(shè)計要求設(shè)計一個單片機雙機通信系統(tǒng),單片機A接1個8位按鍵開關(guān),單片機B接8個發(fā)光二極管,通過串行通信實現(xiàn)由A機撥碼開關(guān)控制B機發(fā)光二極管的亮滅。1.2 設(shè)計方案本次設(shè)計,對于兩片AT89C51,采用RS-232進(jìn)

3、行雙機通信。如圖1所示,發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX232將TTL電平轉(zhuǎn)換為RS-232電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX232芯片進(jìn)行電平轉(zhuǎn)換后,信號到達(dá)接收方串行口的接收端。接收方接收后,在LED二極管上顯示接收的對應(yīng)信息。晶振電路復(fù)位電路8路撥碼開關(guān)電路發(fā)送機接收機接口接口晶振電路復(fù)位電路顯示電路 圖1 雙機通信系統(tǒng)原理框圖 軟件局部,通過通信協(xié)議進(jìn)行發(fā)送接收,發(fā)送機先送聯(lián)絡(luò)信號給接收機,當(dāng)接收機接收到聯(lián)絡(luò)信號后,向發(fā)送機答復(fù)一個應(yīng)答信號,表示同意接收。發(fā)送機收到應(yīng)答信號后開始發(fā)送數(shù)據(jù),每發(fā)送一個數(shù)據(jù)塊字節(jié)都要計算“校驗和,假定數(shù)據(jù)長度

4、為16個字節(jié),起始地址為40H,一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗和。接收機接收數(shù)據(jù)并存入數(shù)據(jù)緩沖區(qū)起始地址也為40H,每接收到一個數(shù)據(jù)字節(jié)便計算一次“校驗和,當(dāng)接收到一個數(shù)據(jù)塊后,在接受發(fā)送機發(fā)來的“校驗和,并將它與接收機計算的校驗和進(jìn)行比擬。假設(shè)二者相等,說明接受正確,接收機答復(fù)00H,發(fā)送機結(jié)束發(fā)送;假設(shè)二者不等,說明接受不正確,接收機答復(fù)0FFH,請求重發(fā),發(fā)送機重新發(fā)送數(shù)據(jù)一次。接收機接收到數(shù)據(jù)后通過發(fā)光二極管LED顯示發(fā)送機的發(fā)送狀態(tài)。2 雙機通信硬件設(shè)計 2.1 AT89C51簡介AT89C51 是一個帶有4k 字節(jié)存儲器的單片機,它具有128字節(jié)內(nèi)部RAM;32 個I/O 口線

5、和;兩個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。如圖2所示,DIP40封裝的AT89C51的各個引腳及其功能。 圖2 AT89C51單片機引腳封裝AT89C51單片機各個引腳功能如下:1電源幾時鐘引腳VCC40號引腳:電源接入引腳VSS20號引腳:接地引腳XTAL119號引腳:晶振接入的一個引腳XT

6、AL218號引腳:晶振接入的另一個引腳(2) 控制線引腳RST/VPD9號引腳:復(fù)位信號輸入引腳/備用電源輸入引腳ALE/30號引腳:地址鎖存允許信號輸出引腳/編程脈沖輸入引/(31號引腳):內(nèi)外存儲器選擇引腳/片內(nèi)EPROM編程電壓輸入引腳(29號引腳):外部程序存儲器選通信號輸出引腳(3) I/O引腳·P0.0P0.73932號引腳:一般I/O口引腳/低位地址總線引腳·P1.0P1.7(18號引腳):一般I/O口引腳·P2.0P2.7(2128號引腳):一般I/O口引腳/高位地址總線引腳·P3.0P3.7(1017號引腳):一般I/O口引腳或第二功能

7、引腳P3.010號引腳:RXD串行口輸入P3.111號引腳:TXD串行口輸出P3.212號引腳:外部中斷0輸入P3.313號引腳:外部中斷1輸入P3.414號引腳:T0定時器0的外部輸入P3.515號引腳:T1定時器1的外部輸入P3.616號引腳:片外數(shù)據(jù)存儲器“寫選通控制輸出P3.717號引腳:片外數(shù)據(jù)存儲器“讀選通控制輸出2.2 AT89C51串行口的工作方式 AT89C51的串行口是一個可編程全雙工的通信接口,具有通信異步接受和發(fā)送的全部功能,能同時進(jìn)行數(shù)據(jù)的接收和發(fā)送,也可作為同步移位存放器使用。AT89C51的串行口主要由兩個獨立的串行數(shù)據(jù)緩沖存放器SBUF一個發(fā)送緩沖存放器,一個接

8、收緩沖存放器,串行口控制存放器、輸入移位存放器及假設(shè)干控制門電路組成。(1) 串行口數(shù)據(jù)緩沖存放器SBUF AT89C51可以通過特殊功能存放器SBUF的讀寫操作,實現(xiàn)對串行接收或串行發(fā)送存放器的訪問,串行接收和串行發(fā)送存放器在串行口內(nèi)部是兩個獨立的存儲單元,共用同一個地址99H。串行口數(shù)據(jù)傳送使用的是內(nèi)部數(shù)據(jù)傳送指令“MOV A,SBUF或“MOV SBUF,A.當(dāng)執(zhí)行寫操作時,訪問串行發(fā)送存放器;當(dāng)執(zhí)行讀操作時,訪問串行接收存放器。(2) 串行口控制存放器SCONAT89C51串行口工作的設(shè)定、接收與發(fā)送控制的設(shè)置都是通過對串行口控制存放器SCON的編程確定的。SCON是一個特殊功能存放器

9、,其地址為98H,可位尋址,其各位的作用定義如下:表2 控制存放器SCON9FH9EH9DH9CH9BH9AH99H98HSCON(98H)SM0SM1SM2RENTB8RB8TIRI SM0、SM1:串行口工作方式選擇位,工作方式選擇如表2所示。其中是晶體振蕩器的頻率。SM2:多機通信控制位。在方式0下,SM2應(yīng)為0;在方式1下,如果SM2=0,那么只有收到有效的停止位時才會激活RI;在方式2和方式3下,如置SM2=1那么只有收到第9位數(shù)據(jù)為1時,RI被激活RI=1,申請中斷,要求CPU取走數(shù)據(jù)。REN:允許接收控制位。由軟件置位或清零。REN=1,允許接收;REN=0,禁止接收。TB8:在

10、方式2和方式3下,存放要發(fā)送的第9位數(shù)據(jù),常用作奇偶校驗位。在多機通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識位,假設(shè)為地址幀,TB8=1;假設(shè)為數(shù)據(jù)幀,TB8=0。RB8:在方式2和方式3下,存放接收到的第9位數(shù)據(jù);在方式1下,如SM2=0,那么該位為接收到的停止位;方式0不用此位。TI:發(fā)送中斷標(biāo)志。在方式0下,發(fā)送完第8位數(shù)據(jù)位時,由硬件置位;在其他方式下,當(dāng)開始發(fā)送停止位時,由硬件將TI置位,即是向CPU申請中斷,CPU可以發(fā)送下一幀數(shù)據(jù)。在任何方式下,TI必須由軟件清零。RI:接收中斷標(biāo)志。在方式0下,接收完第8位數(shù)據(jù)時,由硬件置位;在其他方式下,當(dāng)接收到停止位時RI置位,即申請中斷,要求

11、CPU取走數(shù)據(jù)。它必須由軟件清零。表3 串行口工作方式選擇SM0SM1方式功能波特率SM0SM1方式功能波特率000同步移位存放器/1210211位UART/16或/3201110位UART可變11311位UART可變 本設(shè)計發(fā)送機串行口的工作方式為方式1,即控制存放器SCON中內(nèi)容如下:表4 發(fā)送機控制存放器SCON9FH9EH9DH9CH9BH9AH99H98HSCON(98H)SM0SM1SM2RENTB8RB8TIRI01000000 接收機的串行口的工作方式為方式1,即控制存放器SCON中內(nèi)容如下:表5 接收機控制存放器SCON9FH9EH9DH9CH9BH9AH99H98HSCON

12、(98H)SM0SM1SM2RENTB8RB8TIRI01010000串口以方式1發(fā)送,由CPU執(zhí)行一條寫發(fā)送存放器指令“MOV SBUF,A,就可將數(shù)據(jù)位逐一由TXD端發(fā)送。當(dāng)發(fā)送一幀數(shù)據(jù)后,將TI置1。串口以方式1接受,需控制SMOD中的REN為1SMOD為特殊功能存放器PCON的最高位,此時對RXD引腳進(jìn)行采樣,當(dāng)采樣到起始位置有效時,開始接收數(shù)據(jù)。當(dāng)一幀數(shù)據(jù)接收完畢,且RI=0,SM2=0或接收到RB8=1時,接收數(shù)據(jù)有效,此時可利用讀接收存放器指令“MOV A,SBUF將數(shù)據(jù)送入CPU。同時將RI置1。假設(shè)要再次發(fā)送或接收數(shù)據(jù),必須將TI、RI清零。3波特率的計算根據(jù)表2可知串口工作

13、方式方式1時一幀數(shù)據(jù)為10位8位數(shù)據(jù)位,起始位、停止位各1位。其傳輸波特率是可變的,由定時器T1的溢出率來決定。波特率=當(dāng)T1作為波特率發(fā)生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式即方式2,且TCON的TR=1,以啟動定時器。這時溢出率取決于TH1中的計數(shù)值。在單片機的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。在本設(shè)計中晶振頻率采用=11,。0592MHz。即波特率為 波特率=2.3 晶振電路設(shè)計AT89C51單片機內(nèi)部有一震蕩電路,只要在單片機的XTL119號和XTAL218號引腳外接石英晶體簡稱晶振就構(gòu)成了自激振蕩器并在單片機內(nèi)部產(chǎn)生時鐘脈沖信號。如圖3

14、所示,圖中電容器C1和C2的作用是穩(wěn)定頻率和快速起振,電容值為530pF,典型值為30pF,本設(shè)計取30pF。晶振CYS的振蕩頻率范圍為1.2MHz12MHz,典型值為12MHz和6MHz,本設(shè)計取12MHz。圖3 晶振電路2.4 復(fù)位電路設(shè)計AT89C51單片機的RST9號引腳引入高電平并保持兩個機器周期時,單片機內(nèi)部就執(zhí)行復(fù)位操作。在實際中AT89C51通常有兩種操作方式復(fù)位,一種是上電復(fù)位;另一種是按鍵上電復(fù)位。在雙機通信系統(tǒng)的設(shè)計中使用按鍵上電復(fù)位,如圖4所示。 圖4 復(fù)位電路 單片機復(fù)位后進(jìn)入初始化狀態(tài)。初始化后,程序計數(shù)器PC=0000H,所以程序從0000H地址單元開始執(zhí)行。單片

15、機啟動后,片內(nèi)RAM為隨機值,運行中的復(fù)位操作不改變片內(nèi)RAM的內(nèi)容。特殊功能存放器復(fù)位后的狀態(tài)是確定的。P0P3為FFH,SP為07H,SBUF不定,IP、IE和PCON的有效位為0,其余的特殊功能存放器的狀態(tài)均為00H。2.5 接口電路的設(shè)計(1) 直接通信單片機與單片機進(jìn)行雙擊串行通行時,可將兩個單片機的串口直接連接,接線圖如圖5所示,這種接線傳輸距離短,抗干擾能力差。圖5 直接通信接線圖2串口通信單片機與單片機進(jìn)行雙擊串行通行時,AT89C51串行接口的信號電平為TTL類型,抗干擾性差、傳輸距離短。為了提高串行通信的靠抗性,延長通信距離,一般設(shè)計采用標(biāo)準(zhǔn)的串行接口。RS-232C接口是

16、1969年EIA推出的串行通信標(biāo)準(zhǔn),目前是PC機與通信工業(yè)中應(yīng)用最廣的一種串行接口。數(shù)據(jù)傳輸速率在020kbps范圍內(nèi)的通信,最大傳輸距離可達(dá)15m,能實現(xiàn)一發(fā)一收通信,目前常用的RS232C接口連接器有9針串口DB9和25針串口DB25。最常用的的是DB9,常采用三線制接法,即發(fā)送數(shù)據(jù)線、接受數(shù)據(jù)線和接地線三腳相連。傳輸線采用屏蔽雙絞線,如圖6所示。 圖6 DB9三線制接法RS232C信號的電平與單片機串口信號的電平不一致,二者之間必須進(jìn)行電平轉(zhuǎn)換。使用電平轉(zhuǎn)換芯片MAX232就可以實現(xiàn)RS232C/TTL電平的雙向轉(zhuǎn)換。MAX232芯片使用單一的+5V電源供電,配接5個1uF電解電容即可完

17、成RS232C電平的TTL電平之間的轉(zhuǎn)換,其電路接線圖如圖7所示。圖7 MAX232電平轉(zhuǎn)換芯片電路接線圖表6 DB9常用信號引腳說明DB9引腳信號名稱符號功能1載波檢測DCD 接收遠(yuǎn)程載波2接收數(shù)據(jù)RXD接受串行數(shù)據(jù)3發(fā)送數(shù)據(jù)TXD發(fā)送串行數(shù)據(jù)4數(shù)據(jù)準(zhǔn)備就緒DTR準(zhǔn)備就緒5信號的SGND 信號公共地6數(shù)據(jù)準(zhǔn)備就緒DSR準(zhǔn)備就緒7發(fā)送請求RTS請求將線路切換到發(fā)送發(fā)式8允許發(fā)送CTS線路已接通,可以發(fā)送數(shù)據(jù)9振鈴指示RI數(shù)據(jù)通信接通,終端設(shè)備被呼叫2.6 輸入輸出電路設(shè)計P1口是AT89C51單片機的唯一的單功能口,僅能用作數(shù)據(jù)輸入/輸出口。P1口的位結(jié)構(gòu)如圖8所示圖8 P1口的位結(jié)構(gòu) 由圖8

18、可知,P1口由一個輸出鎖存器,兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路組成。內(nèi)部設(shè)有上拉電阻。P1口是通用的準(zhǔn)雙向I/O口。輸出高電平時,能向外提供拉電流負(fù)載,不必再接上拉電阻。當(dāng)口用于輸入時,須向口鎖存器寫入“1。輸入低電平有效。因此其輸入電路如圖9,輸出電路圖10:圖9 發(fā)送機輸入電路圖10 接收機輸出電路3 雙機通信軟件設(shè)計 通過通信協(xié)議進(jìn)行發(fā)送接收。發(fā)送機先送聯(lián)絡(luò)信號給接收機,當(dāng)接收機接收到聯(lián)絡(luò)信號后,向發(fā)送機答復(fù)一個應(yīng)答信號,表示同意接收。發(fā)送機收到應(yīng)答信號后開始發(fā)送數(shù)據(jù),每發(fā)送一個數(shù)據(jù)塊字節(jié)都要計算“校驗和,假定數(shù)據(jù)長度為16個字節(jié),起始地址為40H,一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗和。

19、接收機接收數(shù)據(jù)并存入數(shù)據(jù)緩沖區(qū)起始地址也為40H,每接收到一個數(shù)據(jù)字節(jié)便計算一次“校驗和,當(dāng)接收到一個數(shù)據(jù)塊后,在接受發(fā)送機發(fā)來的“校驗和,并將它與接收機計算的校驗和進(jìn)行比擬。假設(shè)二者相等,說明接受正確,接收機答復(fù)00H,發(fā)送機結(jié)束發(fā)送;假設(shè)二者不等,說明接受不正確,接收機答復(fù)0FFH,請求重發(fā),發(fā)送機重新發(fā)送數(shù)據(jù)一次。接收機接收到數(shù)據(jù)后通過發(fā)光二極管顯示發(fā)送機的發(fā)送狀態(tài)。3.1 串行通信軟件實現(xiàn)1串行口工作于方式1;用定時器1產(chǎn)生9600bit/s的波特率。2功能:將本機ROM中數(shù)碼表TAB16中的16個數(shù)發(fā)送到從機,并保存在從機內(nèi)部ROM中,從機收到這16個數(shù)據(jù)后送到一個數(shù)碼管循環(huán)顯示。3

20、通信協(xié)議:發(fā)送機首先發(fā)送連絡(luò)信號(E1H),接收機接收到之后返回一個連絡(luò)信號(E2H)表示從機已準(zhǔn)備好接收。通信過程使用第九位發(fā)送奇偶校驗位。接收機接收到一個數(shù)據(jù)后,立即進(jìn)行奇偶校驗,假設(shè)數(shù)據(jù)沒有錯誤,那么返回00H,否那么返回FFH。發(fā)送機發(fā)送一個數(shù)據(jù)后,等待接收機返回數(shù)據(jù);假設(shè)為00H,那么繼續(xù)發(fā)送下一個數(shù)據(jù),假設(shè)為FFH,那么重新發(fā)送數(shù)據(jù)。3.2 串行通信程序流程(1) 發(fā)送機程序流程根據(jù)通信協(xié)議發(fā)送機需向接收機發(fā)送聯(lián)絡(luò)信號“E1,當(dāng)接收到應(yīng)答信號后,發(fā)送機發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)完畢后將校驗和發(fā)送至接收機,接收機進(jìn)行校驗如果正確等待下一次發(fā)送;如果錯誤重新發(fā)送數(shù)據(jù)。其流程圖如下:開始設(shè)置波特

21、率啟動定時器T1設(shè)置串行口工作方式發(fā)送“E1聯(lián)絡(luò)信號接收機允許發(fā)送?指針初始化校驗和清0發(fā)送1個數(shù)據(jù)字節(jié)求校驗和數(shù)據(jù)塊發(fā)送完畢?發(fā)送校驗和接收機接收正確?返回YNYNYN圖10 發(fā)送流程圖(2) 接收機程序流程根據(jù)通信協(xié)議,接收機等待發(fā)送機發(fā)出的聯(lián)絡(luò)信號“E1并向發(fā)送機發(fā)送應(yīng)答信號“E2,當(dāng)接收1個數(shù)據(jù)字節(jié)后求檢驗和,發(fā)送機在發(fā)送完一個數(shù)據(jù)塊后將發(fā)送機計算的校驗和發(fā)送至接收機,接收機將兩個校驗和進(jìn)行比擬,如果正確等待下一次接收;如果錯誤那么發(fā)送出錯標(biāo)志重新發(fā)送數(shù)據(jù)。其流程圖如下:開始設(shè)置波特率啟動定時器T1設(shè)置串行口工作方式等待發(fā)送機聯(lián)絡(luò)發(fā)送機請求發(fā)送?NY指針初始化校驗和清0接收1個數(shù)據(jù)字節(jié)

22、求校驗和數(shù)據(jù)塊發(fā)送完畢?比擬校驗和接收機接收正確?返回YNYN發(fā)送應(yīng)答信號發(fā)送出錯標(biāo)志圖11 接收機流程圖3.3 程序清單基于AT89C51單片機雙機通信時,串行輸入輸出可直接進(jìn)行連接,實現(xiàn)雙機通信。這樣連接方式,傳輸距離短,抗干擾能力弱,但容易實現(xiàn),其接線和程序較為簡單,其程序如下:1發(fā)送機程序 ORG 0000H AJMP MAIN ORG O1OOHMAIN: MOV SP,#6OH MOV SCON,#40H MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 MOV P1,#0FFH MOV 30H,#0FFH K0: MOV A,P

23、1 CJNE A,30H,KI SJMP K0 KI: MOV 30H,A MOV SBUF,A SJMP K0WAIT: JBC T1,K0 SJMP WAIT END(2) 接收機程序 ORG 0000H AJMP MAIN ORG O1OOHMAIN: MOV SP,#6OH MOV SCON,#50H MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 MOV P1,#0FFH K0: JB RI,KK SJMP K0 KK: MOV A,SBUF MOV P1,A CLR RI SJMP K0 END 發(fā)送機與接收機也可以經(jīng)過串口進(jìn)行

24、通信,這種通信方式較上一種方式提高通信距離,抗干擾能力強,傳輸穩(wěn)定,但其接線復(fù)雜,程序比擬繁瑣。其程序如下:1發(fā)送程序清單ASTRT: CLR EA MOV TMOD,#20H ;定時器1置為方式2 MOV TH1,#0F4H ;裝在定時器初值,波特率為2400 MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#50H ;設(shè)定串行口方式1,且準(zhǔn)備接受應(yīng)答信號ALOOP1:MOV SBUF,#0E1H ;發(fā)送聯(lián)絡(luò)信號 JNB TI,$ ;等待一幀發(fā)送完畢 CLB TI ;允許在發(fā)送 JNB RI,$ ;等待接收機的應(yīng)答信號 CLR RI ;允許在接收

25、MOV A,SBUF ;接收機應(yīng)答后,讀至A XRL A,#0E2 ;判斷接收機是否準(zhǔn)備完畢 JNZ ALOOP1 ;接收機未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò)ALOOP2: MOV P1,#0FFH MOV 30H,#0FFH ;設(shè)定撥碼開關(guān)初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長度 MOV R6,#00H ;清校驗和單元ALOOP3:MOV A,P1 ;讀入撥碼開關(guān) CJNE A,30H,ALOOP4 SJMP ALOOP3ALOOP4:MOV 30H,A ;存入撥碼開關(guān)新值 MOV SBUF,A ;發(fā)送一個數(shù)據(jù)字節(jié) MOV A,R6 ADD A,P1 ;求校驗和 MOV R6,A ;保存校驗和 INC

26、 R0 JNB T1,$ CLB T1 DJNZ R7,ALOOP3 ;整個數(shù)據(jù)塊是否發(fā)送完畢 MOV SBUF,R6 ;發(fā)送校驗和 JNB TI,$ CLR TI JNB RI,$ ;等待接收機應(yīng)答信號 CLR RI MOV A,SBUF ;接收機應(yīng)答,讀至A JNZ ALOOP2 ;接收機應(yīng)答錯誤,轉(zhuǎn)至重新發(fā)送 SJMP ALOOP3 ;進(jìn)入下一循環(huán)傳送 END (2) 接收程序清單BSTART: CLR EA MOV TMOA,#20H MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#5OH ;設(shè)定串行口工作方式1

27、,且準(zhǔn)備接收BLOOP1: JNB RI,$ ;等待1號機的聯(lián)絡(luò)信號 CLR RI MOV A,SBUF ;收到1號機的信號 XRL A,#0E2H ;判斷是否為1號機聯(lián)絡(luò)信號 JNZ BLOOP1 ;不是1號機聯(lián)絡(luò)信號,再等待 MOV SBUF,#0E2H ;是1號機聯(lián)絡(luò)信號,發(fā)應(yīng)答信號 JNB T1,$ CLR TIBLOOP2: MOV R0,#40H ;設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長度初值 MOV R6,#00H ;清校驗和單元BLOOP3: JNB RI,$ CLR RI MOV A,SBUF MOV R0,A ;接收數(shù)據(jù)轉(zhuǎn)儲 INC RO ADD A

28、,R6 ;求校驗和 MOV R6,A DJNZ R7,BLOOP3 ;判斷數(shù)據(jù)塊是否接收完畢 JNB RI,$ ;完畢,接收1號機發(fā)來的校驗和 CLR RI MOV A,SBUF XRL A,R6 ;比擬校驗和 JZ END1 MOV SBUF,#0FFH ;校驗和相等,跳至發(fā)正確標(biāo)志 JNB TI,# ;校驗和不相等,發(fā)錯誤標(biāo)志 CLR TI ;轉(zhuǎn)重新接收 SJMP BLOOP2END1: MOV SBUF,#00H RET4 軟件仿真 Proteus 7 Professional 是一種低投資的電子設(shè)計自動化軟件,它可以仿真單片機和周邊設(shè)備,可以仿真51系列、AVR、PIC等常用的MCU。與KEIL和MPLAB不同的是,它還可以仿真周邊的設(shè)備。例如,示波器、RAM、ROM、LED等。本次設(shè)計,通過兩片兩片AT89C52單片機由8位按鍵開關(guān)分別控制8個指示燈。具體接線如下;發(fā)送電路18、19號引腳連接晶振電路,9號引腳連接復(fù)位電路。1-8號引腳連接8位按鍵開關(guān)。10、11號引腳連接接收電路單片機的11、10號引腳。接收電路,18、19號引腳

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論