<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 具有串行接口的I/O擴展器EM83010及其應用

具有串行接口的I/O擴展器EM83010及其應用

作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

摘 要: 介紹了具有串行接口的I/O擴展器EM83010的性能和特點(diǎn),利用EM83010實(shí)現了對MCS51單片機的I/O擴展。

本文引用地址:http://dyxdggzs.com/article/226467.htm

關(guān)鍵詞: I/O擴展 串行接口 MCS51單片機

單片機I/O口的擴展,過(guò)去常常采用門(mén)電路或可編程邏輯器件等來(lái)實(shí)現,比較麻煩。本文介紹具有串行接口的I/O擴展器EM83010及其應用,從而為設計者提供一種新的I/O口擴展方法。使用EM83010進(jìn)行I/O擴展,不僅非常簡(jiǎn)便,而且具有強大的功能。

1 EM83010簡(jiǎn)介

EM83010是EMC公司生產(chǎn)的帶串行接口的I/O擴展器,它具有以下功能及特點(diǎn):

· 14個(gè)雙向I/O口線(xiàn)

· 2個(gè)I/O寄存器,2個(gè)I/O控制寄存器

· 144×8bit片內RAM

· 與MCU通過(guò)2線(xiàn)串行接口相連

·2線(xiàn)最多可同時(shí)接8片EM83010(此時(shí)擴展I/O數量為112個(gè),RAM容量為1152×8bit)

具有串行接口的I/O擴展器EM83010及其應用 · 工作電壓寬:2.5V~5.5V

· 低功耗,工作電流0.5mA,靜態(tài)電流15μA

· 18DIP/SOIL封裝形式

1.1 管腳定義

對于18DIP封裝的EM83010而言,其管腳功能如表1所示。

1.2 內部功能框圖

具有串行接口的I/O擴展器EM83010及其應用 EM83010內部功能框圖如圖1所示。EM83010內部主要包括I/O控制邏輯、存儲控制邏輯、地址指針、144字節的RAM、狀態(tài)及控制寄存器、兩個(gè)端口及其對應的數據寄存器和控制寄存器。

1.3 2線(xiàn)串行接口

EM83010支持雙向2線(xiàn)串行接口,其中由SCK提供串行同步時(shí)鐘,SDT收發(fā)數據,并且最多可以有8個(gè)EM83010同時(shí)共享該總線(xiàn)。

串行總線(xiàn)上數據傳送的時(shí)序如圖2所示。

數據傳輸依次為:START、GRP位、DATA(控制字節、數據或地址,高位在前,低位在后)、ACK位、STOP。其中START定義為SCK=“1”時(shí)SDT的下降沿;STOP定義為SCK=“1”時(shí)SDT的上升沿;若GRP=“0”,表示下面的字節是控制字節,否則表示下面的字節是數據或地址;ACK的產(chǎn)生方法是在A(yíng)CK周期(回應時(shí)鐘)的高電平期間將SDT拉低。STOP產(chǎn)生之后,SCK、SDT保持高電平狀態(tài)。

串行總線(xiàn)上定義了三種數據格式:

具有串行接口的I/O擴展器EM83010及其應用 (a) 控制字節的傳送

具有串行接口的I/O擴展器EM83010及其應用

(b) 隨機地址的數據讀寫(xiě)

具有串行接口的I/O擴展器EM83010及其應用

(c) 連續地址的數據讀寫(xiě)

具有串行接口的I/O擴展器EM83010及其應用

在以上數據格式中,S:開(kāi)始(START);P:停止(STOP);D:數據(8位);1:(GRP)高電平;0:(GRP)低電平;A:地址(8位);K:讀數據時(shí)有回應(ACK);C:控制字節(8位);NK:讀數據時(shí)無(wú)回應(No ACK)。

具有串行接口的I/O擴展器EM83010及其應用1.4 控制字節

控制字節的位定義如表2所示。

注:(T1 T0 A2 A1 A0)=(1 1 0 0 0)被保留,

用于R-option地址。

1.5 寄存器(I/O端口及RAM)

1.5.1 寄存器(I/O端口、RAM)分配表

寄存器(I/O端口及RAM)分配表如表3所示。

1.5.2 R00~R01(端口0~端口1)

·R00是6位寄存器,對應端口0,讀寫(xiě)R00的高2位無(wú)意義。

具有串行接口的I/O擴展器EM83010及其應用 ·R01是8位寄存器,對應端口1。

·每個(gè)I/O管腳均可定義為輸入或輸出。

·寫(xiě)入R00和R01時(shí)是串行傳送的,但數據被刷新到管腳上是同時(shí)的;讀R00和R01時(shí),管腳數據的 采樣也是同時(shí)的。

1.5.3 R02和R03(IOC0和IOC1)

·IOC0(R02)是6位寄存器,控制端口0數據I/O的方向,讀寫(xiě)IOC0的高2位無(wú)意義。

·IOC1(R03)是8位寄存器,控制端口1數據I/O的方向。

·IOC0和IOC1中的“1”置對應管腳為高阻,表示輸入;“0”置對應管腳為輸出狀態(tài)。

·上電后,IOC0和IOC1各位均為“1”。

·IOC0和IOC1的接收是串行的,但寫(xiě)入寄存器是同時(shí)的。

1.5.4 R04~R93(通用寄存器)

·R04~R93為144字節的通用寄存器(SRAM)。

1.6 R-option地址片選

總線(xiàn)上有多個(gè)設備時(shí),每個(gè)設備應具有不同的地址。如表1所示,P00~P02可作為R-option 腳,用于芯片的片選。

每個(gè)R-option管腳被內部電路微弱拉為高電平,若外接560kΩ電阻接地則讀作“0”,否則讀作“1”。

上電后必須在控制字節中發(fā)出“讀R-option”命令(此時(shí)Control byte=11000001,且“STOP”上升沿之前應該延時(shí)500μs),將片選地址讀入后,P00~P02的R-option地址片選才起作用。

P00~P02可作為雙向I/O管腳,由于R-option功能的原因,建議P00~P02用作輸出腳。

1.7 EM83010的應用電路舉例

EM83010的應用電路如圖3所示。R2~R8=560kΩ,R1=10kΩ,此電路有3片EM83010,共用2根總線(xiàn)(MCS51單片機的P10和P11)。由R2~R8的接法可知,3片EM83010的地址分別為000、001、010。

這樣,在圖3中,2根I/O線(xiàn)(P10、P11)可擴展14×3=42個(gè)I/O口,以及144×3=432字節的RAM。

可見(jiàn)EM83010用于I/O擴展時(shí),不僅便于實(shí)現,而且功能強大。

2 EM83010用于MCS51的I/O擴展

2.1 硬件電路

利用EM83010對MCS51單片機進(jìn)行I/O擴展的硬件電路請參照圖3。直接將MCS51單片機的2根I/O口線(xiàn)(如P10、P11)連至SDT、SCK即可。

2.2 軟件設計

2.2.1 基本考慮

EM83010的SCK時(shí)鐘頻率最高可為500kHz。對于主頻12MHz的MCS51單片機而言,其指令周期不小于1μs,由指令產(chǎn)生的SCK時(shí)鐘周期不小于2μs,完全滿(mǎn)足上述條件。

2.2.2 程序編寫(xiě)

下面以發(fā)送控制字節(Control byte)子程序為例,說(shuō)明MCS51系列單片機對EM83010的控制方法。

;發(fā)送控制字節子程序

;Control Byte 存放在累加器A中

SDT bit P10 ; P10與EM83010的SDT相連

SCK bit P11 ; P11與EM83010的SCK相連

具有串行接口的I/O擴展器EM83010及其應用TransmitControl:

SETB SDT ;

SETB SCK ; 在SCK高電平期間

CLR SDT ; 產(chǎn)生“START”(下降沿)

CLR SCK ;

SETB SCK ; 發(fā)送“GRP”(GRP=0)

MOV R0#08 ;發(fā)送8位的Control Byte

OutByte:

CLR SCK ;

RLC A ;帶進(jìn)位標志循環(huán)左移位

MOV SDT,C ;發(fā)送1位數據

SETB SCK ;

DJNZ R0,OutByte ;

CLR SCK ;

SETB SCK ;

JB SDT,$ ;等待“ACK”

CLR SCK ;

CLR SDT ;

SETB SCK ;在SCK高電平期間

SETB SDT ;產(chǎn)生“STOP”(上升沿)

RET ;子程序返回

以上子程序將存放在累加器A中的控制字節Control Byte發(fā)送給EM83010,入口地址標號為T(mén)ransmitControl。該程序在SDT上依次傳輸了START、GRP、8位Control Byte、ACK、STOP,其中8位Control Byte的串行化主要是由帶進(jìn)位標志循環(huán)移位指令(RLC A)實(shí)現的。

2.2.3 操作步驟

系統上電后,MCS51單片機應先向EM83010發(fā)出“讀R-option”命令(與TransmitControl子程序相似,參數A=0C1H,且發(fā)送“STOP”上升沿前應延時(shí)500μs”),將片選地址讀入后,P00~P02的R-option地址片選才起作用。

接下來(lái),可根據需要對EM83010的端口0、端口1及RAM進(jìn)行讀寫(xiě),從而實(shí)現了單片機I/O口及RAM的擴展。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>