8255a初始化c语言程序,8255A的c语言程序.doc

8255A的c语言程序

8255A的c语言程序

【实例24】用8243扩展I/O端口

#include

sbit ContrBit0=P1^0;

sbit ContrBit1=P1^1;

sbit ContrBit2=P1^2;

sbit ContrBit3=P1^3;

sbit PROG=P1^4;

sbit CS=P1^5;

char driver8243(char sele_P,char sele_M,char out_data)

{

char in_data=0;

char data_buf;

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;

//产生上升沿

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);

}

【实例25】用8255A扩展I/O口

//----------------------------------------------------------------------------------------------------

// 函数名称:rd_PA

// 输入函数:无

// 输出参数:PA_data,PA输入的数据

// 功能说明:驱动PA实现输入功能,读入PA的并行数据

//----------------------------------------------------------------------------------------------------

unsigned char rd_PA(void) //读PA

管脚定义及函数声明

//-------------------------------------------函数声明,管脚定义--------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值