單片機(匯編)-第8章_第1頁
單片機(匯編)-第8章_第2頁
單片機(匯編)-第8章_第3頁
單片機(匯編)-第8章_第4頁
單片機(匯編)-第8章_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章編輯課件第8章

80C51串行擴展技術

本章要點: ☆串行擴展特點 ☆串行擴展方式分類 ☆虛擬串行擴展慨念 ☆移位寄存器串行擴展方式 ☆

80C51I/O虛擬串行接口 ☆

I2C總線串行擴展技術 ☆

I2C總線擴展I/O口通用器件PCF8574 ☆虛擬I2C總線擴展AT24CXX系列E2PROM編輯課件§8-1串行擴展概述一、串行擴展特點⑴最大程度發(fā)揮最小系統(tǒng)的資源功能。原來由并行擴展占用的P0口、P2口資源,直接用于I/O口。⑵簡化連接線路,縮小印板面積。⑶擴展性好,可簡化系統(tǒng)的設計。⑷串行擴展的缺點:數(shù)據(jù)吞吐容量較小,信號傳輸速度較慢,但隨著CPU芯片工作頻率的提高,以及串行擴展芯片功能的增強,這些缺點將逐步淡化。

編輯課件

二、串行擴展方式分類1、一線制一線制的典型代表為Dallas公司推出的單總線(1-wire)。編輯課件2、二線制二線制的典型代表為philips公司推出的I2C總線(IntelIntegratedCircuitBUS)。

編輯課件3、三線制三線制(不包括片選線)主要有兩種:⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。

編輯課件

SPI的時鐘線是SCK,數(shù)據(jù)線MOSI(主發(fā)從收)、MOSO(主收從發(fā)),主從器件的MOSI和MOSO是同名端相連。Microwire/PLUS的時鐘線是SK,數(shù)據(jù)線為SI和SO,但SI、SO依照主器件的數(shù)據(jù)傳送方向而定,主器件的SO與所有擴展器件數(shù)據(jù)輸入端DI或SI相連;主器件的SI與所有擴展器件數(shù)據(jù)輸出端DO或SO相連。由于該兩類器件無法通過數(shù)據(jù)傳輸線尋址,因此,必須由MCUI/O線單獨尋址,連到擴展器件的片選端CS(若只擴展一片,可將擴展芯片CS接地)。編輯課件

4、80C51移位寄存器串行擴展80C51的UART(UniversalAsynohronousReceiver/Transmitter)有4種工作方式,其中方式0為同步移位寄存器工作方式,通過移位寄存方式,可將串行數(shù)據(jù)并行輸出,也可以將并行數(shù)據(jù)串行輸入。編輯課件

三、虛擬串行擴展概念用通用I/O口來模擬串行接口,構(gòu)成虛擬的串行擴展接口。只要嚴格控制模擬同步信號,并滿足串行同步數(shù)據(jù)傳送的時序要求,就可滿足串行數(shù)據(jù)傳送的可靠性要求。編輯課件

§8-280C51移位寄存器串行擴展技術一、移位寄存器串行擴展方式80C51串行方式0時,串行口作為同步移位寄存器使用。TXD端(P3.1)發(fā)出移位脈沖,頻率為fosc/12,RXD端(P3.0)輸入輸出數(shù)據(jù)。編輯課件

1、80C51擴展并行輸出口

74LS164為串入并出移位寄存器,其中A、B為串行數(shù)據(jù)輸入端,QA、QB、…、QH為并行數(shù)據(jù)輸出端(QA為高位),CLK為同步時鐘輸入端,CLR為輸出清0端。若不需將輸出數(shù)據(jù)清0,則CLR端接Vcc。編輯課件

2、80C51擴展并行輸入口

74LS165為并入串出移位寄存器,A、B、…、H為并行輸入端(A為高位),QH為串行數(shù)據(jù)輸出端,SER為串行數(shù)據(jù)輸入端,CLK為同步時鐘輸入端,S/L為預置控制端。S/L=0時,鎖存并行輸入數(shù)據(jù);S/L=1時,可進行串行移位操作。編輯課件

二、串行方式0歸一化子程序所謂歸一化子程序,即通用或標準化操作子程序,將80C51串行方式0所有應用操作歸納成幾個基本的輸入輸出子程序,并使這些標準子程序具有規(guī)范的入口條件和出口狀態(tài)。應用時,只要設置相應的入口和出口,調(diào)用歸一化子程序,就能達到串行輸入輸出的目的。80C51串行方式0歸一化子程序:⑴單字節(jié)串行輸出子程序⑵單字節(jié)串行輸入子程序⑶多字節(jié)串行輸出子程序⑷多字節(jié)串行輸入子程序編輯課件

三、80C51I/O虛擬串行接口利用80C51通用I/O口虛擬移位寄存器工作方式實現(xiàn)串行擴展,只需用任一通用I/O口代替RXD和TXD,設為VRXD和VTXD。80C51虛擬串行I/O口歸一化子程序:⑴單字節(jié)虛擬串行輸出子程序⑵單字節(jié)虛擬串行輸入子程序⑶多字節(jié)虛擬串行輸出子程序⑷多字節(jié)虛擬串行輸入子程序編輯課件四、移位寄存器串行擴展應用80C51移位寄存器串行擴展應用,只需根據(jù)標準化的電路形式連接,設置好入口條件,然后調(diào)用串行方式0歸一化子程序或虛擬串行接口歸一化子程序,即可完成擴展應用.編輯課件

【例8-1】電路如圖8-5所示,fosc=12MHz,要求發(fā)光二極管從左向右依次點亮,點亮時間為1秒,不斷循環(huán)。設串行方式0歸一化子程序已存在ROM中。編輯課件

解: PIOX1BITP1.0;定義PIOX1WORK:MOVA,#10000000B;置D7燈亮,其余暗LOOP:CLRPIOX1;74LS164輸出全0,燈全暗LCALLUART0;調(diào)用單字節(jié)串行輸出子程序LCALLDLY1s;調(diào)用延時1秒子程序(略)RRA;右移SJMPLOOP;編輯課件

【例8-2】電路如圖8-6所示,fosc=12MHz,要求每隔10ms,檢測鍵K0~K7狀態(tài),并存入內(nèi)RAM2FH。設虛擬串行接口歸一化子程序已存在ROM中。編輯課件

解:ORG0000H;復位地址LJMPSTAT;轉(zhuǎn)初始化程序ORG000BH;T0中斷入口地址LJMPIT0;轉(zhuǎn)T0中斷服務子程序VRXDBITP1.0;P1.0虛擬RXDVTXDBITP1.1;P1.1虛擬TXDPIOX2BITP1.2;P1.2虛擬PIOX2ORG0100H;初始化程序首地址STAT:MOVTMOD,#01H;置T0定時器方式1MOVTH0,#0D8H;置T0定時初值10msMOVTL0,#0F0H;SETBTR0;啟動T0SETBET0;T0開中SETBEA;CPU開中LJMPWORK;轉(zhuǎn)主程序并等待T0中斷ORG1000H;T0中斷服務子程序首地址IT0:MOVTH0,#0D8H;重置T0定時初值10msMOVTL0,#0F0H;PUSHAcc;保護現(xiàn)場PUSHPSW;INPUT:LCALLVUARTI;調(diào)用虛擬串行輸入子程序MOV2FH,A;存鍵K0~K7狀態(tài)數(shù)據(jù)POPPSW;恢復現(xiàn)場POPAcc;RETI;編輯課件§8-3I2C總線串行擴展技術一、I2C總線串行擴展概述1、擴展連接方式

編輯課件

具有I2C總線結(jié)構(gòu)的器件,不論SRAM、E2PROM、ADC/DAC、I/O口或MCU,均可通過SDA、SCL連接(同名端相連)。無I2C總線結(jié)構(gòu)的器件,如LED/LCD顯示器、鍵盤、碼盤、打印機等也可通過具有I2C總線結(jié)構(gòu)的I/O接口電路成為串行擴展器件。編輯課件

2、器件尋址方式具有I2C總線結(jié)構(gòu)的器件在器件出廠時已經(jīng)給定了器件的地址編碼。

I2C總線器件地址SLA格式如下:⑴DA3~DA04位器件地址是I2C總線器件固有的地址編碼,器件出廠時就已給定,用戶不能自行設置。⑵A2A1A03位引腳地址用于相同地址器件的識別。若I2C總線上掛有相同地址的器件,或同時掛有多片相同器件時,可用硬件連接方式對3位引腳A2A1A0接Vcc或接地,形成地址數(shù)據(jù)。⑶R/W數(shù)據(jù)傳送方向。R/W=1時,主機接收(讀);R/W=0時,主機發(fā)送(寫)。編輯課件

3、接口電氣結(jié)構(gòu)I2C總線端口輸出為開漏結(jié)構(gòu),總線上必須外接上拉電阻Rp,其阻值通常可選5~10KΩ。4、總線驅(qū)動能力由于I2C總線器件均為CMOS器件,總線具有足夠的電流驅(qū)動能力。I2C總線的電容負載能力為400pF(通過驅(qū)動擴展可達4000pF)。I2C總線傳輸速率為100Kb/s(改進后的規(guī)范為400Kb/s)。編輯課件5、I2C總線時序一次完整的數(shù)據(jù)傳送過程應包括:起始(S)、發(fā)送尋址字節(jié)(SLAR/W)、應答、發(fā)送數(shù)據(jù)、應答、…、發(fā)送數(shù)據(jù)、應答、終止(P)。編輯課件

三、80C51單主系統(tǒng)虛擬I2C總線軟件包80C51只能采用虛擬I2C總線方式,并且只能用于單主系統(tǒng),虛擬I2C總線接口可用通用I/O口中任一端線充任,數(shù)據(jù)線定義為VSDA,時鐘線定義為VSCL。80C51單主系統(tǒng)虛擬I2C總線軟件包VIIC可由二大類共9個歸一化子程序組成。二大類程序分別為典型信號模擬子程序和數(shù)據(jù)傳送通用子程序。編輯課件

1、典型信號模擬子程序?qū)τ谔摂MI2C總線,有幾個重復應用的典型信號,可根據(jù)I2C總線時序要求,編制這些典型信號子程序:⑴啟動信號STAT⑵終止信號STOP⑶發(fā)送應答位(A)MACK⑷發(fā)送應答非位(A)NACK⑸檢查應答位CACK2、數(shù)據(jù)傳送通用子程序數(shù)據(jù)傳送通用子程序是應用典型信號模擬子程序(起始、終止、應答和檢查應答)并按I2C總線數(shù)據(jù)傳送時序要求編制的子程序。⑴發(fā)送一字節(jié)數(shù)據(jù)子程序WR1B⑵接收一字節(jié)數(shù)據(jù)子程序RD1B⑶發(fā)送N個字節(jié)數(shù)據(jù)子程序WRNB⑷接收N個字節(jié)數(shù)據(jù)子程序RDNB

編輯課件

發(fā)送N個字節(jié)數(shù)據(jù)子程序WRNB按照I2C總線數(shù)據(jù)傳送時序要求,一次完整的數(shù)據(jù)發(fā)送過程應包括起始(S)、發(fā)送尋址字節(jié)(SLAR/W)、應答、發(fā)送數(shù)據(jù)、應答、…、發(fā)送數(shù)據(jù)、應答、終止(P),其格式如下:其中,紅色部分由主器件發(fā)送,從器件接收;黑色部分由從器件發(fā)送,主器件接收。入口條件:①偽指令定義NUMB、SLA、MTD單元地址;②發(fā)送數(shù)據(jù)字節(jié)數(shù)存內(nèi)RAMNUMB單元;③發(fā)送尋址字節(jié)存內(nèi)RAMSLA單元;④發(fā)送數(shù)據(jù)依次存放在首址為MTD的內(nèi)RAM中。占用資源:Acc、R1、R2、R3、Cy、F0。編輯課件WRNB:MOVR3,NUMB;取發(fā)送數(shù)據(jù)字節(jié)數(shù)N(存在內(nèi)RAMNUMB單元)WRNB0:LCALLSTAT;啟動I2C總線MOVA,SLA;讀發(fā)送尋址字節(jié)(存在內(nèi)RAMSLA單元)LCALLWR1B;發(fā)送尋址字節(jié)LCALLCACK;檢查應答位JBF0,WRNB0;應答不正常,返回重發(fā)MOVR1,#MTD;應答(A)正常,取發(fā)送數(shù)據(jù)存儲區(qū)首址WRDA:MOVA,@R1;讀一個字節(jié)發(fā)送數(shù)據(jù)LCALLWR1B;發(fā)送一個字節(jié)LCALLCACK;檢查應答位JBF0,WRNB;應答不正常,返回重發(fā)INCR1;應答(A)正常,指向發(fā)送數(shù)據(jù)下一字節(jié)DJNZR3,WRDA;判N個數(shù)據(jù)發(fā)送完畢否?未完繼續(xù)LCALLSTOP;N個數(shù)據(jù)發(fā)送完畢,發(fā)送結(jié)束信號RET;編輯課件

接收N個字節(jié)數(shù)據(jù)子程序RDNB按照I2C總線數(shù)據(jù)傳送時序要求,接收N個字節(jié)數(shù)據(jù)應按下列格式編程:

其中,紅色部分由主器件發(fā)送,從器件接收;黑色部分由從器件發(fā)送,主器件接收。入口條件:①偽指令定義NUMB、SLA、MRD地址;②接收數(shù)據(jù)字節(jié)數(shù)存內(nèi)RAMNUMB單元;③接收尋址字節(jié)存內(nèi)RAMSLA單元。出口狀態(tài):接收N個字節(jié)依次存在首址MRD的內(nèi)RAM中。占用資源:Acc、R1、R2、R3、Cy、F0。編輯課件

RDNB:MOVR3,NUMB;取接收數(shù)據(jù)字節(jié)數(shù)N(存在內(nèi)RAMNUMB單元)RDNB0:LCALLSTAT;啟動I2C總線MOVA,SLA;讀接收尋址字節(jié)(存在內(nèi)RAMSLA單元)LCALLWR1B;發(fā)送接收尋址字節(jié)LCALLCACK;檢查應答位JBF0,RDNB0;應答不正常,返回重新開始RDA0:MOVR1,#MRD;應答(A)正常,取接收數(shù)據(jù)存儲區(qū)首址RDA1:LCALLRD1B;接收一個字節(jié)數(shù)據(jù)MOV@R1,A;存一個字節(jié)數(shù)據(jù)DJNZR3,ACK;判N個數(shù)據(jù)接收完畢否?未完轉(zhuǎn)發(fā)送應答位LCALLNACK;N個數(shù)據(jù)接收完畢,發(fā)送應答非位(A)LCALLSTOP;發(fā)送終止信號RET;子程序結(jié)束返回ACK:LCALLMACK;發(fā)送應答位(A)INCR1;指向下一接收數(shù)據(jù)存儲單元地址SJMPRDA1;轉(zhuǎn)接收下一字節(jié)數(shù)據(jù)編輯課件

3、虛擬I2C總線軟件包VIIC小結(jié)⑴VIIC軟件包共有9個歸一化子程序組成。⑵VIIC軟件包僅適用單主系統(tǒng)即主方式下I2C總線外圍擴展。且應fosc≤6MHz,若fosc>6MHz,則應相應調(diào)整NOP指令個數(shù),以滿足I2C總線數(shù)據(jù)傳送時序要求。⑶VIIC軟件包可嵌入到80C51ROM中任一空間,作為I2C總線擴展應用程序設計的軟件支持平臺。⑷在應用VIIC軟件包初始化中,應對軟件包中標記符號用偽指令定義。⑸VIIC軟件包占用資源:F0、Cy、Acc、R1、R1、R3。在調(diào)用VIIC軟件包之前,若涉及這些存儲單元中原有數(shù)據(jù)尚需保存,應采取保護現(xiàn)場措施,在調(diào)用結(jié)束后恢復現(xiàn)場。

編輯課件

§8-4虛擬I2C總線擴展I/O口一、I2C總線擴展I/O口通用器件PCF85741、引腳功能

PCF8574是一個帶有中斷輸出的8位準雙向I/O口I2C總線擴展芯片。A2~A0:地址引腳;P0~P7:8位準雙向I/O口,驅(qū)動能力IOL=25mA,IOH<300A;SDA、SCL :I2C總線接口;INT:中斷請求輸出,低電平有效,開漏輸出;

溫馨提示

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

評論

0/150

提交評論