第七章 51單片機(jī)硬件資源應(yīng)用技術(shù)_第1頁(yè)
第七章 51單片機(jī)硬件資源應(yīng)用技術(shù)_第2頁(yè)
第七章 51單片機(jī)硬件資源應(yīng)用技術(shù)_第3頁(yè)
第七章 51單片機(jī)硬件資源應(yīng)用技術(shù)_第4頁(yè)
第七章 51單片機(jī)硬件資源應(yīng)用技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩106頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)原理及應(yīng)用第七章51單片機(jī)硬件資源應(yīng)用技術(shù)華中科技大學(xué)電氣與電子工程學(xué)院2015年秋季學(xué)期1目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用2目錄7.151單片機(jī)并行I/O口的應(yīng)用51單片機(jī)最小應(yīng)用系統(tǒng)51單片機(jī)內(nèi)部并行I/O口的結(jié)構(gòu)并行I/O接口的應(yīng)用方法簡(jiǎn)單并行I/O接口的擴(kuò)展7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用3單片機(jī)最小應(yīng)用系統(tǒng)是在簡(jiǎn)單的應(yīng)用場(chǎng)合,以最簡(jiǎn)便的電路就可以滿足其要求,它只需要一片單片機(jī)芯片再配上時(shí)鐘電路和復(fù)位電路即可構(gòu)成。結(jié)構(gòu)簡(jiǎn)單,價(jià)格便宜,使用非常方便。單片機(jī)最小應(yīng)用系統(tǒng)8051/8751片內(nèi)駐留4KB的掩膜ROM/EPROM,在構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要加上復(fù)位電路、時(shí)鐘電路、EA引腳接高電平,即可通電工作。(程序及原始數(shù)據(jù)占用程序存儲(chǔ)器空間少)8051/8751最小應(yīng)用系統(tǒng)8031片內(nèi)無(wú)駐留ROM,所以必須擴(kuò)展程序存儲(chǔ)器,常選用EPROM芯片。在擴(kuò)展程序存儲(chǔ)器時(shí),還必須接上地址鎖存器。EA接地。8031最小應(yīng)用系統(tǒng)目錄7.151單片機(jī)并行I/O口的應(yīng)用51單片機(jī)最小應(yīng)用系統(tǒng)51單片機(jī)內(nèi)部并行I/O口的結(jié)構(gòu)并行I/O接口的應(yīng)用方法簡(jiǎn)單并行I/O接口的擴(kuò)展7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用7MCS-51單片機(jī)并行口結(jié)構(gòu)51單片機(jī)共有4個(gè)8位雙向I/O口,共32口線。每位均有自己的鎖存器(特殊功能寄存器P0~P3)、輸出驅(qū)動(dòng)器和輸入緩沖器。部分接口具有不同的第二功能。8P0口內(nèi)部結(jié)構(gòu)輸出鎖存器兩個(gè)輸入緩沖器推拉式I/O驅(qū)動(dòng)器多路開(kāi)關(guān)(1)功能:用于控制選通I/O方式(低)還是地址/數(shù)據(jù)輸出方式(高)(2)控制方式:由內(nèi)部控制信號(hào)產(chǎn)生當(dāng)控制信號(hào)為1時(shí),P0作為地址/數(shù)據(jù)總線使用輸出數(shù)據(jù)時(shí),在地址/數(shù)據(jù)總線和控制線聯(lián)合作用下,使T1/T2中的一個(gè)導(dǎo)通,另一個(gè)截止,從而在引腳上輸出高/低電平輸入數(shù)據(jù)時(shí),控制線=0,內(nèi)部總線自動(dòng)向鎖存器輸出1,T2截止,數(shù)據(jù)從讀引腳緩沖器讀入此時(shí)P0可看作真正的雙向口P0口作為I/O口使用當(dāng)控制信號(hào)為0時(shí),P0作為I/O口使用寫(xiě)鎖存器端口輸出寫(xiě)信號(hào),用于鎖存輸出狀態(tài)P0作為I/O口輸出時(shí)需要在片外加上拉電阻(約20k)P0作為I/O口輸入時(shí)有兩種方式:讀鎖存器和讀引腳。(1)如“ANLP0,#0FH”時(shí)讀鎖存器信號(hào)有效(2)如“MOVA,P0”時(shí)讀引腳信號(hào)有效讀引腳時(shí),必須保證T2截止,才能保證高電平的正確輸入讀引腳時(shí),必須做準(zhǔn)備工作,即讓鎖存器輸出1。我們稱(chēng)這樣特點(diǎn)的端口為準(zhǔn)雙向I/O口。P1口內(nèi)部結(jié)構(gòu)1)只能作I/O口使用,且也是一個(gè)準(zhǔn)雙向口;2)內(nèi)部已有上拉電阻,不是漏極開(kāi)路輸出口;P2口內(nèi)部結(jié)構(gòu)1)當(dāng)P2口作為通用I/O時(shí),是一準(zhǔn)雙向口。2)從P2口輸入數(shù)據(jù)時(shí),先向鎖存器寫(xiě)“1”。3)做地址總線時(shí),輸出地址高8位。P3口內(nèi)部結(jié)構(gòu)做普通I/O端口使用時(shí),第二輸出功能端為1.使用第二功能時(shí),輸出端口鎖存器應(yīng)為1I/O引腳注釋P3.0串行數(shù)據(jù)接受端P3.1串行數(shù)據(jù)發(fā)送端P3.2外部中斷0請(qǐng)求端P3.3外部中斷1請(qǐng)求端P3.4定時(shí)/計(jì)數(shù)器0外部輸入端P3.5定時(shí)/計(jì)數(shù)器1外部輸入端P3.6外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通P3.7外部數(shù)據(jù)存儲(chǔ)器讀選通I/O口小結(jié)P0、P1、P2、P3共32條I/O線,均由鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器組成,均可位尋址和字節(jié)尋址;作為通用I/O口使用時(shí)均為準(zhǔn)雙向口,讀引腳時(shí)需對(duì)鎖存器置1;P0需要外接上拉電阻,P1、P2、P3口上拉電阻內(nèi)置,不需外接;P0口和P2口可作為地址/數(shù)據(jù)總線或地址總線使用;P3口可作為控制總線和其他I/O部件的信號(hào)線14目錄7.151單片機(jī)并行I/O口的應(yīng)用51單片機(jī)最小應(yīng)用系統(tǒng)51單片機(jī)內(nèi)部并行I/O口的結(jié)構(gòu)并行I/O接口的應(yīng)用方法簡(jiǎn)單并行I/O接口的擴(kuò)展7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用15I/O接口的輸出16CPU執(zhí)行一條寫(xiě)端口的指令可將數(shù)據(jù)寫(xiě)入端口鎖存器并通過(guò)輸出驅(qū)動(dòng)電路送到端口引腳,從而實(shí)現(xiàn)數(shù)據(jù)的輸出,例如:MOVP0,AP0在作為I/O口時(shí)需要外接上拉電阻。I/O接口的輸入17輸入操作分為“讀鎖存器”和“讀引腳”兩種類(lèi)型,由CPU根據(jù)指令產(chǎn)生的硬件信號(hào)自動(dòng)決定執(zhí)行哪種操作;讀鎖存器:從鎖存器中讀取數(shù)據(jù),進(jìn)行處理,并把處理后的數(shù)據(jù)重新寫(xiě)入鎖存器中。在ANL、ORL、XRL、CPL;INC、DEC;DJNZ、JBC等指令中,當(dāng)目的操作數(shù)為某I/O口或某I/O口的一位時(shí),執(zhí)行“讀鎖存器”操作。讀引腳:一般是以I/O端口為源操作數(shù)的指令,如讀P1口的輸入狀態(tài)時(shí),讀引腳指令:MOVA,P1讀引腳時(shí)需將鎖存器先置1,使T2場(chǎng)效應(yīng)管截止【例7-1】圖7-1是8051單片機(jī)應(yīng)用系統(tǒng),在P1.0口線上連接了一個(gè)按鍵,在P1.1口線上連接了一個(gè)發(fā)光二極管。要求當(dāng)按鍵按下時(shí)點(diǎn)亮發(fā)光二極管,而當(dāng)按鍵斷開(kāi)時(shí)發(fā)光二極管熄滅。試編寫(xiě)出相應(yīng)的控制程序。

ORG 0000H

LJMP START

ORG 0030HSTART: ORL P1,#01H ;準(zhǔn)備讀P1.0

MOV C,P1.0 ;讀P1.0

JC NEXT ;判斷P1.0電平

SETB P1.1 ;若為低電平,點(diǎn)亮

SJMP START ;重新檢測(cè)

NEXT: CLRP1.1 ;若為高電平,熄滅

SJMPSTART ;重新檢測(cè)

END目錄7.151單片機(jī)并行I/O口的應(yīng)用51單片機(jī)最小應(yīng)用系統(tǒng)51單片機(jī)內(nèi)部并行I/O口的結(jié)構(gòu)并行I/O接口的應(yīng)用方法簡(jiǎn)單并行I/O接口的擴(kuò)展7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用20簡(jiǎn)單并行I/O接口的擴(kuò)展51單片機(jī)中,P0、P2常用作地址/數(shù)據(jù)總線,P3常用作第二功能,實(shí)際常用的通用I/O口僅為P1口!常用的I/O擴(kuò)展芯片有INTEL公司的8255、8155等(第八章);在一些不太復(fù)雜的場(chǎng)合,常常采用TTL或CMOS電路的鎖存器或三態(tài)門(mén)做簡(jiǎn)單的并行I/O接口擴(kuò)展。常用的TTL芯片有74LS273、74LS244等。74LS2732274LS273為帶清除功能的8D觸發(fā)器,其中:D1~D8為8位數(shù)據(jù)輸入線;Q1~Q8為8位數(shù)據(jù)輸出線;CLK為時(shí)鐘信號(hào),上升沿?cái)?shù)據(jù)鎖存,低電平清除;CLR端為高電平時(shí)具有鎖存功能;電源、接地端。74LS2442374LS244是一個(gè)8位三態(tài)驅(qū)動(dòng)器,其中:2個(gè)4輸入端(1A1-1A4,2A1-2A4),2個(gè)4輸出端(1Y1-1Y4、2Y1-2Y4);兩個(gè)控制端1G、2G(低電平有效,否則呈高阻態(tài));電源、接地端;采用74LS244、74LS273擴(kuò)展的簡(jiǎn)單并行輸入/輸出接口對(duì)端口的輸出指令:MOVDPTR,#7FFFHMOVX@DPTR,A對(duì)端口的輸入指令:MOVDPTR,#7FFFHMOVXA,@DPTR目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用定時(shí)器/計(jì)數(shù)器T0和T1的結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器T0和T1的工作方式定時(shí)器/計(jì)數(shù)器的應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用25在單片機(jī)控制系統(tǒng)中,實(shí)現(xiàn)定時(shí)或計(jì)數(shù),一般有以下3種方法:1.軟件定時(shí)由CPU執(zhí)行一個(gè)循環(huán)程序以進(jìn)行時(shí)間延時(shí)。軟件延時(shí)的特點(diǎn)是時(shí)間精確,且不需要外加硬件電路。但軟件延時(shí)占用CPU時(shí)間,降低了CPU的效率,因此,軟件延時(shí)的時(shí)間不宜太長(zhǎng)。2.硬件定時(shí)對(duì)于延時(shí)時(shí)間較長(zhǎng)的定時(shí),常采用硬件完成。硬件定時(shí)電路的特點(diǎn)是定時(shí)功能全部由硬件電路完成,不占CPU的時(shí)間,但需要通過(guò)改變電路中的元件參數(shù)來(lái)調(diào)節(jié)定時(shí)時(shí)間,在使用上不夠靈活。3.可編程的定時(shí)器這種定時(shí)器的定時(shí)方法是通過(guò)對(duì)系統(tǒng)脈沖的計(jì)數(shù)來(lái)實(shí)現(xiàn)的,定時(shí)值及定時(shí)范圍可以很容易地用軟件來(lái)確定和修改,因而功能強(qiáng),使用靈活。此外由于采用計(jì)數(shù)方法實(shí)現(xiàn)定時(shí),因此可編程定時(shí)器都兼有計(jì)數(shù)功能,可以對(duì)外部脈沖進(jìn)行計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)MCS-51系列單片機(jī)的內(nèi)部集成有兩個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器,即定時(shí)器/計(jì)數(shù)器T0和定時(shí)器/計(jì)數(shù)器T1,T0和T1既可以用于定時(shí)也可以用于對(duì)外部事件進(jìn)行計(jì)數(shù),還可以作為串行接口的波特率發(fā)生器。T0和T1分別由8位特殊功能寄存器TH0、TL0和TH1、TL1組成,其初值可通過(guò)程序設(shè)定,獲得不同的計(jì)數(shù)值或定時(shí)時(shí)間。T0和T1的啟動(dòng)和停止由特殊功能寄存器TCON控制,工作方式由TMOD控制。定時(shí)功能當(dāng)用于定時(shí)器方式時(shí),定時(shí)器的輸入來(lái)自內(nèi)部時(shí)鐘發(fā)生器電路,每個(gè)機(jī)器周期計(jì)數(shù)器加1,而1個(gè)機(jī)器周期包含有12個(gè)振蕩周期,所以,定時(shí)器的計(jì)數(shù)頻率為晶振頻率的1/12。如果單片機(jī)的時(shí)鐘頻率為12MHz,則計(jì)數(shù)頻率為1MHz,即每微秒計(jì)數(shù)器加1計(jì)數(shù)功能當(dāng)用于計(jì)數(shù)器方式時(shí),計(jì)數(shù)器對(duì)外部事件計(jì)數(shù),計(jì)數(shù)脈沖來(lái)自外部輸入引腳(T0和T1)。當(dāng)外部輸入引腳發(fā)生1到0的負(fù)跳變時(shí),計(jì)數(shù)器加1。CPU在每個(gè)機(jī)器周期的S5P2拍節(jié)對(duì)外部計(jì)數(shù)脈沖進(jìn)行采樣。如果前一個(gè)機(jī)器周期采樣為高電平,后一個(gè)機(jī)器周期采樣為低電平即為一個(gè)有效的計(jì)數(shù)脈沖,在下一個(gè)機(jī)器周期的S3P1進(jìn)行計(jì)數(shù)。由于計(jì)數(shù)脈沖是在兩個(gè)機(jī)器周期進(jìn)行的,所以最高計(jì)數(shù)頻率是振蕩頻率的1/24。定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)定時(shí)控制寄存器TCONTF0、TF1:定時(shí)器0、定時(shí)器1溢出標(biāo)志。TR0、TR1:定時(shí)器0、定時(shí)器1運(yùn)行控制標(biāo)志。TR0(TR1)=0停止定時(shí)器/計(jì)數(shù)器工作TR0(TR1)=1啟動(dòng)定時(shí)器/計(jì)數(shù)器工作IE0和IE1:外部中斷0、外部中斷1跳變中斷請(qǐng)求標(biāo)志IT0和IT1:外部中斷0、外部中斷1請(qǐng)求觸發(fā)方式控制位

IT0(IT1)=1脈沖觸發(fā)方式,后沿負(fù)跳有效

IT0(IT1)=0電平觸發(fā)方式,低電平有效工作方式控制寄存器TMOD

目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用定時(shí)器/計(jì)數(shù)器T0和T1的結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器T0和T1的工作方式定時(shí)器/計(jì)數(shù)器的應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用34工作方式0電路邏輯結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器0工作方式0結(jié)構(gòu)圖方式0應(yīng)用舉例在方式0下,當(dāng)為計(jì)數(shù)器工作方式時(shí),計(jì)數(shù)值的范圍是:1~8192(213)當(dāng)為定時(shí)器工作方式時(shí),定時(shí)時(shí)間為:(213-T0初值)×機(jī)器周期

或(213-T0初值)×晶振周期×12如晶振頻率為12MHz,

最小定時(shí)時(shí)間為

(213-(213-1)×10-6=10-6s

最大定時(shí)時(shí)間為:

(213-0)×10-6=8192×10-6s=8.192ms工作方式1及應(yīng)用方式1和方式0的區(qū)別僅僅是計(jì)數(shù)器的位數(shù)不同,計(jì)數(shù)器由TH0全部8位和TL0全部8位構(gòu)成。MCS-51單片機(jī)只所以重復(fù)設(shè)置幾乎完全一樣的方式0和方式,是出于與MCS-48單片機(jī)的考慮,因?yàn)镸CS-48的定時(shí)器/計(jì)數(shù)器是13位的計(jì)數(shù)結(jié)構(gòu)。工作方式1電路邏輯結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器0工作方式1結(jié)構(gòu)圖在方式1下,當(dāng)為計(jì)數(shù)器工作時(shí),計(jì)數(shù)值的范圍是:

1~65536(216)當(dāng)為定時(shí)器工作方式時(shí),定時(shí)時(shí)間為:(216-T0初值)×機(jī)器周期或(216-T0初值)×晶振周期×12

如晶振頻率為12MHz,

則最小定時(shí)時(shí)間為

[216-(216-1)]×10-6=10-6s

最大定時(shí)時(shí)間為

(216-0)×10-6=65536×10-6s=65.536ms工作方式2及應(yīng)用方式2是定時(shí)/計(jì)數(shù)器成為自動(dòng)重裝入初值的8位計(jì)數(shù)器。在這種工作方式下,把16位計(jì)數(shù)器分為兩個(gè)8位計(jì)數(shù)器,以TL作計(jì)數(shù)器,以TH作預(yù)置寄存器,初始化時(shí)由程序把計(jì)數(shù)初值分別裝入TH和TL中,當(dāng)計(jì)數(shù)溢出時(shí),由硬件將預(yù)置寄存器TH中的初值自動(dòng)重新裝入計(jì)數(shù)器TL,以進(jìn)行新一輪的計(jì)數(shù)。模式2可自動(dòng)循環(huán)計(jì)數(shù),省去了軟件重新裝入初值的麻煩,提高了定時(shí)的精度。該模式常用在定時(shí)精度高的場(chǎng)合,例如做為串行口的波特率發(fā)生器使用。工作方式2電路邏輯結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器0工作方式2結(jié)構(gòu)圖工作方式3及應(yīng)用1.電路邏輯結(jié)構(gòu)工作方式3只適用于T0,此時(shí)TL0和TH0被分成兩個(gè)互相獨(dú)立的8位計(jì)數(shù)器,TL0可以計(jì)數(shù)使用又可以定時(shí)使用,定時(shí)器/計(jì)數(shù)器0的各控制位和引腳信號(hào)全歸它使用,其功能和操作與方式0和方式1完全相同。TH0固定為定時(shí)器工作,對(duì)機(jī)器周期進(jìn)行計(jì)數(shù),并且由TH0占用定時(shí)器T1的中斷資源TR1和TF1,因此TH0的溢出將置位TF1。也就是說(shuō),TH0控制了定時(shí)器T1的中斷。定時(shí)器/計(jì)數(shù)器0工作方式3結(jié)構(gòu)如圖7-5所示。工作方式3電路邏輯結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器0工作方式3結(jié)構(gòu)圖目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用定時(shí)器/計(jì)數(shù)器T0和T1的結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器T0和T1的工作方式定時(shí)器/計(jì)數(shù)器的應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用44

45【例7-3】編寫(xiě)計(jì)數(shù)器T0初始化程序,要求如下:工作于方式0,計(jì)數(shù)值n=1,允許中斷。

初值=213-1=1111111111111高8位:11111111->0FFH低5位:11111->00011111->1FH

MOV

TMOD,#04H

MOV

TH0,#0FFH

MOV

TL0,#1FH

MOV

IE,#10000010B

SETB TR0 EA

ESET1EX1ET0EX0IE【例7-4】編寫(xiě)計(jì)數(shù)器T1初始化程序,要求如下:工作于方式1,計(jì)數(shù)值n=100,禁止中斷。初值=216-100=65436=0FF9CH高8位:0FFH低5位:9CH

MOV

TMOD,#50H

MOV

TH0,#0FFH

MOV

TL0,#9CH

MOV

IE,#00000000B

SETB

TR1

EA

ESET1EX1ET0EX0IE【例7-7】編程定時(shí)器T1初始化程序,要求如下:工作于方式2,定時(shí)時(shí)間為t=100us,系統(tǒng)主頻6MHz,關(guān)中斷。計(jì)數(shù)值:100us/2us=50初值=28-50=206=0CEH

MOV TMOD,#20H

MOV TL1,#CEH

MOV TH1,#CEH

MOV IE,#00000000B

SETB TR1EA

ESET1EX1ET0EX0IE【例7-8】假設(shè)系統(tǒng)時(shí)鐘頻率為6MHz,要在P1.5上輸出周期為50ms、占空比為50%的正方波。試分別編寫(xiě)用查詢法和中斷法實(shí)現(xiàn)的程序。周期50ms:高、低電平分別25ms計(jì)數(shù)值:25ms/2us=12500初值:216-12500=53036=0CF2CH查詢法 ORG 0000H AJMP START ORG 0030HSTART: MOV TMOD,#01 ;T0方式1 SET TR0 ;起動(dòng)T0LOOP: MOV TH0,#0CFH;設(shè)置初值 MOV TL0,#2CHLOOP1: JNB TF0,LOOP1 ;查詢溢出 CLR TF0 CPL P1.5 SJMP LOOP END中斷法 ORG 0000H AJMP MAIN ORG 000BH ;T0入口 AJMP INT_T0 ORG 0030HMAIN: MOV SP,#60H MOV TMOD,#01 ;T0方式1 MOV TL0,#2CH

;設(shè)置初值 MOV TH0,#0CFH SETB

TR0 ;啟動(dòng)TR0 SETB ET0 ;允許中斷 SETB EAHERE: AJMP HEREINIT_T0: MOV TL0,#2CH

MOV TH0,#0CFH CPL P1.5 RETI目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用串行通訊的基礎(chǔ)知識(shí)51單片機(jī)串行接口的結(jié)構(gòu)串行接口的控制寄存器(SCON)和電源控制寄存器(PCON)51單片機(jī)串行接口的工作方式與波特率51單片機(jī)串行接口的應(yīng)用55計(jì)算機(jī)與外界的信息交換稱(chēng)為通信。通信的基本方式可分為并行通信和串行通信兩種。所謂并行通信是指數(shù)據(jù)的各位同時(shí)在多根數(shù)據(jù)線上發(fā)送或接收。串行通信是數(shù)據(jù)的各位在同一根數(shù)據(jù)線上依次逐位發(fā)送或接收。串行通信基礎(chǔ)知識(shí)

目前串行通信在單片機(jī)雙機(jī)、多機(jī)以及單片機(jī)與PC機(jī)之間的通信等方面得到了廣泛應(yīng)用。并行通信示意圖P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P2.7RDWRRDWRCSD7D6D5D4D3D2D1D0825589C51串行通信示意圖89C51外設(shè)TXDTXDRXDRXD發(fā)送接收異步通信和同步通信串行通信按同步方式分為異步通信和同步通信兩種方式。1.同步通信(SynchronousCommunication)

同步通信是一種連續(xù)傳送數(shù)據(jù)的通信方式,一次通信傳送多個(gè)字符數(shù)據(jù),稱(chēng)為一幀信息。數(shù)據(jù)傳輸速率較高,通??蛇_(dá)56000bps或更高。其缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格同步。同步字符數(shù)據(jù)字符1數(shù)據(jù)字符2…數(shù)據(jù)字符n-1數(shù)據(jù)字符n校驗(yàn)字符(校驗(yàn)字符)同步通信數(shù)據(jù)傳送格式同步通信的數(shù)據(jù)幀格式如下圖所示。2.異步通信(AsynchronousCommunication)

在異步通信中,數(shù)據(jù)以字符或字節(jié)為單位組成數(shù)據(jù)幀進(jìn)行逐幀傳送。收、發(fā)端各有一套彼此獨(dú)立,互不同步的通信機(jī)構(gòu)和時(shí)鐘。由于收發(fā)數(shù)據(jù)的幀格式相同,因此可以相互識(shí)別接收到的數(shù)據(jù)信息。D0D1D2D3D4

D5

D6

D7

0/11111D70/1100D0D1第n字符幀空閑位停止位奇偶校驗(yàn)停止位8位數(shù)據(jù)8位數(shù)據(jù)起始位起始位奇偶校驗(yàn)第n-1字符幀第n+1字符幀8位數(shù)據(jù)

異步通信信息幀格式如下圖所示(1)起始位:在沒(méi)有數(shù)據(jù)傳送時(shí),通信線上處于邏輯“1”狀態(tài)。當(dāng)發(fā)送端要發(fā)送1個(gè)字符數(shù)據(jù)時(shí),首先發(fā)送1個(gè)邏輯“0”信號(hào),這個(gè)低電平便是幀格式的起始位。其作用是向接收端表示發(fā)送端開(kāi)始發(fā)送一幀數(shù)據(jù)。接收端檢測(cè)到這個(gè)低電平后,就準(zhǔn)備接收數(shù)據(jù)信號(hào)。(2)數(shù)據(jù)位:在起始位之后,發(fā)送端發(fā)出(或接收端接收)的是數(shù)據(jù)位,數(shù)據(jù)的位數(shù)沒(méi)有嚴(yán)格的限制,5~8位均可。由低位到高位逐位傳送。(3)奇偶校驗(yàn)位:數(shù)據(jù)位發(fā)送完(接收完)之后,可發(fā)送一位用來(lái)檢驗(yàn)數(shù)據(jù)在傳送過(guò)程中是否出錯(cuò)的奇偶校驗(yàn)位。奇偶校驗(yàn)是收發(fā)雙方預(yù)先約定好的有限差錯(cuò)檢驗(yàn)方式之一。有時(shí)也可不用奇偶校驗(yàn)。(4)停止位:字符幀格式的最后部分是停止位,邏輯“1”電平有效,它可占1/2位、1位或2位。停止位表示傳送一幀信息的結(jié)束,也為發(fā)送下一幀信息作好準(zhǔn)備。串行通信的波特率

波特率(BaudRate)是串行通信中一個(gè)重要概念,它是指?jìng)鬏敂?shù)據(jù)的速率,亦稱(chēng)比特率。波特率的定義是每秒傳輸二進(jìn)制數(shù)碼的位數(shù)。如:波特率為1200bps是指每秒鐘能傳輸1200位二進(jìn)制數(shù)碼。

波特率的倒數(shù)即為每位數(shù)據(jù)傳輸時(shí)間。例如:波特率為1200bps,每位的傳輸時(shí)間為:1)(833.01200msdT==

波特率和字符的傳輸速率不同,若采用前面的數(shù)據(jù)幀格式,并且數(shù)據(jù)幀連續(xù)傳送(無(wú)空閑位),則實(shí)際的字符傳輸速率為1200/11=109.09幀/秒。波特率也不同于發(fā)送時(shí)鐘和接收時(shí)鐘頻率。同步通信的波特率和機(jī)器頻率相等,而異步通信的波特率通常是可變的。串行通信的制式1.單工制式(Simplex)

單工制式是指甲乙雙方通信只能單向傳送數(shù)據(jù)。

在串行通信中,數(shù)據(jù)是在兩個(gè)站之間傳送的。按照數(shù)據(jù)傳送方向,串行通信可分為三種制式。發(fā)送器A接收器B2.半雙工制式(Halfduplex)

半雙工制式是指通信雙方都具有發(fā)送器和接收器,雙方既可發(fā)送也可接收,但接收和發(fā)送不能同時(shí)進(jìn)行,即發(fā)送時(shí)就不能接收,接收時(shí)就不能發(fā)送。發(fā)送接收發(fā)送接收A端B端3.全雙工制式(Fullduplex)

全雙工制式是指通信雙方均設(shè)有發(fā)送器和接收器,并且將信道劃分為發(fā)送信道和接收信道,兩端數(shù)據(jù)允許同時(shí)收發(fā),因此通信效率比前兩種高。全雙工制式如圖9.7所示。發(fā)送接收接收發(fā)送A端B端串行通信的校驗(yàn)

串行通信的目的不只是傳送數(shù)據(jù)信息,更重要的是應(yīng)確保準(zhǔn)確無(wú)誤地傳送。因此必須考慮在通信過(guò)程中對(duì)數(shù)據(jù)差錯(cuò)進(jìn)行校驗(yàn),因?yàn)椴铄e(cuò)校驗(yàn)是保證準(zhǔn)確無(wú)誤地通信的關(guān)鍵。常用差錯(cuò)校驗(yàn)方法有奇偶校驗(yàn)、累加和校驗(yàn)以及循環(huán)冗余碼校驗(yàn)等。1.奇偶校驗(yàn)

奇偶校驗(yàn)的特點(diǎn)是按字符校驗(yàn),即在發(fā)送每個(gè)字符數(shù)據(jù)之后都附加一位奇偶校驗(yàn)位(1或0),當(dāng)設(shè)置為奇校驗(yàn)時(shí),數(shù)據(jù)中1的個(gè)數(shù)與校驗(yàn)位1的個(gè)數(shù)之和應(yīng)為奇數(shù);反之則為偶校驗(yàn)。收、發(fā)雙方應(yīng)具有一致的差錯(cuò)檢驗(yàn)設(shè)置,當(dāng)接收1幀字符時(shí),對(duì)1的個(gè)數(shù)進(jìn)行檢驗(yàn),若奇偶性(收、發(fā)雙方)一致則說(shuō)明傳輸正確。奇偶校驗(yàn)只能檢測(cè)到那種影響奇偶位數(shù)的錯(cuò)誤,比較低級(jí)且速度慢,一般只用在異步通信中。2.累加和校驗(yàn)

累加和校驗(yàn)是指發(fā)送方將所發(fā)送的數(shù)據(jù)塊求和,并將“校驗(yàn)和”附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)時(shí)也是先對(duì)數(shù)據(jù)塊求和,將所得結(jié)果與發(fā)送方的“校驗(yàn)和”進(jìn)行比較,若兩者相同,表示傳送正確,若不同則表示傳送出了差錯(cuò)?!靶r?yàn)和”的加法運(yùn)算可用邏輯加,也可用算術(shù)加。累加和校驗(yàn)的缺點(diǎn)是無(wú)法檢驗(yàn)出字節(jié)或位序的錯(cuò)誤。3.循環(huán)冗余碼校驗(yàn)(CRC)

循環(huán)冗余碼校驗(yàn)的基本原理是將一個(gè)數(shù)據(jù)塊看成一個(gè)位數(shù)很長(zhǎng)的二進(jìn)制數(shù),然后用一個(gè)特定的數(shù)去除它,將余數(shù)作校驗(yàn)碼附在數(shù)據(jù)塊之后一起發(fā)送。接收端收到該數(shù)據(jù)塊和校驗(yàn)碼后,進(jìn)行同樣的運(yùn)算來(lái)校驗(yàn)傳送是否出錯(cuò)。目前CRC已廣泛用于數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)通信中,并在國(guó)際上形成規(guī)范,市面上已有不少現(xiàn)成的CRC軟件算法。目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用串行通訊的基礎(chǔ)知識(shí)51單片機(jī)串行接口的結(jié)構(gòu)串行接口的控制寄存器(SCON)和電源控制寄存器(PCON)51單片機(jī)串行接口的工作方式51單片機(jī)串行接口的應(yīng)用7151單片機(jī)的串行接口

51單片機(jī)內(nèi)部有一個(gè)可編程全雙工串行通信接口。該部件不僅能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個(gè)同步移位寄存器使用。串行口結(jié)構(gòu)框圖發(fā)送SBUF(99H)接收SBUF(99H)同步時(shí)鐘門(mén)電路發(fā)送控制器接收控制器輸入移位寄存器串行口控制寄存器(98H)內(nèi)部總線≥1串行口中斷TIRITXD(P3.1)RXD(P3.0)SBUF是串行口緩沖寄存器,包括發(fā)送寄存器和接收寄存器,以便能以全雙工方式進(jìn)行通信。在邏輯上,SBUF只有一個(gè),它既表示發(fā)送寄存器,又表示接收寄存器,具有同一個(gè)單元地址99H。但在物理結(jié)構(gòu)上,則有兩個(gè)完全獨(dú)立的SBUF,一個(gè)是發(fā)送緩沖寄存器SBUF,另一個(gè)是接收緩沖寄存器SBUF。如果CPU寫(xiě)SBUF,如MOVSBUF,A,數(shù)據(jù)就會(huì)被送入發(fā)送寄存器準(zhǔn)備發(fā)送;如果CPU讀SBUF,如MOVA,SBUF,則讀入的數(shù)據(jù)一定來(lái)自接收緩沖器。CPU對(duì)SBUF的讀寫(xiě),實(shí)際是分別訪問(wèn)上述兩個(gè)不同的寄存器。

串行數(shù)據(jù)緩沖器SBUF串行控制寄存器SCON串行控制寄存器SCON(地址:98H)用于設(shè)置串行口的工作方式、監(jiān)視串行口的工作狀態(tài)、控制發(fā)送與接收的狀態(tài)等。工作方式RITIRB8TB8RENSM2SM1SM0SCON98H99H9AH9BH9CH9DH9EH9FH位地址0:雙機(jī)1:多機(jī)多機(jī)通信0:禁止1:允許接收控制發(fā)送數(shù)據(jù)第9位接收數(shù)據(jù)第9位發(fā)送中斷標(biāo)志接收中斷標(biāo)志

SM0SM1:串行口工作方式選擇位。其狀態(tài)組合所對(duì)應(yīng)的工作方式如下表所示。SM0SM1工作方式功能說(shuō)明000同步移位寄存器輸入/輸出,波特率固定為fosc/1201110位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)10211位異步收發(fā),波特率固定為fosc/n,n=64或32)11311位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)串行口工作方式(2)SM2:多機(jī)通信控制器位。在方式0或1中,SM2應(yīng)設(shè)成0。在方式2和方式3中,若SM2=0,串行口以單機(jī)發(fā)送或接收方式工作,TI和RI以正常方式被激活并產(chǎn)生中斷請(qǐng)求。(4)TB8:方式2和方式3中要發(fā)送的第9位數(shù)據(jù)。該位由軟件置位或復(fù)位。(3)REN:串行接受允許控制位。該位由軟件置位或復(fù)位。當(dāng)REN=1,允許接收;當(dāng)REN=0,禁止接收。(5)RB8:接收數(shù)據(jù)第9位。在方式2和方式3時(shí),RB8存放接收到的第9位數(shù)據(jù)。RB8也可用作奇偶校驗(yàn)位。在方式1中,若SM2=0,則RB8是接收到的停止位。在方式0中,該位未用。(6)TI:發(fā)送中斷標(biāo)志位。TI=1,表示已結(jié)束一幀數(shù)據(jù)發(fā)送,可由軟件查詢TI位標(biāo)志,也可以向CPU申請(qǐng)中斷。

注意:TI在任何工作方式下都必須由軟件清0。(7)RI:接收中斷標(biāo)志位。RI=1,表示一幀數(shù)據(jù)接收結(jié)束。可由軟件查詢RI位標(biāo)志,也可以向CPU申請(qǐng)中斷。

注意:RI在任何工作方式下也都必須由軟件清0。

51單片機(jī)中,串行發(fā)送中斷TI和接收中斷RI的中斷入口地址是同是0023H,因此在中斷程序中必須由軟件查詢TI和RI的狀態(tài)才能確定究竟是接收還是發(fā)送中斷,進(jìn)而作出相應(yīng)的處理。單片機(jī)復(fù)位時(shí),SCON所有位均清0。

電源控制寄存器PCON的格式PCOND7D6D5D4D3D2D1D0位名稱(chēng)SMOD-------

SMOD(87H):串行口波特率倍增位。在工作方式1~3時(shí),若SMOD=1,則串行口波特率增加一倍。若SMOD=0,波特率不加倍。系統(tǒng)復(fù)位時(shí),SMOD=0。電源控制寄存器PCON目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用串行通訊的基礎(chǔ)知識(shí)51單片機(jī)串行接口的結(jié)構(gòu)串行接口的控制寄存器(SCON)和電源控制寄存器(PCON)51單片機(jī)串行接口的工作方式51單片機(jī)串行接口的應(yīng)用79串行口工作方式51單片機(jī)串行通信共有4種工作方式,它們分別是方式0、方式1、方式2和方式3,由串行控制寄存器SCON中的SM0、SM1決定。工作方式0在方式0下,串行口作為同步移位寄存器使用,波特率固定為fosc/12。此時(shí)SM2、RB8、TB8均應(yīng)設(shè)置為0。

(1)發(fā)送:TI=0時(shí),執(zhí)行“MOVSBUF,A”啟動(dòng)發(fā)送,8位數(shù)據(jù)由低位到高位從RXD引腳送出,TXD發(fā)送同步脈沖。發(fā)送完后,由硬件置位TI。

(2)接收:RI=0,REN=1時(shí)啟動(dòng)接收,數(shù)據(jù)從RXD輸入,TXD輸出同步脈沖。8位數(shù)據(jù)接收完,由硬件置位RI。可通過(guò)“MOVA,SBUF”讀取數(shù)據(jù)。方式0在實(shí)際系統(tǒng)中較少用到。串行口的工作方式0為同步移位寄存器輸人輸出方式,一般與外接移位寄存器相連,用以擴(kuò)展并行I/O口,這種方式不適用于MCS-5l與其它計(jì)算機(jī)之間的串行通訊。工作方式0工作方式1

方式1是一幀10位的異步串行通信方式,包括1個(gè)起始位(0),8個(gè)數(shù)據(jù)位和一個(gè)停止位(1),其幀格式如下:

起始位0D0D1D2D3D4D5D6D7

停止位1

方式1數(shù)據(jù)幀格式(1)數(shù)據(jù)發(fā)送

當(dāng)TI=0時(shí),執(zhí)行“MOVSBUF,A”指令后開(kāi)始發(fā)送,由硬件自動(dòng)加入起始位和停止位,構(gòu)成一幀數(shù)據(jù),然后由TXD端串行輸出。發(fā)送完后,TXD輸出線維持在“1”狀態(tài)下,并將SCON中的TI置1,表示一幀數(shù)據(jù)發(fā)送完畢。(2)數(shù)據(jù)接收

RI=0,REN=1時(shí),接收電路以波特率的16倍速度采樣RXD引腳,如出現(xiàn)由“1”變“0”跳變,認(rèn)為有數(shù)據(jù)正在發(fā)送。

在接收到第9位數(shù)據(jù)(即停止位)時(shí),必須同時(shí)滿足以下兩個(gè)條件:RI=0,且SM2=0或接收到的停止位為“1”,才把接收到的數(shù)據(jù)存入SBUF中,停止位送RB8,同時(shí)置位RI。若上述條件不滿足,接收到的數(shù)據(jù)不裝入SBUF被舍棄。在方式1下,SM2應(yīng)設(shè)定為0。(3)波特率波特率=2SMOD×(T1溢出率)/32T1溢出率=1/T1定時(shí)時(shí)間=(28-T初值)·T機(jī)1波特率=32·12·(28-T初值)2SMOD·fosc3.工作方式2和方式3

工作方式2和方式3都是11位異步收發(fā)串行通信方式,兩者的差異僅在波特率上有所不同。方式2:波特率=2SMOD·fosc/64(SMOD=0或1)方式3:(與方式1相同)波特率=32·12·(28-T初值)2SMOD·fosc(1)數(shù)據(jù)發(fā)送

TI=0,發(fā)送數(shù)據(jù)前,先由軟件設(shè)置TB8,可使用如下指令完成:

SETBTB8

;將TB8位置1

CLRTB8

;將TB8位置0

然后再向SBUF寫(xiě)入8位數(shù)據(jù),并以此來(lái)啟動(dòng)串行發(fā)送。一幀數(shù)據(jù)發(fā)送完畢后,CPU自動(dòng)將TI置1,其過(guò)程與方式1相同。(2)數(shù)據(jù)接收

REN=1,RI=0時(shí),啟動(dòng)接收

①若SM2=0,接收到的8位數(shù)據(jù)送SBUF,第9位數(shù)據(jù)送RB8。②若SM2=1,接收到的第9位數(shù)據(jù)為0,數(shù)據(jù)不送SBUF;接收到的第9位數(shù)據(jù)為1,數(shù)據(jù)送SBUF,第9位送RB8。

對(duì)波特率需要說(shuō)明的是,當(dāng)串行口工作在方式1或方式3,且要求波特率按規(guī)范取1200、2400、4800、9600…時(shí),若采用晶振12MHz和6MHz,按上述公式算出的T1定時(shí)初值將不是一個(gè)整數(shù),因此會(huì)產(chǎn)生波特率誤差而影響串行通信的同步性能。解決的方法只有調(diào)整單片機(jī)的晶振頻率fosc,為此有一種頻率為11.0592MHz的晶振,這樣可使計(jì)算出的T1初值為整數(shù)。下頁(yè)表中列出了串行方式1或方式3在不同晶振時(shí)的常用波特率和誤差。常用波特率和誤差

晶振頻率(MHZ)波特率

(HZ)SMODT1方式2定時(shí)初值實(shí)際波特率誤差(%)12.0096001F9H8923712.0048000F9H4460712.0024000F3H24040.1612.0012000E6H12020.1611.0592192001FDH19200011.059296000FDH9600011.059248000EAH4800011.059224000F4H2400011.059212000E8H12000目錄7.151單片機(jī)并行I/O口的應(yīng)用7.251單片機(jī)的定時(shí)器/計(jì)數(shù)器及其應(yīng)用7.351單片機(jī)的串行接口及其應(yīng)用串行通訊的基礎(chǔ)知識(shí)51單片機(jī)串行接口的結(jié)構(gòu)串行接口的控制寄存器(SCON)和電源控制寄存器(PCON)51單片機(jī)串行接口的工作方式51單片機(jī)串行接口的應(yīng)用929.3.3工作方式2與工作方式3的應(yīng)用

方式2與方式3都是11位異步通信方式,這兩種方式的區(qū)別僅在于波特率不同。方式2的波特率只有固定的兩種,而方式3的波特率則可由用戶自行設(shè)定。

例利用串行口方式2編制一發(fā)送程序,將片內(nèi)RAM中60H~6FH單元的數(shù)據(jù)串行發(fā)送出去,第9數(shù)據(jù)位TB8作偶校驗(yàn)位。

根據(jù)要求,將串行口設(shè)置為方式2、單工發(fā)送,則SCON控制字為80H。波特率選為fosc/64。工作方式RITIRB8TB8RENSM2SM1SM0SCON98H99H9AH9BH9CH9DH9EH9FH位地址0:雙機(jī)1:多機(jī)多機(jī)通信0:禁止1:允許接收控制發(fā)送數(shù)據(jù)第9位接收數(shù)據(jù)第9位發(fā)送中斷標(biāo)志接收中斷標(biāo)志

采用中斷方式發(fā)送的主程序和中斷程序如下:

ORG 0000H

AJMP MAIN ;轉(zhuǎn)主程序

ORG 0023H ;串口中斷服務(wù)程序

AJMP INTS ;轉(zhuǎn)中斷子程序

MAIN: ORG 0100H ;主程序

MOVSP,#60H ;置堆棧指針

MOVSCON,#80H

;串口設(shè)置為方式2

MOVPCON,#00H

;波特率選為fosc/64

MOVR0,#60H

;數(shù)據(jù)塊首址送R0

MOVR7,#10H

;數(shù)據(jù)塊長(zhǎng)度送R7

SETBEA

;開(kāi)總中斷

SETBES

;開(kāi)串行口中斷 MOVA,@R0

;取出待發(fā)數(shù)據(jù) MOVC,PSW.0

;將奇偶位送TB8 MOVTB8,C MOVSBUF,A ;發(fā)送數(shù)據(jù) SJMP$

;等待中斷INTS:

CLR RI ;發(fā)送結(jié)束標(biāo)志清零

DJNZR7,NEXT;判斷數(shù)據(jù)是否發(fā)送完 CLRES;發(fā)送完關(guān)中斷

AJMP SSJSNEXT: INC R0;發(fā)送數(shù)據(jù)地址增1

MOV A,@R0;取出待發(fā)數(shù)據(jù)

MOV C,PSW.0;將奇偶位送TB8

MOV TB8,C

MOV SBUF,A;發(fā)送數(shù)據(jù)SSJS: RETI

END

例9.4試編制串行口在方式3下接收數(shù)據(jù)塊的程序。設(shè)單片機(jī)晶振為11.0592MHz,波特率為2400b/s,接收的數(shù)據(jù)存在片內(nèi)RAM的40H起始單元的一段區(qū)間內(nèi),數(shù)據(jù)塊長(zhǎng)度由發(fā)送方先發(fā)送過(guò)來(lái)(不超過(guò)允許值),每接收一個(gè)數(shù)據(jù)都核對(duì)其奇偶校驗(yàn)位,正確則存儲(chǔ)數(shù)據(jù),否則給出出錯(cuò)標(biāo)志。解:根據(jù)要求,設(shè)置T1工作于方式2,當(dāng)SMOD=0時(shí),T1計(jì)數(shù)初值為F4H。

查詢法源程序如下:START:MOVTMOD,#20H;T1定時(shí)方式2MOVTL1,#0F4H;置T1計(jì)數(shù)初值

MOVTH1,#0F4HSETBTR1;啟動(dòng)T1MOVSCON,#0D0H;串口方式3,允許接收

MOVPCON,#00H;設(shè)SMOD=0MOVR0,#40H;接收數(shù)據(jù)區(qū)首址送R0JNBRI,$;等待接收數(shù)據(jù)塊長(zhǎng)度

CLRRI;接收后清RIMOVA,SBUF;數(shù)據(jù)塊長(zhǎng)度存R7中

MOVR7,AMAR0:JNBRI,$;等待接收數(shù)據(jù)

CLRRI;清RIMOVA,SBUF;將接收字符讀入AJBPSW.0,MAR1;進(jìn)行奇偶位校驗(yàn)

JBRB8,MAR3SJMPMAR2MAR1:JNBRB8,MAR3MAR2:MOV@R0,A;校驗(yàn)正確保存數(shù)據(jù)INCR0;存儲(chǔ)單元地址增1CLRPSW.5;設(shè)置正確的標(biāo)志

DJNZR7,MAR0;未接收完,繼續(xù)

SJMP$;接收完停機(jī)

MAR3:SETBPSW.5;置校驗(yàn)出錯(cuò)標(biāo)志

SJMP$;停機(jī)

END

例9.2A、B兩臺(tái)單片機(jī),均采用11.0592MHz晶振。A機(jī)以2400bps波特率將內(nèi)部RAM中30H至39H的10個(gè)字節(jié)及校驗(yàn)和經(jīng)串行口發(fā)送給B機(jī),B機(jī)正確接收后存入片內(nèi)RAM的30H至39H單元,并同時(shí)顯示其中的前8位數(shù)據(jù)。A、B兩機(jī)的RXD、TXD交叉相連并共地。兩機(jī)串行口均設(shè)置為方式1,定時(shí)器T1定時(shí)初值為F4H,兩機(jī)采用查詢控制方式程序如下:9.3.2工作方式1的應(yīng)用;A機(jī)發(fā)送程序:

ORG0MOVR0,#30H;R0指向數(shù)據(jù)塊首址

MOVR7,#0AH;循環(huán)次數(shù)為10次

MOVA,#1;初值為1MAIN:MOV@R0,A;設(shè)置數(shù)據(jù)初值為1~AINCR0INCADJNZR7,MAIN

溫馨提示

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

評(píng)論

0/150

提交評(píng)論