IC接口的输入与输出驱动的PCFWord文档下载推荐.docx

上传人:b****5 文档编号:17414058 上传时间:2022-12-01 格式:DOCX 页数:7 大小:15.43KB
下载 相关 举报
IC接口的输入与输出驱动的PCFWord文档下载推荐.docx_第1页
第1页 / 共7页
IC接口的输入与输出驱动的PCFWord文档下载推荐.docx_第2页
第2页 / 共7页
IC接口的输入与输出驱动的PCFWord文档下载推荐.docx_第3页
第3页 / 共7页
IC接口的输入与输出驱动的PCFWord文档下载推荐.docx_第4页
第4页 / 共7页
IC接口的输入与输出驱动的PCFWord文档下载推荐.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

IC接口的输入与输出驱动的PCFWord文档下载推荐.docx

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

IC接口的输入与输出驱动的PCFWord文档下载推荐.docx

我作了一个电路,其中P7-P4作为输入检测开关状态,P3-P0作为输出来驱动LED灯

程序如下

#include"

"

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

<

Place))

#defineCLRBIT(VAR,Place)(VAR&

=((1<

Place)^255))

sbitIC_SCL=P3^6;

sbitIC_SDA=P3^7;

unsignedcharIC_Re_Time;

unsignedcharIC_Err_Flag;

voidTimer0_Init(void)

{

TMOD=0x00;

信方式:

I2C

2.通信端口:

IC_SCL,IC_SDA

3.通信地址:

0x0101000x

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

voidIC_Start(void)//启动IC通信

IC_SDA=1;

Delay();

IC_SCL=1;

IC_SDA=0;

IC_SCL=0;

}

voidIC_Stop(void)//停止IC通信

voidIC_Receive_Ack(void)//接受ACK

IC_Re_Time=0;

while(IC_Re_Time<

=30)

if(IC_SDA==0)

IC_Err_Flag=0;

break;

else

IC_Err_Flag=1;

//voidIC_Send_ACK(void)//发送ACK

//{//ifreadmanydatasatatime,thiscanbeused

//IC_SDA=0;

//Delay();

//IC_SCL=1;

//IC_SCL=0;

//IC_SDA=1;

//}

voidIC_Send_NAck(void)//发送NACK

voidIC_Write_Byte(unsignedcharData)//写数据到8574

unsignedchari;

for(i=0;

i<

=7;

i++)

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

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

IC_Stop();

if(IC_Err_Flag==0)

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

return(Return_Data);

voidPCF8574_Init(void)

IC_Write_Data(0xf0);

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

voidmain(void)

unsignedchartemp3;

Timer0_Init();

PCF8574_Init();

while

(1)

temp3=IC_Read_Data();

IC_Write_Data(0x0f);

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

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

*中断服务子程序*

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

externvoidexternal0_rt(void)interrupt0//INT0

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

TH0=0x1e;

TL0=0x0c;

IC_Re_Time++;

voidexternal1_rt(void)interrupt2using1//INT1

voideit1_rt(void)interrupt3using1//T1,标准

voidsci_rt(void)interrupt4using1//UART

voideit2_rt(void)interrupt5using1//T23种工作模式,输入捕捉、自动重载和波形发生器

voidPCA_rt(void)interrupt6using1//PCA

voidKBDIT_rt(void)interrupt7using1//keyboard

voidspi_rt(void)interrupt9using1//SPI

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

当前位置:首页 > 高中教育 > 高中教育

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

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