1、reg51.h#defi ne SETBIT(VAR,Place) (VAR|=(1Place)#defi ne CLRBIT(VAR,Place) (VAR&=(1PlaceF255)sbit IC_SCL=P3A6;sbit IC_SDA=P3A7;un sig ned char IC_Re_Time;un sig ned char IC_Err_Flag;void TimerOnit(void)TMOD=OxOO; /timerO 工作定时器方式0 , 13位技术TH0=0x1e; /5msTLO=OxOc;TRO=1; /启动时钟OETO=1; /允许时钟O进行中断EA=1; /开放所
2、有中断void Delay(void)范文范例学习参考指导.un sig ned char i;for(i=0;i=10;i+)Junsigned char VALBIT(unsigned int Val,unsigned char Bit)un sig ned int Buf;Buf=0x0001;if(Bit)Buf=Bit;Val&=Buf;if(Val)return(0xff);elsereturn(0x00);/*下面是PCF8574的操作程序1.通信方式:I2C2.通信端口 :IC_SCL(P3.6),IC_SDA(P3.7)3.通信地址:0x0101000x*void IC_St
3、art(void) / 启动 IC 通信void IC_Stop(void) / 停止 IC 通信void IC_Receive_Ack(void) / 接受 ACKIC_SDA=1;IC_SCL=1;Delay();IC_Re_Time=O;while(IC_Re_Time=30)IC_SCL=0;word.专业技术行业资料/void IC_Send_ACK(void) / 发送 ACK/ /if read many datas at a time,this can be used/ IC_SDA=0;/ Delay();/ IC_SCL=1;/ IC_SCL=0;/ IC_SDA=1;/
4、发送NACK写数据到8574id IC_Write_Byte(u nsig ned char Data) /=7;if(VALBIT(Data,(7-i) /data out msbIC_SDA=0;unsigned char IC_Read_Byte(void) / 从 8574 读取一个数据un sig ned char Data;if(IC_SDA)SETBIT(Data,(7-i); /data in msb tooCLRBIT(Data,(7-i);return(Data);void IC_Write_Data(unsigned char Data)un sig ned char w
5、rite_time;un sig ned char write_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);un sig ned char IC_Read_Data(void)un sig ned char Return_Data;un sig ned char read_time;for(read_time=0;read_timeread_time+)IC_Writ
6、e_Byte(0x41);Return_Data=IC_Read_Byte();IC_Se nd_NAck();IC_Stop();if(IC_Err_Flag=0)return(Return_Data);break;void PCF8574ni t(void)IC_Write_Data(OxfO); / 输入状态的必须开始的时候置为 1,输出为0void ma in (void)un sig ned char temp3;Timer。ni t();PCF8574_I ni t();while(1)temp3=IC_Read_Data();IC_Write_Data(OxOf);中间可以添加你
7、需要的模块,比如显示或者其他的操作等/* 中断服务子程序 */extern void externalO_rt(void)interrupt 0/INT0exter n void eit0_rt(void)i nterrupt 1/T0 ,标准,定时中断TL0=0x0c;IC_Re_Time+;void external1_rt(void)i nterrupt 2 usi ng 1/INT1void eit1_rt(void)i nterrupt 3 us ing 1/T1 ,标准void sci_rt(void)i nterrupt 4 usi ng 1/UARTvoid PCA_rt(void)i nterrupt 6 us ing 1/PCAvoid KBDIT_rt(void)i nterrupt 7 usi ng/keyboardvoid spi_rt(void)i nterrupt 9 usi ng 1/SPI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1