衣服 div网站,个人专业制作网站,安阳网,网页传奇怎么制作#define _iic_h_//pic单片机IIC通信初始化函数声明void iiccsh(void);//pic单片机IIC通信读外围设备函数声明//功能#xff1a;传送一个8位地址#xff0c;返回一个8位数据unsigned char iicread(unsigned char data);//pic单片机IIC通信给外围器件发送函数声明//功能#x…#define _iic_h_//pic单片机IIC通信初始化函数声明void iiccsh(void);//pic单片机IIC通信读外围设备函数声明//功能传送一个8位地址返回一个8位数据unsigned char iicread(unsigned char data);//pic单片机IIC通信给外围器件发送函数声明//功能传送一个8位地址传送一个8位数据或指令void iicwrite(unsigned char diz,unsigned char data);#endif 文本名为 iic.c#ifndef _iic_h_ //立即写立即读在写读之间要有一定的延时(unsigned int sdf; sdf400; while(sdf)--sdf;)#define _iic_h_#include//pic单片机IIC通信初始化函数void iiccsh(void){TRISC31;TRISC41; //PIC单片机(对16F877A单片机而言IIC通信是RC3和RC4引脚)IIC通信时时钟引脚和数据引脚要设置成输入SSPCON0X28; //SSPCON同步串口控制寄存器设置成IIC通信功能使能和单片机主控方式SSPCON20; //SSPCON2同步串口控制寄存器置0SSPSTAT0X80; //SSPSTAT同步串口状态寄存器设置成采用标准S模式(100Kb/s)和输入电平满足IIC总线标准SSPADD9; //SSPADD iic通信波特率寄存器}//pic单片机IIC通信读外围设备函数//功能传送一个8位地址返回一个8位数据unsigned char iicread(unsigned char address) //address位{unsigned char data;SSPIF0;SEN1; //在SDA和SCL线上建立和发送一个启动信号时序while(!SSPIF); //判断是启动信号否发送完毕SSPIF为1的时候是真 为0的时候是假 SSPIF(1)为非真为假退出语句SSPIF0; //软件清零 不会自动清零SSPBUF0XA0; //发送外设IIC器件地址和写信号while(!SSPIF);SSPIF0;SSPBUFaddress; //发送要读外设IIC器件数据的地址while(!SSPIF); //判断是否发送完毕SSPIF0;RSEN1; //发送启动重启信号while(!SSPIF);SSPIF0;SSPBUF0XA1; //发送外设IIC器件地址和读数据信号while(!SSPIF); //每发送一个数据都要检测是否成功SSPIF0;RCEN1; //设置读允许while(SSPIF0);dataSSPBUF;// while(SSPIF0);SSPIF0;ACKDT0; //写入应答信号ACKEN1; //发送应答信号while(!SSPIF);SSPIF0;RCEN0;PEN1; //在SDA和SCL线上建立和发送一个停止信号时序while(!SSPIF); //如果收到停止信号同样会置位SSPIF0;return(data);}//pic单片机IIC通信给外围器件发送函数声明//功能传送一个8位地址传送一个8位数据或指令void iicwrite(unsigned char diz,unsigned char data){SSPIF0;SEN1; //在SDA和SCL线上建立和发送一个启动信号时序while(!SSPIF); //判断是启动信号否发送完毕SSPIF为1的时候是真 为0的时候是假 SSPIF(1)为非真为假退出语句SSPIF0; //软件清零 不会自动清零SSPBUF0XA0; //发送外设IIC器件地址和写信号while(!SSPIF); //判断是否发送完毕SSPIF0;SSPBUFdiz; //发送要读外设IIC器件数据的地址while(!SSPIF); //每发送一个数据都要检测是否成功SSPIF0;SSPBUFdata; //发送要读外设IIC器件要存储的数据或命令while(!SSPIF); //每发送一个数据都要检测是否成功SSPIF0;PEN1; //在SDA和SCL线上建立和发送一个停止信号时序while(!SSPIF); //如果收到停止信号同样会置位SSPIF0;}#endif