




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
80C51串行擴展技術
§8-1
串行擴展概述一、串行擴展特點⑴最大程度發揮最小系統的資源功能。原來由並行擴展佔用的P0口、P2口資源,直接用於I/O口。⑵簡化連接線路,縮小印板面積。⑶擴展性好,可簡化系統的設計。⑷串行擴展的缺點:
數據吞吐容量較小,信號傳輸速度較慢,但隨著CPU晶片工作頻率的提高,以及串行擴展晶片功能的增強,這些缺點將逐步淡化。1、一線制二、串行擴展方式分類一線制的典型代表為Dallas公司推出的單匯流排(1-wire)。2、二線制二線制的典型代表為philips公司推出的I2C匯流排(IntelIntegratedCircuitBUS)。三線制(不包括片選線)主要有兩種:⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。3、三線制SPI的時鐘線是SCK,數據線MOSI(主發從收)、MOSO(主收從發),主從器件的MOSI和MOSO是同名端相連。
由於該兩類器件無法通過數據傳輸線尋址,因此,必須由MCUI/O線單獨尋址,連到擴展器件的片選端CS(若只擴展一片,可將擴展晶片CS接地)。Microwire/PLUS的時鐘線是SK,數據線為SI和SO,但SI、SO依照主器件的數據傳送方向而定,主器件的SO與所有擴展器件數據輸入端DI或SI相連;主器件的SI與所有擴展器件數據輸出端DO或SO相連。4、80C51移位寄存器串行擴展80C51的UART(UniversalAsynohronousReceiver/Transmitter)有4種工作方式,其中方式0為同步移位寄存器工作方式,通過移位寄存方式,可將串行數據並行輸出,也可以將並行數據串行輸入。三、虛擬串行擴展概念
用通用I/O口來模擬串行介面,構成虛擬的串行擴展介面。只要嚴格控制模擬同步信號,並滿足串行同步數據傳送的時序要求,就可滿足串行數據傳送的可靠性要求。§8-280C51移位寄存器串行擴展技術一、移位寄存器串行擴展方式
80C51串行方式0時,串行口作為同步移位寄存器使用。TXD端(P3.1)發出移位脈衝,頻率為fosc/12,RXD端(P3.0)輸入輸出數據。1、80C51擴展並行輸出口
74LS164為串入並出移位寄存器,其中A、B為串行數據輸入端,QA、QB、…、QH為並行數據輸出端(QA為高位),CLK為同步時鐘輸入端,CLR為輸出清0端。若不需將輸出數據清0,則CLR端接Vcc。2、80C51擴展並行輸入口74LS165為併入串出移位寄存器,A、B、…、H為並行輸入端(A為高位),QH為串行數據輸出端,SER為串行數據輸入端,CLK為同步時鐘輸入端,S/L為預置控制端。S/L=0時,鎖存並行輸入數據;S/L=1時,可進行串行移位操作。80C51串行方式0歸一化副程式:⑴單字節串行輸出副程式⑵單字節串行輸入副程式⑶多位元組串行輸出副程式⑷多位元組串行輸入副程式二、串行方式0歸一化副程式
所謂歸一化副程式,即通用或標準化操作副程式,將80C51串行方式0所有應用操作歸納成幾個基本的輸入輸出副程式,並使這些標準副程式具有規範的入口條件和出口狀態。應用時,只要設置相應的入口和出口,調用歸一化副程式,就能達到串行輸入輸出的目的。80C51虛擬串行I/O口歸一化副程式:⑴單字節虛擬串行輸出副程式⑵單字節虛擬串行輸入副程式⑶多位元組虛擬串行輸出副程式⑷多位元組虛擬串行輸入副程式三、80C51I/O虛擬串行介面
利用80C51通用I/O口虛擬移位寄存器工作方式實現串行擴展,只需用任一通用I/O口代替RXD和TXD,設為VRXD和VTXD。四、移位寄存器串行擴展應用
80C51移位寄存器串行擴展應用,只需根據標準化的電路形式連接,設置好入口條件,然後調用串行方式0歸一化副程式或虛擬串行介面歸一化副程式,即可完成擴展應用。【例8-1】電路如圖8-5所示,fosc=12MHz,要求發光二極體從左向右依次點亮,點亮時間為1秒,不斷迴圈。設串行方式0歸一化副程式已存在ROM中。解:
PIOX1BITP1.0;定義PIOX1WORK:MOVA,#10000000B;置D7燈亮,其餘暗LOOP:CLRPIOX1;74LS164輸出全0,燈全暗
LCALLUART0;調用單字節串行輸出副程式
LCALLDLY1s;調用延時1秒副程式(略)RRA;右移
SJMPLOOP;【例8-2】電路如圖8-6所示,fosc=12MHz,要求每隔10ms,檢測鍵K0~K7狀態,並存入內RAM2FH。設虛擬串行介面歸一化副程式已存在ROM中。解:
ORG0000H;複位地址
LJMPSTAT;轉初始化程式
ORG000BH;T0中斷入口地址
LJMPIT0;轉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;轉主程序並等待T0中斷
ORG1000H;T0中斷服務副程式首地址IT0:MOVTH0,#0D8H;重置T0定時初值10msMOVTL0,#0F0H;PUSHAcc;保護現場
PUSHPSW;INPUT:LCALLVUARTI;調用虛擬串行輸入副程式
MOV2FH,A;存鍵K0~K7狀態數據
POPPSW;恢復現場
POPAcc;RETI;
1、擴展連接方式
§8-3
I2C匯流排串行擴展技術一、I2C匯流排串行擴展概述
具有I2C匯流排結構的器件,不論SRAM、E2PROM、ADC/DAC、I/O口或MCU,均可通過SDA、SCL連接(同名端相連)。
無I2C匯流排結構的器件,如LED/LCD顯示器、鍵盤、碼盤、印表機等也可通過具有I2C匯流排結構的I/O介面電路成為串行擴展器件。2、器件尋址方式I2C匯流排器件地址SLA格式如下:
具有I2C匯流排結構的器件在器件出廠時已經給定了器件的地址編碼。SLAD7D6D5D4D3D2D1D0DA3DA2DA1DA0A2A1A0R/W器件固有地址編碼器件引腳地址讀/寫
⑴DA3~DA04位器件地址是I2C匯流排器件固有的地址編碼,器件出廠時就已給定,用戶不能自行設置。⑵A2A1A03位引腳地址用於相同地址器件的識別。若I2C匯流排上掛有相同地址的器件,或同時掛有多片相同器件時,可用硬體連接方式對3位引腳A2A1A0接Vcc或接地,形成地址數據。⑶R/W數據傳送方向。R/W=1時,主機接收(讀);
R/W=0時,主機發送(寫)。表8-1常用I2C器件地址SLA種類型號器件地址SLA引腳地址備註靜態RAMPCF8570/711010A2A1A0R/W3位數字引腳地址A2A1A0PCF8570C1011A2A1A0R/W3位數字引腳地址A2A1A0E2PROMPCF85821010A2A1A0R/W3位數字引腳地址A2A1A0AT24C021010A2A1A0R/W3位數字引腳地址A2A1A0AT24C041010A2A1P0R/W2位數字引腳地址A2A1AT24C081010A2P1P0R/W1位數字引腳地址A2AT24C0161010P2P1P0R/W無引腳地址,A2A1A0懸空處理I/O口PCF85740100A2A1A0R/W3位數字引腳地址A2A1A0PCF8574A0111A2A1A0R/W3位數字引腳地址A2A1A0LED/LCD驅動控制器SAA106401110A1A0R/W2位數字引腳地址A1A0PCF8576011100A0R/W1位數字引腳地址A0PCF8578/79011110A0R/W1位數字引腳地址A0ADC/DACPCF89511001A2A1A0R/W3位數字引腳地址A2A1A0日曆時鐘PCF8583101000A0R/W1位數字引腳地址A03、介面電氣結構
I2C匯流排端口輸出為開漏結構,匯流排上必須外接上拉電阻Rp,其阻值通常可選5~10KΩ。4、匯流排驅動能力由於I2C匯流排器件均為CMOS器件,匯流排具有足夠的電流驅動能力。
I2C匯流排的電容負載能力為400pF(通過驅動擴展可達4000pF)。
I2C匯流排傳輸速率為100Kb/s(改進後的規範為400Kb/s)。5、I2C匯流排時序
一次完整的數據傳送過程應包括:起始(S)、發送尋址位元組(SLAR/W)、應答、發送數據、應答、…、發送數據、應答、終止(P)。
80C51只能採用虛擬I2C匯流排方式,並且只能用於單主系統,虛擬I2C匯流排介面可用通用I/O口中任一端線充任,數據線定義為VSDA,時鐘線定義為VSCL。二、80C51單主系統虛擬I2C匯流排軟體包
80C51單主系統虛擬I2C匯流排軟體包VIIC可由二大類共9個歸一化副程式組成。二大類程式分別為典型信號模擬副程式和數據傳送通用副程式。1、典型信號模擬副程式對於虛擬I2C匯流排,有幾個重複應用的典型信號,可根據I2C匯流排時序要求,編制這些典型信號副程式:
⑴啟動信號STAT⑵終止信號STOP⑶發送應答位(A)MACK⑷發送應答非位(A)NACK⑸檢查應答位CACK2、數據傳送通用副程式數據傳送通用副程式是應用典型信號模擬副程式(起始、終止、應答和檢查應答)並按I2C匯流排數據傳送時序要求編制的副程式。
⑴發送一位元組數據副程式WR1B⑵接收一位元組數據副程式RD1B⑶發送N個位元組數據副程式WRNB⑷接收N個位元組數據副程式RDNB
按照I2C匯流排數據傳送時序要求,一次完整的數據發送過程應包括起始(S)、發送尋址位元組(SLAR/W)、應答、發送數據、應答、…、發送數據、應答、終止(P),其格式如下:SSLAWAdata1Adata2A……dataNAP
其中,紅色部分由主器件發送,從器件接收;黑色部分由從器件發送,主器件接收。發送N個位元組數據副程式WRNB入口條件:
①偽指令定義NUMB、SLA、MTD單元地址;
②發送數據字節數存內RAMNUMB單元;
③發送尋址位元組存內RAMSLA單元;
④發送數據依次存放在首址為MTD的內RAM中。佔用資源:Acc、R1、R2、R3、Cy、F0。WRNB:MOVR3,NUMB;取發送數據字節數N(存在內RAMNUMB單元)WRNB0:LCALLSTAT;啟動I2C匯流排
MOVA,SLA;讀發送尋址位元組(存在內RAMSLA單元)LCALLWR1B;發送尋址位元組
LCALLCACK;檢查應答位
JBF0,WRNB0;應答不正常,返回重發
MOVR1,#MTD;應答(A)正常,取發送數據存儲區首址WRDA:MOVA,@R1;讀一個位元組發送數據
LCALLWR1B;發送一個位元組
LCALLCACK;檢查應答位
JBF0,WRNB;應答不正常,返回重發
INCR1;應答(A)正常,指向發送數據下一位元組
DJNZR3,WRDA;判N個數據發送完畢否?未完繼續
LCALLSTOP;N個數據發送完畢,發送結束信號
RET;
按照I2C匯流排數據傳送時序要求,接收N個位元組數據應按下列格式編程:接收N個位元組數據副程式RDNB
SSLARAdata1Adata2A…dataNAP
其中,紅色部分由主器件發送,從器件接收;黑色部分由從器件發送,主器件接收。入口條件:
①偽指令定義NUMB、SLA、MRD地址;
②接收數據字節數存內RAMNUMB單元;
③接收尋址位元組存內RAMSLA單元。出口狀態:接收N個位元組依次存在首址MRD的內RAM中。佔用資源:Acc、R1、R2、R3、Cy、F0。RDNB:MOVR3,NUMB;取接收數據字節數N(存在內RAMNUMB單元)RDNB0:LCALLSTAT;啟動I2C匯流排
MOVA,SLA;讀接收尋址位元組(存在內RAMSLA單元)LCALLWR1B;發送接收尋址位元組
LCALLCACK;檢查應答位
JBF0,RDNB0;應答不正常,返回重新開始RDA0:MOVR1,#MRD;應答(A)正常,取接收數據存儲區首址RDA1:LCALLRD1B;接收一個位元組數據
MOV@R1,A;存一個位元組數據
DJNZR3,ACK;判N個數據接收完畢否?未完轉發送應答位
LCALLNACK;N個數據接收完畢,發送應答非位(A)
LCALLSTOP;發送終止信號
RET;副程式結束返回ACK:LCALLMACK;發送應答位(A)
INCR1;指向下一接收數據存儲單元地址
SJMPRDA1;轉接收下一位元組數據⑴VIIC軟體包共有9個歸一化副程式組成。⑵VIIC軟體包僅適用單主系統即主方式下I2C匯流排週邊擴展。且應fosc≤6MHz,若fosc>6MHz,則應相應調整NOP指令個數,以滿足I2C匯流排數據傳送時序要求。⑶VIIC軟體包可嵌入到80C51ROM中任一空間,作為I2C匯流排擴展應用程式設計的軟體支持平臺。⑷在應用VIIC軟體包初始化中,應對軟體包中標記符號用偽指令定義。⑸VIIC軟體包佔用資源:F0、Cy、Acc、R1、R1、R3。在調用VIIC軟體包之前,若涉及這些存儲單元中原有數據尚需保存,應採取保護現場措施,在調用結束後恢復現場。3、虛擬I2C匯流排軟體包VIIC小結一、I2C匯流排擴展I/O口通用器件PCF8574§8-4虛擬I2C匯流排擴展I/O口1、引腳功能PCF8574是一個帶有中斷輸出的8位准雙向I/O口I2C匯流排擴展晶片。
A2~A0:地址引腳;
P0~P7:8位准雙向I/O口,驅動能力IOL=25mA,IOH<300
A;
SDA、SCL
:I2C匯流排介面;
INT:中斷請求輸出,低電平有效,開漏輸出;
VDD、VSS:電源端、接地端;2、電路設計PCF8574與80C51I2C匯流排介面應用電路。PCF8574的器件地址是0100,A2A1A0為引腳地址,全接地時為000,R/W=1時,接收尋址位元組SLAR=41H=01000001B;R/W=0時,發送尋址位元組SLAW=40H=01000000B。3、尋址位元組
當PCF8574輸入端P0~P7電平狀態改變時,中斷請求輸出端INT會出現低電平(滯後時間約4
s),可觸發80C51產生中斷。在對PCF8574進行一次讀寫操作後,INT端撤銷中斷請求,複位為高電平。4、中斷請求5、數據輸入/輸出操作格式⑴輸出操作SSLAWAPOdataAP⑵輸入操作SSLARAPIdataAP
其中,紅色部分由80C51發送,PCF8574接收;黑色部分由PCF8574發送,80C51接收。二、PCF8574應用實例【例8-3】圖8-14為PCF8574四鍵四LED應用電路,PCF8574P0~P3為鍵信號K0~K3輸入端,P4~P7為LED控制信號D0~D3輸出端,要求當鍵K0~K3按下後,相應LEDD0~D3亮,設VIIC軟體包已裝入ROM。解:編制程式如下:主程序:
VSDAEQUP1.0;定義虛擬I2C匯流排數據線端口
VSCLEQUP1.1;定義虛擬I2C匯流排時鐘線端口
SLAEQU50H;定義發送/接收尋址位元組內RAM存儲單元為50HNUMBEQU51H;定義發送/接收數據字節數N內RAM存儲單元為51HMTDEQU30H;定義發送數據內RAM存儲區首地址為30HMRDEQU40H;定義接收數據內RAM存儲區首地址為40HWORK:MOVMTD,#0FFH;PCF8574初始化,置P0~P3輸入態,D0~D3燈滅
MOVSLA,#40H;置發送尋址位元組
MOVNUMB,#1;置發送位元組數
LCALLWRNB;FFH寫入PCF8574SETBEA;CPU開中
SETBEX1;INT1開中
SETBIT1;置INT1邊沿觸發方式
SJMP$;等待PCF8574P0~P3口狀態變化觸發中斷中斷服務副程式:VINT:MOVSLA,#41H;置接收尋址位元組
MOVNUMB,#1;置接收位元組數
LCALLRDNB;讀PCF8574口狀態
MOVA,MRD;讀接收數據
SWAPA;低4位狀態移至高4位
ORLA,#0FH;低4位保持輸入態
MOVMTD,A;控制信號存入發送數據首地址單元
MOVSLA,#40H;置發送尋址位元組
MOVNUMB,#1;置發送位元組數
LCALLWRNB;輸出控制信號
RETI;1、引腳功能§8-5虛擬I2C匯流排擴展
AT24CXX系列E2PROM一、I2C匯流排E2PROM晶片AT24C02SDA、SCL:I2C匯流排介面A2~A0:地址引腳TEST:測試端,高電平有效VDD、VSS:電源端、接地端2、電路設計
A2A1A0TEST
E2PROM的寫入時間一般需要5~10ms,頁寫緩衝器具有SRAM性質,可快速寫入,先將CPU輸入的數據暫存頁寫緩衝器內,然後慢慢寫入E2PROM中。但一次寫入數據,受到該晶片頁寫緩衝器容量的限制,若超出容量或超出頁內地址,都將導致出錯。應將超出部分,隔5~10ms重新啟動一次寫操作。
AT24C02頁寫緩衝器為8B,頁內地址為000~111。3、尋址位元組AT24CXX的器件地址是1010,A2A1A0為引腳地址,全接地時為000。R/W=1時,讀尋址位元組SLAR
=10100001B=A1H;R/W=0時,寫尋址位元組SLAW
=10100000B=A0H。4、頁寫緩衝器⑴寫操作格式
5、數據讀/寫操作格式SSLAWASADRAdata1Adata2A……dataNAP⑵讀操作格式
SSLAWASADRAPSSLARAdata1Adata2A…dataNAP
其中,紅色部分由80C51發送,AT24CXX接收;黑色部分由AT24CXX發送,80C51接收。
寫入讀出單元子地址
讀出操作
【例8-4】按圖8-15(b),試將內RAM10H為首址的8個位元組數據寫入AT24C0250H~57H單元中。設VIIC軟體包已裝入ROM,VSDA、VSCL、SLA、NUMB、MTD、MRD均已按8.3.2軟體包小結中協議定義解:二、擴展AT24C02應用舉例VAT24W:MOVSLA,#10100000B;置寫AT24C02尋址位元組
MOVNUMB,#9;置寫入數據字節數N+1(多一個片內子地址)
MOVMTD,#50H;置寫AT24C02片內子地址首址SADR[(30H)=50H]MOVR0,#10H;置8個數據原存放區首址
MOVR1,#31H;置8個數據串行發送存放區首址
MOVR2,#8;置數據個數MOVLP:MOVA,@R0;將8個數據依次移入31H~38HMOV@R1,A;INCR0;INCR1;DJNZR2,MOVLP;LCALLWRNB;發送AT24C02片內子地址及8個數據
RET;【例8-5】同例8-4,數據改為16個,試編程。解:AT24W1:LCALLVAT24W;調用寫8個數據副程式(第1次寫)
LCALLDLY10ms;調用延時10ms副程式(略)AT24W2:MOVMTD,#58H;置第2次寫AT24C02片內首址SADR[(30H)=58H]MOVR0,#18H;置第2次寫8個數據原存放區首址
MOVR1,#31H;置第2次寫8個數據串行發送存放區首址
MOVR2,#8;置第2次寫數據個數MOVLP2:MOVA,@R0;將第2次寫8個數據依次移入31H~38HMOV@R1,A;INCR0;INCR1;DJNZR2,MOVLP2;LCALLWRNB;第2次寫AT24C02RET;解:AT24W3:MOVSLA,#10100000B;置寫AT24C02尋址位元組
MOVNUMB,#7;置寫入數據字節數N+1(多一個片內子地址)
MOVMTD,#52H;置寫AT24C02片內子地址首址SADR[(30H)=52H]MOVR0,#10H;置6個數據原存放區首址
MOVR1,#31H;置6個數據串行發送時存放區首址
MOVR2,#6;置數據個
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论