I2C接口的输入与输出驱动的PCF8574Word下载.docx

上传人:b****4 文档编号:13859772 上传时间:2022-10-14 格式:DOCX 页数:10 大小:65.31KB
下载 相关 举报
I2C接口的输入与输出驱动的PCF8574Word下载.docx_第1页
第1页 / 共10页
I2C接口的输入与输出驱动的PCF8574Word下载.docx_第2页
第2页 / 共10页
I2C接口的输入与输出驱动的PCF8574Word下载.docx_第3页
第3页 / 共10页
I2C接口的输入与输出驱动的PCF8574Word下载.docx_第4页
第4页 / 共10页
I2C接口的输入与输出驱动的PCF8574Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

I2C接口的输入与输出驱动的PCF8574Word下载.docx

《I2C接口的输入与输出驱动的PCF8574Word下载.docx》由会员分享,可在线阅读,更多相关《I2C接口的输入与输出驱动的PCF8574Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

I2C接口的输入与输出驱动的PCF8574Word下载.docx

reg51.h"

#defineSETBIT(VAR,Place)(VAR|=(1<

<

Place))

#defineCLRBIT(VAR,Place)(VAR&

=((1<

PlaceF255))

sbitIC_SCL=P3A6;

sbitIC_SDA=P3A7;

unsignedcharIC_Re_Time;

unsignedcharIC_Err_Flag;

voidTimerO」nit(void)

{

TMOD=OxOO;

//timerO工作定时器方式0,13位技术

TH0=0x1e;

//5ms

TLO=OxOc;

TRO=1;

//启动时钟O

ETO=1;

//允许时钟O进行中断

EA=1;

//开放所有中断

}

voidDelay(void)

……范文范例学习参考指导.……

unsignedchari;

for(i=0;

i<

=10;

i++)

J

unsignedcharVALBIT(unsignedintVal,unsignedcharBit)

unsignedintBuf;

Buf=0x0001;

if(Bit)

Buf<

=Bit;

Val&

=Buf;

if(Val)

return(0xff);

else

return(0x00);

/**********************************************

下面是PCF8574的操作程序

1.通信方式:

I2C

2.通信端口:

IC_SCL(P3.6),IC_SDA(P3.7)

3.通信地址:

0x0101000x

*********************************************

voidIC_Start(void)//启动IC通信

voidIC_Stop(void)//停止IC通信

voidIC_Receive_Ack(void)//接受ACK

IC_SDA=1;

IC_SCL=1;

Delay();

IC_Re_Time=O;

while(IC_Re_Time<

=30)

IC_SCL=0;

word...专业技术行业资料

//voidIC_Send_ACK(void)//发送ACK

//{//ifreadmanydatasatatime,thiscanbeused

//IC_SDA=0;

//Delay();

//IC_SCL=1;

//IC_SCL=0;

//IC_SDA=1;

 

//}

//发送NACK

写数据到8574

idIC_Write_Byte(unsignedcharData)//

=7;

if(VALBIT(Data,(7-i)))//dataoutmsb

IC_SDA=0;

unsignedcharIC_Read_Byte(void)//从8574读取一个数据

unsignedcharData;

if(IC_SDA)

SETBIT(Data,(7-i));

//datainmsbtoo

CLRBIT(Data,(7-i));

return(Data);

voidIC_Write_Data(unsignedcharData)

unsignedcharwrite_time;

unsignedcharwrite_data;

write_data=Data;

for(write_time=0;

write_time<

=2;

write_time++)

IC_Start();

IC_Write_Byte(0x40);

IC_Receive_Ack();

IC_Write_Byte(write_data);

unsignedcharIC_Read_Data(void)

unsignedcharReturn_Data;

unsignedcharread_time;

for(read_time=0;

read_time<

read_time++)

IC_Write_Byte(0x41);

Return_Data=IC_Read_Byte();

IC_Send_NAck();

IC_Stop();

if(IC_Err_Flag==0)

return(Return_Data);

break;

voidPCF8574」nit(void)

IC_Write_Data(OxfO);

//输入状态的必须开始的时候置为1,输出为0

voidmain(void)

unsignedchartemp3;

Timer。

」nit();

PCF8574_Init();

while

(1)

temp3=IC_Read_Data();

IC_Write_Data(OxOf);

;

中间可以添加你需要的模块,比如显示或者其他的操作等

/*********************************************************

*中断服务子程序*

*********************************************************/

externvoidexternalO_rt(void)interrupt0//INT0

externvoideit0_rt(void)interrupt1//T0,标准,定时中断

TL0=0x0c;

IC_Re_Time++;

voidexternal1_rt(void)interrupt2using1//INT1

voideit1_rt(void)interrupt3using1//T1,标准

voidsci_rt(void)interrupt4using1//UART

voidPCA_rt(void)interrupt6using1//PCA

voidKBDIT_rt(void)interrupt7using〔//keyboard

voidspi_rt(void)interrupt9using1//SPI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1