單片機(jī)課件第8章_第1頁
單片機(jī)課件第8章_第2頁
單片機(jī)課件第8章_第3頁
單片機(jī)課件第8章_第4頁
單片機(jī)課件第8章_第5頁
已閱讀5頁,還剩87頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章機(jī)械工業(yè)出版社同名教材配套電子教案第8章1第8章

80C51串行擴(kuò)展技術(shù)

本章要點串行擴(kuò)展特點串行擴(kuò)展方式分類虛擬串行擴(kuò)展慨念移位寄存器串行擴(kuò)展方式80C51I/O虛擬串行接口I2C總線串行擴(kuò)展技術(shù)I2C總線擴(kuò)展I/O口通用器件PCF8574虛擬I2C總線擴(kuò)展AT24CXX系列E2PROM第8章80C51串行擴(kuò)展技術(shù)本章要點串行擴(kuò)展特點2§8-1串行擴(kuò)展概述一、串行擴(kuò)展特點⑴最大程度發(fā)揮最小系統(tǒng)的資源功能。原來由并行擴(kuò)展占用的P0口、P2口資源,直接用于I/O口。⑵簡化連接線路,縮小印板面積。⑶擴(kuò)展性好,可簡化系統(tǒng)的設(shè)計。⑷串行擴(kuò)展的缺點:

數(shù)據(jù)吞吐容量較小,信號傳輸速度較慢,但隨著CPU芯片工作頻率的提高,以及串行擴(kuò)展芯片功能的增強(qiáng),這些缺點將逐步淡化。§8-1串行擴(kuò)展概述一、串行擴(kuò)展特點⑴最大程度發(fā)揮最小31、一線制二、串行擴(kuò)展方式分類一線制的典型代表為Dallas公司推出的單總線(1-wire)。1、一線制二、串行擴(kuò)展方式分類一線制的典型代表為Dallas42、二線制二線制的典型代表為philips公司推出的I2C總線(IntelIntegratedCircuitBUS)。2、二線制二線制的典型代表為philips公司推出的I2C總5三線制(不包括片選線)主要有兩種:⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。3、三線制三線制(不包括片選線)主要有兩種:3、三線制6SPI的時鐘線是SCK,數(shù)據(jù)線MOSI(主發(fā)從收)、MOSO(主收從發(fā)),主從器件的MOSI和MOSO是同名端相連。由于該兩類器件無法通過數(shù)據(jù)傳輸線尋址,因此,必須由MCUI/O線單獨尋址,連到擴(kuò)展器件的片選端CS(若只擴(kuò)展一片,可將擴(kuò)展芯片CS接地)。Microwire/PLUS的時鐘線是SK,數(shù)據(jù)線為SI和SO,但SI、SO依照主器件的數(shù)據(jù)傳送方向而定,主器件的SO與所有擴(kuò)展器件數(shù)據(jù)輸入端DI或SI相連;主器件的SI與所有擴(kuò)展器件數(shù)據(jù)輸出端DO或SO相連。SPI的時鐘線是SCK,數(shù)據(jù)線MOSI(主發(fā)從收)74、80C51移位寄存器串行擴(kuò)展80C51的UART(UniversalAsynohronousReceiver/Transmitter)有4種工作方式,其中方式0為同步移位寄存器工作方式,通過移位寄存方式,可將串行數(shù)據(jù)并行輸出,也可以將并行數(shù)據(jù)串行輸入。4、80C51移位寄存器串行擴(kuò)展80C51的UAR8三、虛擬串行擴(kuò)展概念用通用I/O口來模擬串行接口,構(gòu)成虛擬的串行擴(kuò)展接口。只要嚴(yán)格控制模擬同步信號,并滿足串行同步數(shù)據(jù)傳送的時序要求,就可滿足串行數(shù)據(jù)傳送的可靠性要求。三、虛擬串行擴(kuò)展概念用通用I/O口來模擬串行接口,構(gòu)9§8-280C51移位寄存器串行擴(kuò)展技術(shù)一、移位寄存器串行擴(kuò)展方式

80C51串行方式0時,串行口作為同步移位寄存器使用。TXD端(P3.1)發(fā)出移位脈沖,頻率為fosc/12,RXD端(P3.0)輸入輸出數(shù)據(jù)?!?-280C51移位寄存器一、移位寄存器串行擴(kuò)展方式101、80C51擴(kuò)展并行輸出口

74LS164為串入并出移位寄存器,其中A、B為串行數(shù)據(jù)輸入端,QA、QB、…、QH為并行數(shù)據(jù)輸出端(QA為高位),CLK為同步時鐘輸入端,CLR為輸出清0端。若不需將輸出數(shù)據(jù)清0,則CLR端接Vcc。1、80C51擴(kuò)展并行輸出口74LS164為串入并出112、80C51擴(kuò)展并行輸入口74LS165為并入串出移位寄存器,A、B、…、H為并行輸入端(A為高位),QH為串行數(shù)據(jù)輸出端,SER為串行數(shù)據(jù)輸入端,CLK為同步時鐘輸入端,S/L為預(yù)置控制端。S/L=0時,鎖存并行輸入數(shù)據(jù);S/L=1時,可進(jìn)行串行移位操作。2、80C51擴(kuò)展并行輸入口74LS165為并入串出移位1280C51串行方式0歸一化子程序:⑴單字節(jié)串行輸出子程序⑵單字節(jié)串行輸入子程序⑶多字節(jié)串行輸出子程序⑷多字節(jié)串行輸入子程序二、串行方式0歸一化子程序所謂歸一化子程序,即通用或標(biāo)準(zhǔn)化操作子程序,將80C51串行方式0所有應(yīng)用操作歸納成幾個基本的輸入輸出子程序,并使這些標(biāo)準(zhǔn)子程序具有規(guī)范的入口條件和出口狀態(tài)。應(yīng)用時,只要設(shè)置相應(yīng)的入口和出口,調(diào)用歸一化子程序,就能達(dá)到串行輸入輸出的目的。80C51串行方式0歸一化子程序:二、串行方式0歸一化子程序1380C51虛擬串行I/O口歸一化子程序:⑴單字節(jié)虛擬串行輸出子程序⑵單字節(jié)虛擬串行輸入子程序⑶多字節(jié)虛擬串行輸出子程序⑷多字節(jié)虛擬串行輸入子程序三、80C51I/O虛擬串行接口利用80C51通用I/O口虛擬移位寄存器工作方式實現(xiàn)串行擴(kuò)展,只需用任一通用I/O口代替RXD和TXD,設(shè)為VRXD和VTXD。80C51虛擬串行I/O口歸一化子程序:三、80C51I/14四、移位寄存器串行擴(kuò)展應(yīng)用

80C51移位寄存器串行擴(kuò)展應(yīng)用,只需根據(jù)標(biāo)準(zhǔn)化的電路形式連接,設(shè)置好入口條件,然后調(diào)用串行方式0歸一化子程序或虛擬串行接口歸一化子程序,即可完成擴(kuò)展應(yīng)用。四、移位寄存器串行擴(kuò)展應(yīng)用80C51移位寄存器串行15【例8-1】電路如圖8-5所示,fosc=12MHz,要求發(fā)光二極管從左向右依次點亮,點亮?xí)r間為1秒,不斷循環(huán)。設(shè)串行方式0歸一化子程序已存在ROM中?!纠?-1】電路如圖8-5所示,fosc=12MHz,要16解: PIOX1BITP1.0;定義PIOX1WORK:MOVA,#10000000B;置D7燈亮,其余暗LOOP:CLRPIOX1;74LS164輸出全0,燈全暗LCALLUART0;調(diào)用單字節(jié)串行輸出子程序LCALLDLY1s;調(diào)用延時1秒子程序(略)RRA;右移SJMPLOOP;解:17【例8-2】電路如圖8-6所示,fosc=12MHz,要求每隔10ms,檢測鍵K0~K7狀態(tài),并存入內(nèi)RAM2FH。設(shè)虛擬串行接口歸一化子程序已存在ROM中?!纠?-2】電路如圖8-6所示,fosc=12MHz,要求18解:ORG0000H;復(fù)位地址LJMPSTAT;轉(zhuǎn)初始化程序ORG000BH;T0中斷入口地址LJMPIT0;轉(zhuǎn)T0中斷服務(wù)子程序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中斷服務(wù)子程序首地址IT0:MOVTH0,#0D8H;重置T0定時初值10msMOVTL0,#0F0H;PUSHAcc;保護(hù)現(xiàn)場PUSHPSW;INPUT:LCALLVUARTI;調(diào)用虛擬串行輸入子程序MOV2FH,A;存鍵K0~K7狀態(tài)數(shù)據(jù)POPPSW;恢復(fù)現(xiàn)場POPAcc;RETI;

解:ORG0000H;復(fù)位地191、擴(kuò)展連接方式

§8-3

I2C總線串行擴(kuò)展技術(shù)一、I2C總線串行擴(kuò)展概述1、擴(kuò)展連接方式§8-3I2C總線串行擴(kuò)展技術(shù)一、I220具有I2C總線結(jié)構(gòu)的器件,不論SRAM、E2PROM、ADC/DAC、I/O口或MCU,均可通過SDA、SCL連接(同名端相連)。無I2C總線結(jié)構(gòu)的器件,如LED/LCD顯示器、鍵盤、碼盤、打印機(jī)等也可通過具有I2C總線結(jié)構(gòu)的I/O接口電路成為串行擴(kuò)展器件。具有I2C總線結(jié)構(gòu)的器件,不論SRAM、E2PROM、212、器件尋址方式I2C總線器件地址SLA格式如下:具有I2C總線結(jié)構(gòu)的器件在器件出廠時已經(jīng)給定了器件的地址編碼。SLAD7D6D5D4D3D2D1D0DA3DA2DA1DA0A2A1A0R/W器件固有地址編碼器件引腳地址讀/寫

⑴DA3~DA04位器件地址是I2C總線器件固有的地址編碼,器件出廠時就已給定,用戶不能自行設(shè)置。⑵A2A1A03位引腳地址用于相同地址器件的識別。若I2C總線上掛有相同地址的器件,或同時掛有多片相同器件時,可用硬件連接方式對3位引腳A2A1A0接Vcc或接地,形成地址數(shù)據(jù)。⑶R/W數(shù)據(jù)傳送方向。R/W=1時,主機(jī)接收(讀);R/W=0時,主機(jī)發(fā)送(寫)。2、器件尋址方式I2C總線器件地址SLA格式如下:具22表8-1常用I2C器件地址SLA種類型號器件地址SLA引腳地址備注靜態(tài)RAMPCF8570/711010A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8570C1011A2A1A0R/W3位數(shù)字引腳地址A2A1A0E2PROMPCF85821010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C021010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C041010A2A1P0R/W2位數(shù)字引腳地址A2A1AT24C081010A2P1P0R/W1位數(shù)字引腳地址A2AT24C0161010P2P1P0R/W無引腳地址,A2A1A0懸空處理I/O口PCF85740100A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8574A0111A2A1A0R/W3位數(shù)字引腳地址A2A1A0LED/LCD驅(qū)動控制器SAA106401110A1A0R/W2位數(shù)字引腳地址A1A0PCF8576011100A0R/W1位數(shù)字引腳地址A0PCF8578/79011110A0R/W1位數(shù)字引腳地址A0ADC/DACPCF89511001A2A1A0R/W3位數(shù)字引腳地址A2A1A0日歷時鐘PCF8583101000A0R/W1位數(shù)字引腳地址A0表8-1常用I2C器件地址SLA種類型號器件地址SLA233、接口電氣結(jié)構(gòu)I2C總線端口輸出為開漏結(jié)構(gòu),總線上必須外接上拉電阻Rp,其阻值通常可選5~10KΩ。4、總線驅(qū)動能力由于I2C總線器件均為CMOS器件,總線具有足夠的電流驅(qū)動能力。I2C總線的電容負(fù)載能力為400pF(通過驅(qū)動擴(kuò)展可達(dá)4000pF)。I2C總線傳輸速率為100Kb/s(改進(jìn)后的規(guī)范為400Kb/s)。3、接口電氣結(jié)構(gòu)245、I2C總線時序一次完整的數(shù)據(jù)傳送過程應(yīng)包括:起始(S)、發(fā)送尋址字節(jié)(SLAR/W)、應(yīng)答、發(fā)送數(shù)據(jù)、應(yīng)答、…、發(fā)送數(shù)據(jù)、應(yīng)答、終止(P)。5、I2C總線時序一次完整的數(shù)據(jù)傳送過程應(yīng)包括:起始25

80C51只能采用虛擬I2C總線方式,并且只能用于單主系統(tǒng),虛擬I2C總線接口可用通用I/O口中任一端線充任,數(shù)據(jù)線定義為VSDA,時鐘線定義為VSCL。二、80C51單主系統(tǒng)虛擬I2C總線軟件包80C51單主系統(tǒng)虛擬I2C總線軟件包VIIC可由二大類共9個歸一化子程序組成。二大類程序分別為典型信號模擬子程序和數(shù)據(jù)傳送通用子程序。80C51只能采用虛擬I2C總線方式,并且只能用于單261、典型信號模擬子程序?qū)τ谔摂MI2C總線,有幾個重復(fù)應(yīng)用的典型信號,可根據(jù)I2C總線時序要求,編制這些典型信號子程序:⑴啟動信號STAT⑵終止信號STOP⑶發(fā)送應(yīng)答位(A)MACK⑷發(fā)送應(yīng)答非位(A)NACK⑸檢查應(yīng)答位CACK2、數(shù)據(jù)傳送通用子程序數(shù)據(jù)傳送通用子程序是應(yīng)用典型信號模擬子程序(起始、終止、應(yīng)答和檢查應(yīng)答)并按I2C總線數(shù)據(jù)傳送時序要求編制的子程序。⑴發(fā)送一字節(jié)數(shù)據(jù)子程序WR1B⑵接收一字節(jié)數(shù)據(jù)子程序RD1B⑶發(fā)送N個字節(jié)數(shù)據(jù)子程序WRNB⑷接收N個字節(jié)數(shù)據(jù)子程序RDNB

1、典型信號模擬子程序27按照I2C總線數(shù)據(jù)傳送時序要求,一次完整的數(shù)據(jù)發(fā)送過程應(yīng)包括起始(S)、發(fā)送尋址字節(jié)(SLAR/W)、應(yīng)答、發(fā)送數(shù)據(jù)、應(yīng)答、…、發(fā)送數(shù)據(jù)、應(yīng)答、終止(P),其格式如下:SSLAWAdata1Adata2A……dataNAP其中,紅色部分由主器件發(fā)送,從器件接收;黑色部分由從器件發(fā)送,主器件接收。發(fā)送N個字節(jié)數(shù)據(jù)子程序WRNB入口條件: ①偽指令定義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。按照I2C總線數(shù)據(jù)傳送時序要求,一次完整的數(shù)據(jù)發(fā)送過28WRNB: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;檢查應(yīng)答位JBF0,WRNB0;應(yīng)答不正常,返回重發(fā)MOVR1,#MTD;應(yīng)答(A)正常,取發(fā)送數(shù)據(jù)存儲區(qū)首址WRDA:MOVA,@R1;讀一個字節(jié)發(fā)送數(shù)據(jù)LCALLWR1B;發(fā)送一個字節(jié)LCALLCACK;檢查應(yīng)答位JBF0,WRNB;應(yīng)答不正常,返回重發(fā)INCR1;應(yīng)答(A)正常,指向發(fā)送數(shù)據(jù)下一字節(jié)DJNZR3,WRDA;判N個數(shù)據(jù)發(fā)送完畢否?未完繼續(xù)LCALLSTOP;N個數(shù)據(jù)發(fā)送完畢,發(fā)送結(jié)束信號RET;WRNB:MOVR3,NUMB;取發(fā)送數(shù)據(jù)字節(jié)數(shù)29按照I2C總線數(shù)據(jù)傳送時序要求,接收N個字節(jié)數(shù)據(jù)應(yīng)按下列格式編程:接收N個字節(jié)數(shù)據(jù)子程序RDNB

SSLARAdata1Adata2A…dataNAP其中,紅色部分由主器件發(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。按照I2C總線數(shù)據(jù)傳送時序要求,接收N個字節(jié)30RDNB:MOVR3,NUMB;取接收數(shù)據(jù)字節(jié)數(shù)N(存在內(nèi)RAMNUMB單元)RDNB0:LCALLSTAT;啟動I2C總線MOVA,SLA;讀接收尋址字節(jié)(存在內(nèi)RAMSLA單元)LCALLWR1B;發(fā)送接收尋址字節(jié)LCALLCACK;檢查應(yīng)答位JBF0,RDNB0;應(yīng)答不正常,返回重新開始RDA0:MOVR1,#MRD;應(yīng)答(A)正常,取接收數(shù)據(jù)存儲區(qū)首址RDA1:LCALLRD1B;接收一個字節(jié)數(shù)據(jù)MOV@R1,A;存一個字節(jié)數(shù)據(jù)DJNZR3,ACK;判N個數(shù)據(jù)接收完畢否?未完轉(zhuǎn)發(fā)送應(yīng)答位LCALLNACK;N個數(shù)據(jù)接收完畢,發(fā)送應(yīng)答非位(A)LCALLSTOP;發(fā)送終止信號RET;子程序結(jié)束返回ACK:LCALLMACK;發(fā)送應(yīng)答位(A)INCR1;指向下一接收數(shù)據(jù)存儲單元地址SJMPRDA1;轉(zhuǎn)接收下一字節(jié)數(shù)據(jù)RDNB:MOVR3,NUMB;取31⑴VIIC軟件包共有9個歸一化子程序組成。⑵VIIC軟件包僅適用單主系統(tǒng)即主方式下I2C總線外圍擴(kuò)展。且應(yīng)fosc≤6MHz,若fosc>6MHz,則應(yīng)相應(yīng)調(diào)整NOP指令個數(shù),以滿足I2C總線數(shù)據(jù)傳送時序要求。⑶VIIC軟件包可嵌入到80C51ROM中任一空間,作為I2C總線擴(kuò)展應(yīng)用程序設(shè)計的軟件支持平臺。⑷在應(yīng)用VIIC軟件包初始化中,應(yīng)對軟件包中標(biāo)記符號用偽指令定義。⑸VIIC軟件包占用資源:F0、Cy、Acc、R1、R1、R3。在調(diào)用VIIC軟件包之前,若涉及這些存儲單元中原有數(shù)據(jù)尚需保存,應(yīng)采取保護(hù)現(xiàn)場措施,在調(diào)用結(jié)束后恢復(fù)現(xiàn)場。3、虛擬I2C總線軟件包VIIC小結(jié)⑴VIIC軟件包共有9個歸一化子程序組成。3、虛擬I2C總32一、I2C總線擴(kuò)展I/O口通用器件PCF8574§8-4虛擬I2C總線擴(kuò)展I/O口1、引腳功能PCF8574是一個帶有中斷輸出的8位準(zhǔn)雙向I/O口I2C總線擴(kuò)展芯片。

A2~A0:地址引腳;

P0~P7:8位準(zhǔn)雙向I/O口,驅(qū)動能力IOL=25mA,IOH<300A;

SDA、SCL :I2C總線接口;

INT:中斷請求輸出,低電平有效,開漏輸出;VDD、VSS:電源端、接地端;一、I2C總線擴(kuò)展I/O口通用器件PCF8574§8-4332、電路設(shè)計PCF8574與80C51I2C總線接口應(yīng)用電路。PCF8574的器件地址是0100,A2A1A0為引腳地址,全接地時為000,R/W=1時,接收尋址字節(jié)SLAR=41H=01000001B;R/W=0時,發(fā)送尋址字節(jié)SLAW=40H=01000000B。3、尋址字節(jié)2、電路設(shè)計PCF8574與80C51I2C總線接口應(yīng)用電34當(dāng)PCF8574輸入端P0~P7電平狀態(tài)改變時,中斷請求輸出端INT會出現(xiàn)低電平(滯后時間約4s),可觸發(fā)80C51產(chǎn)生中斷。在對PCF8574進(jìn)行一次讀寫操作后,INT端撤銷中斷請求,復(fù)位為高電平。4、中斷請求5、數(shù)據(jù)輸入/輸出操作格式⑴輸出操作SSLAWAPOdataAP⑵輸入操作SSLARAPIdataAP其中,紅色部分由80C51發(fā)送,PCF8574接收;黑色部分由PCF8574發(fā)送,80C51接收。當(dāng)PCF8574輸入端P0~P7電平狀態(tài)改變時,中斷請求35二、PCF8574應(yīng)用實例【例8-3】圖8-14為PCF8574四鍵四LED應(yīng)用電路,PCF8574P0~P3為鍵信號K0~K3輸入端,P4~P7為LED控制信號D0~D3輸出端,要求當(dāng)鍵K0~K3按下后,相應(yīng)LEDD0~D3亮,設(shè)VIIC軟件包已裝入ROM。二、PCF8574應(yīng)用實例【例8-3】圖8-14為PCF8536解:編制程序如下:主程序:VSDAEQUP1.0;定義虛擬I2C總線數(shù)據(jù)線端口VSCLEQUP1.1;定義虛擬I2C總線時鐘線端口SLAEQU50H;定義發(fā)送/接收尋址字節(jié)內(nèi)RAM存儲單元為50HNUMBEQU51H;定義發(fā)送/接收數(shù)據(jù)字節(jié)數(shù)N內(nèi)RAM存儲單元為51HMTDEQU30H;定義發(fā)送數(shù)據(jù)內(nèi)RAM存儲區(qū)首地址為30HMRDEQU40H;定義接收數(shù)據(jù)內(nèi)RAM存儲區(qū)首地址為40HWORK:MOVMTD,#0FFH;PCF8574初始化,置P0~P3輸入態(tài),D0~D3燈滅MOVSLA,#40H;置發(fā)送尋址字節(jié)MOVNUMB,#1;置發(fā)送字節(jié)數(shù)LCALLWRNB;FFH寫入PCF8574SETBEA;CPU開中SETBEX1;INT1開中SETBIT1;置INT1邊沿觸發(fā)方式SJMP$;等待PCF8574P0~P3口狀態(tài)變化觸發(fā)中斷解:編制程序如下:37中斷服務(wù)子程序:VINT:MOVSLA,#41H;置接收尋址字節(jié)MOVNUMB,#1;置接收字節(jié)數(shù)LCALLRDNB;讀PCF8574口狀態(tài)MOVA,MRD;讀接收數(shù)據(jù)SWAPA;低4位狀態(tài)移至高4位ORLA,#0FH;低4位保持輸入態(tài)MOVMTD,A;控制信號存入發(fā)送數(shù)據(jù)首地址單元MOVSLA,#40H;置發(fā)送尋址字節(jié)MOVNUMB,#1;置發(fā)送字節(jié)數(shù)LCALLWRNB;輸出控制信號RETI;中斷服務(wù)子程序:381、引腳功能§8-5虛擬I2C總線擴(kuò)展AT24CXX系列E2PROM一、I2C總線E2PROM芯片AT24C02SDA、SCL:I2C總線接口A2~A0:地址引腳TEST:測試端,高電平有效VDD、VSS:電源端、接地端1、引腳功能§8-5虛擬I2C總線擴(kuò)展一、I2C總線E392、電路設(shè)計

A2A1A0TEST2、電路設(shè)計A2A1A0TEST40E2PROM的寫入時間一般需要5~10ms,頁寫緩沖器具有SRAM性質(zhì),可快速寫入,先將CPU輸入的數(shù)據(jù)暫存頁寫緩沖器內(nèi),然后慢慢寫入E2PROM中。但一次寫入數(shù)據(jù),受到該芯片頁寫緩沖器容量的限制,若超出容量或超出頁內(nèi)地址,都將導(dǎo)致出錯。應(yīng)將超出部分,隔5~10ms重新啟動一次寫操作。AT24C02頁寫緩沖器為8B,頁內(nèi)地址為000~111。3、尋址字節(jié)AT24CXX的器件地址是1010,A2A1A0為引腳地址,全接地時為000。R/W=1時,讀尋址字節(jié)SLAR

=10100001B=A1H;R/W=0時,寫尋址字節(jié)SLAW

=10100000B=A0H。4、頁寫緩沖器E2PROM的寫入時間一般需要5~10ms,頁寫緩41⑴寫操作格式

5、數(shù)據(jù)讀/寫操作格式SSLAWASADRAdata1Adata2A……dataNAP⑵讀操作格式

SSLAWASADRAPSSLARAdata1Adata2A…dataNAP其中,紅色部分由80C51發(fā)送,AT24CXX接收;黑色部分由AT24CXX發(fā)送,80C51接收。

寫入讀出單元子地址

讀出操作⑴寫操作格式5、數(shù)據(jù)讀/寫操作格式SSLAWASADRA42【例8-4】按圖8-15(b),試將內(nèi)RAM10H為首址的8個字節(jié)數(shù)據(jù)寫入AT24C0250H~57H單元中。設(shè)VIIC軟件包已裝入ROM,VSDA、VSCL、SLA、NUMB、MTD、MRD均已按8.3.2軟件包小結(jié)中協(xié)議定義解:二、擴(kuò)展AT24C02應(yīng)用舉例VAT24W:MOVSLA,#10100000B;置寫AT24C02尋址字節(jié)MOVNUMB,#9;置寫入數(shù)據(jù)字節(jié)數(shù)N+1(多一個片內(nèi)子地址)MOVMTD,#50H;置寫AT24C02片內(nèi)子地址首址SADR[(30H)=50H]MOVR0,#10H;置8個數(shù)據(jù)原存放區(qū)首址MOVR1,#31H;置8個數(shù)據(jù)串行發(fā)送存放區(qū)首址MOVR2,#8;置數(shù)據(jù)個數(shù)MOVLP:MOVA,@R0;將8個數(shù)據(jù)依次移入31H~38HMOV@R1,A;INCR0;INCR1;DJNZR2,MOVLP;LCALLWRNB;發(fā)送AT24C02片內(nèi)子地址及8個數(shù)據(jù)RET;【例8-4】按圖8-15(b),試將內(nèi)RAM10H為首址的43【例8-5】同例8-4,數(shù)據(jù)改為16個,試編程。解:AT24W1:LCALLVAT24W;調(diào)用寫8個數(shù)據(jù)子程序(第1次寫)LCALLDLY10ms;調(diào)用延時10ms子程序(略)AT24W2:MOVMTD,#58H;置第2次寫AT24C02片內(nèi)首址SADR[(30H)=58H]MOVR0,#18H;置第2次寫8個數(shù)據(jù)原存放區(qū)首址MOVR1,#31H;置第2次寫8個數(shù)據(jù)串行發(fā)送存放區(qū)首址MOVR2,#8;置第2次寫數(shù)據(jù)個數(shù)MOVLP2:MOVA,@R0;將第2次寫8個數(shù)據(jù)依次移入31H~38HMOV@R1,A;INCR0;INCR1;DJNZR2,MOVLP2;LCALLWRNB;第2次寫AT24C02RET;【例8-5】同例8-4,數(shù)據(jù)改為16個,試編程。解:44解:AT24W3:MOVSLA,#10100000B;置寫AT24C02尋址字節(jié)MOVNUMB,#7;置寫入數(shù)據(jù)字節(jié)數(shù)N+1(多一個片內(nèi)子地址)MOVMTD,#52H;置寫AT24C02片內(nèi)子地址首址SADR[(30H)=52H]MOVR0,#10H;置6個數(shù)據(jù)原存放區(qū)首址MOVR1,#31H;置6個數(shù)據(jù)串行發(fā)送時存放區(qū)首址MOVR2,#6;置數(shù)據(jù)個數(shù)MOVLP3:MOVA,@R0;將6個數(shù)據(jù)依次移入31H~36HMOV@R1,A;INCR0;INCR1;DJNZR2,MOVLP3;LCALLWRNB;發(fā)送AT24C02片內(nèi)子地址及6個數(shù)據(jù)LCALLDLY10ms;調(diào)用延時10ms子程序(略)AT24W4:MOVNUMB,#3;置第2次寫入字節(jié)數(shù)N+1(多一個片內(nèi)子地址)MOVMTD,#58H;置第2次寫AT24C02片內(nèi)首址SADR[(30H)=58H]MOV31H,16H;將后2個數(shù)據(jù)移至發(fā)送區(qū)MOV32H,17H;LCALLWRNB;第2次寫2個數(shù)據(jù)RET;【例8-6】同例8-4,但要求將8個數(shù)據(jù)寫入AT24C02的52H~59H。解:【例8-6】同例8-4,但要求將8個數(shù)據(jù)寫入AT24C045AT24RD:MOVMTD,#50H;置AT24C02讀出數(shù)據(jù)區(qū)首址SADRMOVSLA,#10100000B;置寫AT24C02尋址字節(jié)MOVNUMB,#1;置寫入數(shù)據(jù)字節(jié)數(shù)LCALLWRNB;啟動并發(fā)送AT24C02讀出單元子地址SADRMOVSLA,#10100001B;置讀AT24C02尋址字節(jié)MOVNUMB,#10H;置讀出字節(jié)數(shù)LCALLRDNB;讀16個數(shù)據(jù)[按協(xié)議存放在40H(首址MRD)~4FH中]MOVD:MOVRO,#10H;將接收16個數(shù)據(jù)轉(zhuǎn)移至10H~1FHMOVR1,#MRD;MOVA,@R1;MOV@RO,A;INCRO;INCR1;CJNERO,#20H,MOVD;RET;【例8-7】將例8-5寫入AT24C0250H~5FH中的16個數(shù)據(jù)讀出,存入內(nèi)RAM10H~1FH,設(shè)VIIC軟件包已裝入ROM,VSDA、VSCL、SLA、NUMB、MTD、MRD均已按8.3.2軟件包小結(jié)中協(xié)議定義。解:AT24RD:MOVMTD,#50H;置46第8章機(jī)械工業(yè)出版社同名教材配套電子教案第8章47第8章

80C51串行擴(kuò)展技術(shù)

本章要點串行擴(kuò)展特點串行擴(kuò)展方式分類虛擬串行擴(kuò)展慨念移位寄存器串行擴(kuò)展方式80C51I/O虛擬串行接口I2C總線串行擴(kuò)展技術(shù)I2C總線擴(kuò)展I/O口通用器件PCF8574虛擬I2C總線擴(kuò)展AT24CXX系列E2PROM第8章80C51串行擴(kuò)展技術(shù)本章要點串行擴(kuò)展特點48§8-1串行擴(kuò)展概述一、串行擴(kuò)展特點⑴最大程度發(fā)揮最小系統(tǒng)的資源功能。原來由并行擴(kuò)展占用的P0口、P2口資源,直接用于I/O口。⑵簡化連接線路,縮小印板面積。⑶擴(kuò)展性好,可簡化系統(tǒng)的設(shè)計。⑷串行擴(kuò)展的缺點:

數(shù)據(jù)吞吐容量較小,信號傳輸速度較慢,但隨著CPU芯片工作頻率的提高,以及串行擴(kuò)展芯片功能的增強(qiáng),這些缺點將逐步淡化?!?-1串行擴(kuò)展概述一、串行擴(kuò)展特點⑴最大程度發(fā)揮最小491、一線制二、串行擴(kuò)展方式分類一線制的典型代表為Dallas公司推出的單總線(1-wire)。1、一線制二、串行擴(kuò)展方式分類一線制的典型代表為Dallas502、二線制二線制的典型代表為philips公司推出的I2C總線(IntelIntegratedCircuitBUS)。2、二線制二線制的典型代表為philips公司推出的I2C總51三線制(不包括片選線)主要有兩種:⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。3、三線制三線制(不包括片選線)主要有兩種:3、三線制52SPI的時鐘線是SCK,數(shù)據(jù)線MOSI(主發(fā)從收)、MOSO(主收從發(fā)),主從器件的MOSI和MOSO是同名端相連。由于該兩類器件無法通過數(shù)據(jù)傳輸線尋址,因此,必須由MCUI/O線單獨尋址,連到擴(kuò)展器件的片選端CS(若只擴(kuò)展一片,可將擴(kuò)展芯片CS接地)。Microwire/PLUS的時鐘線是SK,數(shù)據(jù)線為SI和SO,但SI、SO依照主器件的數(shù)據(jù)傳送方向而定,主器件的SO與所有擴(kuò)展器件數(shù)據(jù)輸入端DI或SI相連;主器件的SI與所有擴(kuò)展器件數(shù)據(jù)輸出端DO或SO相連。SPI的時鐘線是SCK,數(shù)據(jù)線MOSI(主發(fā)從收)534、80C51移位寄存器串行擴(kuò)展80C51的UART(UniversalAsynohronousReceiver/Transmitter)有4種工作方式,其中方式0為同步移位寄存器工作方式,通過移位寄存方式,可將串行數(shù)據(jù)并行輸出,也可以將并行數(shù)據(jù)串行輸入。4、80C51移位寄存器串行擴(kuò)展80C51的UAR54三、虛擬串行擴(kuò)展概念用通用I/O口來模擬串行接口,構(gòu)成虛擬的串行擴(kuò)展接口。只要嚴(yán)格控制模擬同步信號,并滿足串行同步數(shù)據(jù)傳送的時序要求,就可滿足串行數(shù)據(jù)傳送的可靠性要求。三、虛擬串行擴(kuò)展概念用通用I/O口來模擬串行接口,構(gòu)55§8-280C51移位寄存器串行擴(kuò)展技術(shù)一、移位寄存器串行擴(kuò)展方式

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

74LS164為串入并出移位寄存器,其中A、B為串行數(shù)據(jù)輸入端,QA、QB、…、QH為并行數(shù)據(jù)輸出端(QA為高位),CLK為同步時鐘輸入端,CLR為輸出清0端。若不需將輸出數(shù)據(jù)清0,則CLR端接Vcc。1、80C51擴(kuò)展并行輸出口74LS164為串入并出572、80C51擴(kuò)展并行輸入口74LS165為并入串出移位寄存器,A、B、…、H為并行輸入端(A為高位),QH為串行數(shù)據(jù)輸出端,SER為串行數(shù)據(jù)輸入端,CLK為同步時鐘輸入端,S/L為預(yù)置控制端。S/L=0時,鎖存并行輸入數(shù)據(jù);S/L=1時,可進(jìn)行串行移位操作。2、80C51擴(kuò)展并行輸入口74LS165為并入串出移位5880C51串行方式0歸一化子程序:⑴單字節(jié)串行輸出子程序⑵單字節(jié)串行輸入子程序⑶多字節(jié)串行輸出子程序⑷多字節(jié)串行輸入子程序二、串行方式0歸一化子程序所謂歸一化子程序,即通用或標(biāo)準(zhǔn)化操作子程序,將80C51串行方式0所有應(yīng)用操作歸納成幾個基本的輸入輸出子程序,并使這些標(biāo)準(zhǔn)子程序具有規(guī)范的入口條件和出口狀態(tài)。應(yīng)用時,只要設(shè)置相應(yīng)的入口和出口,調(diào)用歸一化子程序,就能達(dá)到串行輸入輸出的目的。80C51串行方式0歸一化子程序:二、串行方式0歸一化子程序5980C51虛擬串行I/O口歸一化子程序:⑴單字節(jié)虛擬串行輸出子程序⑵單字節(jié)虛擬串行輸入子程序⑶多字節(jié)虛擬串行輸出子程序⑷多字節(jié)虛擬串行輸入子程序三、80C51I/O虛擬串行接口利用80C51通用I/O口虛擬移位寄存器工作方式實現(xiàn)串行擴(kuò)展,只需用任一通用I/O口代替RXD和TXD,設(shè)為VRXD和VTXD。80C51虛擬串行I/O口歸一化子程序:三、80C51I/60四、移位寄存器串行擴(kuò)展應(yīng)用

80C51移位寄存器串行擴(kuò)展應(yīng)用,只需根據(jù)標(biāo)準(zhǔn)化的電路形式連接,設(shè)置好入口條件,然后調(diào)用串行方式0歸一化子程序或虛擬串行接口歸一化子程序,即可完成擴(kuò)展應(yīng)用。四、移位寄存器串行擴(kuò)展應(yīng)用80C51移位寄存器串行61【例8-1】電路如圖8-5所示,fosc=12MHz,要求發(fā)光二極管從左向右依次點亮,點亮?xí)r間為1秒,不斷循環(huán)。設(shè)串行方式0歸一化子程序已存在ROM中?!纠?-1】電路如圖8-5所示,fosc=12MHz,要62解: PIOX1BITP1.0;定義PIOX1WORK:MOVA,#10000000B;置D7燈亮,其余暗LOOP:CLRPIOX1;74LS164輸出全0,燈全暗LCALLUART0;調(diào)用單字節(jié)串行輸出子程序LCALLDLY1s;調(diào)用延時1秒子程序(略)RRA;右移SJMPLOOP;解:63【例8-2】電路如圖8-6所示,fosc=12MHz,要求每隔10ms,檢測鍵K0~K7狀態(tài),并存入內(nèi)RAM2FH。設(shè)虛擬串行接口歸一化子程序已存在ROM中?!纠?-2】電路如圖8-6所示,fosc=12MHz,要求64解:ORG0000H;復(fù)位地址LJMPSTAT;轉(zhuǎn)初始化程序ORG000BH;T0中斷入口地址LJMPIT0;轉(zhuǎn)T0中斷服務(wù)子程序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中斷服務(wù)子程序首地址IT0:MOVTH0,#0D8H;重置T0定時初值10msMOVTL0,#0F0H;PUSHAcc;保護(hù)現(xiàn)場PUSHPSW;INPUT:LCALLVUARTI;調(diào)用虛擬串行輸入子程序MOV2FH,A;存鍵K0~K7狀態(tài)數(shù)據(jù)POPPSW;恢復(fù)現(xiàn)場POPAcc;RETI;

解:ORG0000H;復(fù)位地651、擴(kuò)展連接方式

§8-3

I2C總線串行擴(kuò)展技術(shù)一、I2C總線串行擴(kuò)展概述1、擴(kuò)展連接方式§8-3I2C總線串行擴(kuò)展技術(shù)一、I266具有I2C總線結(jié)構(gòu)的器件,不論SRAM、E2PROM、ADC/DAC、I/O口或MCU,均可通過SDA、SCL連接(同名端相連)。無I2C總線結(jié)構(gòu)的器件,如LED/LCD顯示器、鍵盤、碼盤、打印機(jī)等也可通過具有I2C總線結(jié)構(gòu)的I/O接口電路成為串行擴(kuò)展器件。具有I2C總線結(jié)構(gòu)的器件,不論SRAM、E2PROM、672、器件尋址方式I2C總線器件地址SLA格式如下:具有I2C總線結(jié)構(gòu)的器件在器件出廠時已經(jīng)給定了器件的地址編碼。SLAD7D6D5D4D3D2D1D0DA3DA2DA1DA0A2A1A0R/W器件固有地址編碼器件引腳地址讀/寫

⑴DA3~DA04位器件地址是I2C總線器件固有的地址編碼,器件出廠時就已給定,用戶不能自行設(shè)置。⑵A2A1A03位引腳地址用于相同地址器件的識別。若I2C總線上掛有相同地址的器件,或同時掛有多片相同器件時,可用硬件連接方式對3位引腳A2A1A0接Vcc或接地,形成地址數(shù)據(jù)。⑶R/W數(shù)據(jù)傳送方向。R/W=1時,主機(jī)接收(讀);R/W=0時,主機(jī)發(fā)送(寫)。2、器件尋址方式I2C總線器件地址SLA格式如下:具68表8-1常用I2C器件地址SLA種類型號器件地址SLA引腳地址備注靜態(tài)RAMPCF8570/711010A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8570C1011A2A1A0R/W3位數(shù)字引腳地址A2A1A0E2PROMPCF85821010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C021010A2A1A0R/W3位數(shù)字引腳地址A2A1A0AT24C041010A2A1P0R/W2位數(shù)字引腳地址A2A1AT24C081010A2P1P0R/W1位數(shù)字引腳地址A2AT24C0161010P2P1P0R/W無引腳地址,A2A1A0懸空處理I/O口PCF85740100A2A1A0R/W3位數(shù)字引腳地址A2A1A0PCF8574A0111A2A1A0R/W3位數(shù)字引腳地址A2A1A0LED/LCD驅(qū)動控制器SAA106401110A1A0R/W2位數(shù)字引腳地址A1A0PCF8576011100A0R/W1位數(shù)字引腳地址A0PCF8578/79011110A0R/W1位數(shù)字引腳地址A0ADC/DACPCF89511001A2A1A0R/W3位數(shù)字引腳地址A2A1A0日歷時鐘PCF8583101000A0R/W1位數(shù)字引腳地址A0表8-1常用I2C器件地址SLA種類型號器件地址SLA693、接口電氣結(jié)構(gòu)I2C總線端口輸出為開漏結(jié)構(gòu),總線上必須外接上拉電阻Rp,其阻值通??蛇x5~10KΩ。4、總線驅(qū)動能力由于I2C總線器件均為CMOS器件,總線具有足夠的電流驅(qū)動能力。I2C總線的電容負(fù)載能力為400pF(通過驅(qū)動擴(kuò)展可達(dá)4000pF)。I2C總線傳輸速率為100Kb/s(改進(jìn)后的規(guī)范為400Kb/s)。3、接口電氣結(jié)構(gòu)705、I2C總線時序一次完整的數(shù)據(jù)傳送過程應(yīng)包括:起始(S)、發(fā)送尋址字節(jié)(SLAR/W)、應(yīng)答、發(fā)送數(shù)據(jù)、應(yīng)答、…、發(fā)送數(shù)據(jù)、應(yīng)答、終止(P)。5、I2C總線時序一次完整的數(shù)據(jù)傳送過程應(yīng)包括:起始71

80C51只能采用虛擬I2C總線方式,并且只能用于單主系統(tǒng),虛擬I2C總線接口可用通用I/O口中任一端線充任,數(shù)據(jù)線定義為VSDA,時鐘線定義為VSCL。二、80C51單主系統(tǒng)虛擬I2C總線軟件包80C51單主系統(tǒng)虛擬I2C總線軟件包VIIC可由二大類共9個歸一化子程序組成。二大類程序分別為典型信號模擬子程序和數(shù)據(jù)傳送通用子程序。80C51只能采用虛擬I2C總線方式,并且只能用于單721、典型信號模擬子程序?qū)τ谔摂MI2C總線,有幾個重復(fù)應(yīng)用的典型信號,可根據(jù)I2C總線時序要求,編制這些典型信號子程序:⑴啟動信號STAT⑵終止信號STOP⑶發(fā)送應(yīng)答位(A)MACK⑷發(fā)送應(yīng)答非位(A)NACK⑸檢查應(yīng)答位CACK2、數(shù)據(jù)傳送通用子程序數(shù)據(jù)傳送通用子程序是應(yīng)用典型信號模擬子程序(起始、終止、應(yīng)答和檢查應(yīng)答)并按I2C總線數(shù)據(jù)傳送時序要求編制的子程序。⑴發(fā)送一字節(jié)數(shù)據(jù)子程序WR1B⑵接收一字節(jié)數(shù)據(jù)子程序RD1B⑶發(fā)送N個字節(jié)數(shù)據(jù)子程序WRNB⑷接收N個字節(jié)數(shù)據(jù)子程序RDNB

1、典型信號模擬子程序73按照I2C總線數(shù)據(jù)傳送時序要求,一次完整的數(shù)據(jù)發(fā)送過程應(yīng)包括起始(S)、發(fā)送尋址字節(jié)(SLAR/W)、應(yīng)答、發(fā)送數(shù)據(jù)、應(yīng)答、…、發(fā)送數(shù)據(jù)、應(yīng)答、終止(P),其格式如下:SSLAWAdata1Adata2A……dataNAP其中,紅色部分由主器件發(fā)送,從器件接收;黑色部分由從器件發(fā)送,主器件接收。發(fā)送N個字節(jié)數(shù)據(jù)子程序WRNB入口條件: ①偽指令定義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。按照I2C總線數(shù)據(jù)傳送時序要求,一次完整的數(shù)據(jù)發(fā)送過74WRNB: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;檢查應(yīng)答位JBF0,WRNB0;應(yīng)答不正常,返回重發(fā)MOVR1,#MTD;應(yīng)答(A)正常,取發(fā)送數(shù)據(jù)存儲區(qū)首址WRDA:MOVA,@R1;讀一個字節(jié)發(fā)送數(shù)據(jù)LCALLWR1B;發(fā)送一個字節(jié)LCALLCACK;檢查應(yīng)答位JBF0,WRNB;應(yīng)答不正常,返回重發(fā)INCR1;應(yīng)答(A)正常,指向發(fā)送數(shù)據(jù)下一字節(jié)DJNZR3,WRDA;判N個數(shù)據(jù)發(fā)送完畢否?未完繼續(xù)LCALLSTOP;N個數(shù)據(jù)發(fā)送完畢,發(fā)送結(jié)束信號RET;WRNB:MOVR3,NUMB;取發(fā)送數(shù)據(jù)字節(jié)數(shù)75按照I2C總線數(shù)據(jù)傳送時序要求,接收N個字節(jié)數(shù)據(jù)應(yīng)按下列格式編程:接收N個字節(jié)數(shù)據(jù)子程序RDNB

SSLARAdata1Adata2A…dataNAP其中,紅色部分由主器件發(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。按照I2C總線數(shù)據(jù)傳送時序要求,接收N個字節(jié)76RDNB:MOVR3,NUMB;取接收數(shù)據(jù)字節(jié)數(shù)N(存在內(nèi)RAMNUMB單元)RDNB0:LCALLSTAT;啟動I2C總線MOVA,SLA;讀接收尋址字節(jié)(存在內(nèi)RAMSLA單元)LCALLWR1B;發(fā)送接收尋址字節(jié)LCALLCACK;檢查應(yīng)答位JBF0,RDNB0;應(yīng)答不正常,返回重新開始RDA0:MOVR1,#MRD;應(yīng)答(A)正常,取接收數(shù)據(jù)存儲區(qū)首址RDA1:LCALLRD1B;接收一個字節(jié)數(shù)據(jù)MOV@R1,A;存一個字節(jié)數(shù)據(jù)DJNZR3,ACK;判N個數(shù)據(jù)接收完畢否?未完轉(zhuǎn)發(fā)送應(yīng)答位LCALLNACK;N個數(shù)據(jù)接收完畢,發(fā)送應(yīng)答非位(A)LCALLSTOP;發(fā)送終止信號RET;子程序結(jié)束返回ACK:LCALLMACK;發(fā)送應(yīng)答位(A)INCR1;指向下一接收數(shù)據(jù)存儲單元地址SJMPRDA1;轉(zhuǎn)接收下一字節(jié)數(shù)據(jù)RDNB:MOVR3,NUMB;取77⑴VIIC軟件包共有9個歸一化子程序組成。⑵VIIC軟件包僅適用單主系統(tǒng)即主方式下I2C總線外圍擴(kuò)展。且應(yīng)fosc≤6MHz,若fosc>6MHz,則應(yīng)相應(yīng)調(diào)整NOP指令個數(shù),以滿足I2C總線數(shù)據(jù)傳送時序要求。⑶VIIC軟件包可嵌入到80C51ROM中任一空間,作為I2C總線擴(kuò)展應(yīng)用程序設(shè)計的軟件支持平臺。⑷在應(yīng)用VIIC軟件包初始化中,應(yīng)對軟件包中標(biāo)記符號用偽指令定義。⑸VIIC軟件包占用資源:F0、Cy、Acc、R1、R1、R3。在調(diào)用VIIC軟件包之前,若涉及這些存儲單元中原有數(shù)據(jù)尚需保存,應(yīng)采取保護(hù)現(xiàn)場措施,在調(diào)用結(jié)束后恢復(fù)現(xiàn)場。3、虛擬I2C總線軟件包VIIC小結(jié)⑴VIIC軟件包共有9個歸一化子程序組成。3、虛擬I2C總78一、I2C總線擴(kuò)展I/O口通用器件PCF8574§8-4虛擬I2C總線擴(kuò)展I/O口1、引腳功能PCF8574是一個帶有中斷輸出的8位準(zhǔn)雙向I/O口I2C總線擴(kuò)展芯片。

A2~A0:地址引腳;

P0~P7:8位準(zhǔn)雙向I/O口,驅(qū)動能力IOL=25mA,IOH<300A;

SDA、SCL :I2C總線接口;

INT:中斷請求輸出,低電平有效,開漏輸出;VDD、VSS:電源端、接地端;一、I2C總線擴(kuò)展I/O口通用器件PCF8574§8-4792、電路設(shè)計PCF8574與80C51I2C總線接口應(yīng)用電路。PCF8574的器件地址是0100,A2A1A0為引腳地址,全接地時為000,R/W=1時,接收尋址字節(jié)SLAR=41H=01000001B;R/W=0時,發(fā)送尋址字節(jié)SLAW=40H=01000000B。3、尋址字節(jié)2、電路設(shè)計PCF8574與80C51I2C總線接口應(yīng)用電80當(dāng)PCF8574輸入端P0~P7電平狀態(tài)改變時,中斷請求輸出端INT會出現(xiàn)低電平(滯后時間約4s),可觸發(fā)80C51產(chǎn)生中斷。在對PCF8574進(jìn)行一次讀寫操作后,INT端撤銷中斷請求,復(fù)位為高電平。4、中斷請求5、數(shù)據(jù)輸入/輸出操作格式⑴輸出操作SSLAWAPOdataAP⑵輸入操作SSLARAPIdataAP其中,紅色部分由80C51發(fā)送,PCF8574接收;黑色部分由PCF8574發(fā)送,80C51接收。當(dāng)PCF8574輸入端P0~P7電平狀態(tài)改變時,中斷請求81二、PCF8574應(yīng)用實例【例8-3】圖8-14為PCF8574四鍵四LED應(yīng)用電路,PCF8574P0~P3為鍵信號K0~K3輸入端,P4~P7為LED控制信號D0~D3輸出端,要求當(dāng)鍵K0~K3按下后,相應(yīng)LEDD0~D3亮,設(shè)VIIC軟件包已裝入ROM。二、PCF8574應(yīng)用實例【例8-3】圖8-14為PCF8582解:編制程序如下:主程序:VSDAEQUP1.0;定義虛擬I2C總線數(shù)據(jù)線端口VSCLEQUP1.1;定義虛擬I2C總線時鐘線端口SLAEQU50H;定義發(fā)送/接收尋址字節(jié)內(nèi)RAM存儲單元為50HNUMBEQU51H;定義發(fā)送/接收數(shù)據(jù)字節(jié)數(shù)N內(nèi)RAM存儲單元為51HMTDEQU30H;定義發(fā)送數(shù)據(jù)內(nèi)RAM存儲區(qū)首地址為30HMRDEQU40H;定義接收數(shù)據(jù)內(nèi)RAM存儲區(qū)首地址為40HWORK:MOVMTD,#0FFH;PCF8574初始化,置P0~P3輸入態(tài),D0~D3燈滅MOVSLA,#40H;置發(fā)送尋址字節(jié)MOVNUMB,#1;置發(fā)送字節(jié)數(shù)LCALLWRNB;FFH寫入PCF8574SETBEA;CPU開中SETBEX1;INT1開中SETBIT1;置INT1邊沿觸發(fā)方式SJMP$;等待PCF8574P0~P3口狀態(tài)變化觸發(fā)中斷解:編制程序如下:83中斷服務(wù)子程序:VINT:MOVSLA,#41H;置接收尋址字節(jié)MOVNUMB,#1;置接收字節(jié)數(shù)LCALLRDNB;讀PCF8574口狀態(tài)MOVA,MRD;讀接收數(shù)據(jù)SWAPA;低4位狀態(tài)移至高4位ORLA,#0FH;低4位保持輸入態(tài)MOVMTD,A;控制信號存入發(fā)送數(shù)據(jù)首地址單元MOVSLA,#40H;置發(fā)送尋址字節(jié)MOVNUMB,#1;置發(fā)送字節(jié)數(shù)LCALLWRNB;輸出控制信號RETI;中斷服務(wù)子程序:841、引腳功能§8-5虛擬I2C總線擴(kuò)展AT24CXX系列E2PROM一、I2C總線E2PROM芯片AT24C02SDA、SCL:I2C總線接口A2~A0:地址引腳TEST:測試端,高電平有效VDD、VSS:電源端、接地端1、引腳功能§8-5虛擬I2C總線擴(kuò)展一、I2C總線E852、電路設(shè)計

A2A1A0TEST2、電路設(shè)計A2A1A0TEST86E2PROM的寫入時間一般需要5~10ms,頁寫緩沖器具有SRAM性質(zhì),可快速寫入,先將CPU輸入的數(shù)據(jù)暫存頁寫緩沖器內(nèi),然后慢慢寫入E2PROM中。但一次寫入數(shù)據(jù),受到該芯片頁寫緩沖器容量的限制,若超出容量或超出頁內(nèi)地址,都將導(dǎo)致出錯。應(yīng)將超出部分,隔5~10ms重新啟動一次寫操作。AT24C02頁寫緩沖器為8B,頁內(nèi)地址為000~111。3、尋址字節(jié)AT24CXX的器件地址是1010,A2A1A0為引腳地址,全接地時為000。R/W=1時,讀尋址字節(jié)SLAR

=10100001B=A1H;R/W=0時,寫尋址字節(jié)SLAW

=10100000B=A0H。4、頁寫緩沖器E2PROM的寫入時間一般需要5~10ms,頁寫緩87⑴寫操作格式

5、數(shù)據(jù)讀/寫操作格式SSLAWASADRAdata1Adata2A……dataNAP⑵讀操作格式

SSLAWASADRAPSSLARAdata1Adata2A…dataNAP其中,紅色部分由80C51發(fā)送,AT24CXX接收;黑色部分由AT24CXX發(fā)送,80C51接收。

寫入讀出單元子地址

讀出操作⑴寫操作格式5、數(shù)據(jù)讀/寫操作格式SSLAWASADRA88【例8-4】按圖8-15(b),試將內(nèi)RAM10H為首址的8個字節(jié)數(shù)據(jù)寫入AT24C0250H~57

溫馨提示

  • 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

提交評論