<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è) > 嵌入式系統 > 設計應用 > 單片機io擴展程序設計

單片機io擴展程序設計

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

下面介紹兩種的方法
!!!!用8243擴展IO接口
/*------------------------------------------------------------------------------------------------
函數名稱(chēng):Config.h
功能描述:配置
輸入參數:無(wú)
輸出參數:無(wú)
特殊說(shuō)明:在不同的應用系統中,需要做相應調整
//----------------------------------------------------------------------------------------*/
#include reg52.h>
sbit ContrBit0=P1^0;
sbit ContrBit1=P1^1;
sbit ContrBit2=P1^2;
sbit ContrBit3=P1^3;
sbit PROG =P1^4;
sbit CS =P1^5;
sfr data_buf=0x90;


/*------------------------------------------------------------------------------------------------
函數名稱(chēng):driver8243
功能描述:驅動(dòng)8243
輸入參數:sele_P端口選擇,sele_M工作模式選擇,out_data輸出模式下的輸出數據
輸出參數:in_data接收模式返回接收到的數據,其它模式返回0
特殊說(shuō)明:在不同的單片機應用系統中,需要做相應得調整
//----------------------------------------------------------------------------------------------------------------*/
#includeconfig.h>
char driver8243(char sele_P,char sele_M,char out_data)
{
char in_data=0;
PROG=1; //置PROG為高電平
//開(kāi)始寫(xiě)控制字
if((sele_P0x01)==0) //將控制字最低位送到8243的p2.0
{
ContrBit0=0;
}
else
{
ContrBit0=1;
}
if((sele_P0x02)==0) //將控制字第二位送到8243的p2.1
{
ContrBit1=0;
}
else
{
ContrBit1=1; //以上兩位共同指定端口地址
}
//寫(xiě)端口工作模式控制字

if((sele_M0x01)==0) //將端口工作模式控制字低位送到8243的p2.2
{
ContrBit2=0;
}
else
{
ContrBit2=1;
}

if((sele_M0x01)==0) //將端口工作模式控制字高位送到8243的p2.3
{
ContrBit3=0;
}
else
{
ContrBit3=1;
} //寫(xiě)控制字完成

PROG=0; //在PROG上產(chǎn)生下降沿
switch(sele_M0x03) //判斷工作模式
{
case 0: break; //sele_M=B00為輸入,不處理,等待上升沿
case 1: data_buf=out_data;break; //sele_M=B01為輸出,直接送數據
case 2: data_buf=out_data;break; //sele_M=B10為邏輯或,直接送數據
case 3: data_buf=out_data;break; //sele_M=B11為邏輯與,直接送數據
}

PROG=1; //在PROG上產(chǎn)生上升沿
if((sele_M0x03)==0) //sele_M=B00為輸入,接收數據
in_data=(data_buf0x0F);
return(in_data); //sele_M=B00,返回接收到的數據
//sele_M!=B00,返回0
}

void main( void)
{
char receive_data;
receive_data= driver8243(1,0,5);
}

單片機方法2:
=======================單片機中IO口擴展IC===================================


單片機中IO口數量非常有限,做一些少量的外圍控制還可以,如果系統稍大一些就要加外加芯片來(lái)擴展IO數量,在應用過(guò)程

中我發(fā)現PCF8574 這款芯片非常理想具有8路的輸入輸出的IO口同時(shí)具有鎖存功能,和MCU的通訊方式為I2C,還具有中斷

輸出功能當其中一個(gè)腳拉低時(shí),就從中斷腳輸出一個(gè)低電平來(lái)通知單片機響應,這樣MCU就可以按自己的方式工作當有外部觸

發(fā) 時(shí)才讀取PCF8574做為外部擴展按鍵等非常方便。

現在這種片子在使用中由于在使用中沒(méi)有規化好端口的輸入輸出,在具體的應用時(shí)不太符合常規,大家也有所看法,所以philips最近

又出了一款新的IO擴展芯片打算取爾代之,地址也是和PCF8574一樣它的名字叫PCA9554

======================================================



關(guān)鍵詞: 單片機 io擴展 8243端口

評論


相關(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>