?? drive8243.c
字號:
/*----------------------------------------------------------------------------------------------------------------
函數名稱:driver8243
功能描述:驅動8243
輸入參數:sele_P端口選擇,sele_M工作模式選擇,out_data輸出模式下的輸出數據
輸出參數:in_data接收模式返回接收到的數據,其它模式返回0
特殊說明:在不同的單片機應用系統中,需要做相應得調整
//----------------------------------------------------------------------------------------------------------------*/
#include<config.h>
char driver8243(char sele_P,char sele_M,char out_data)
{
char in_data=0;
PROG=1; //置PROG為高電平
//開始寫控制字
if((sele_P&0x01)==0) //將控制字最低位送到8243的p2.0
{
ContrBit0=0;
}
else
{
ContrBit0=1;
}
if((sele_P&0x02)==0) //將控制字第二位送到8243的p2.1
{
ContrBit1=0;
}
else
{
ContrBit1=1; //以上兩位共同指定端口地址
}
//寫端口工作模式控制字
if((sele_M&0x01)==0) //將端口工作模式控制字低位送到8243的p2.2
{
ContrBit2=0;
}
else
{
ContrBit2=1;
}
if((sele_M&0x01)==0) //將端口工作模式控制字高位送到8243的p2.3
{
ContrBit3=0;
}
else
{
ContrBit3=1;
} //寫控制字完成
PROG=0; //在PROG上產生下降沿
switch(sele_M&0x03) //判斷工作模式
{
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上產生上升沿
if((sele_M&0x03)==0) //sele_M=B00為輸入,接收數據
in_data=(data_buf&0x0F);
return(in_data); //sele_M=B00,返回接收到的數據
//sele_M!=B00,返回0
}
void main( void)
{
char receive_data;
receive_data= driver8243(1,0,5);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -