您的位置 首页 厂商

pic单片机IIC通讯读24C02程序例 16F877A 主频4M

文本名为iichifndef_iic_h_define_iic_h_pic单片机IIC通信初始化函数声明voidiiccsh(void);pic单片机IIC通信读外围

文本名为 iic.h #ifndef _iic_h_

#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; sdf=400; while(sdf)--sdf;)#define  _iic_h_#include//pic单片机IIC通讯初始化函数void iiccsh(void)   {TRISC3=1;     TRISC4=1;     //PIC单片机(对16F877A单片机而言IIC通讯是RC3和RC4引脚)IIC通讯时时钟引脚和数据引脚要设置成输入SSPCON=0X28;  //SSPCON同步串口操控寄存器设置成IIC通讯功用使能和单片机主控方法SSPCON2=0;    //SSPCON2同步串口操控寄存器置0SSPSTAT=0X80;  //SSPSTAT同步串口状况寄存器设置成选用规范S形式(100Kb/s)和输入电平满意IIC总线规范SSPADD=9;     //SSPADD  iic通讯波特率寄存器 }//pic单片机IIC通讯读外围设备函数//功用:传送一个8位地址,回来一个8位数据unsigned char iicread(unsigned char address)  //address位{unsigned char data;SSPIF=0;SEN=1;  //在SDA和SCL线上树立和发送一个发动信号时序while(!SSPIF);  //判别是发动信号否发送结束,SSPIF为1的时分是真 为0的时分是假 !SSPIF(1)为非真,为假退出句子SSPIF=0;  //软件清零 不会主动清零SSPBUF=0XA0;  //发送外设IIC器材地址和写信号while(!SSPIF);SSPIF=0;SSPBUF=address;  //发送要读外设IIC器材数据的地址while(!SSPIF);  //判别是否发送结束SSPIF=0;RSEN=1;  //发送发动重启信号while(!SSPIF);SSPIF=0;SSPBUF=0XA1;  //发送外设IIC器材地址和读数据信号while(!SSPIF);  //每发送一个数据都要检测是否成功SSPIF=0;RCEN=1;  //设置读答应while(SSPIF==0);data=SSPBUF;// while(SSPIF==0);SSPIF=0;ACKDT=0;  //写入应对信号ACKEN=1;   //发送应对信号while(!SSPIF);SSPIF=0;RCEN=0; PEN=1;  //在SDA和SCL线上树立和发送一个中止信号时序while(!SSPIF); //假如收到中止信号同样会置位SSPIF=0;return(data);}//pic单片机IIC通讯给外围器材发送函数声明//功用:传送一个8位地址,传送一个8位数据或指令void iicwrite(unsigned char diz,unsigned char data){SSPIF=0;SEN=1;  //在SDA和SCL线上树立和发送一个发动信号时序while(!SSPIF);  //判别是发动信号否发送结束,SSPIF为1的时分是真 为0的时分是假 !SSPIF(1)为非真,为假退出句子SSPIF=0;   //软件清零 不会主动清零SSPBUF=0XA0;  //发送外设IIC器材地址和写信号while(!SSPIF);  //判别是否发送结束SSPIF=0;SSPBUF=diz;  //发送要读外设IIC器材数据的地址while(!SSPIF);  //每发送一个数据都要检测是否成功SSPIF=0;SSPBUF=data;  //发送要读外设IIC器材要存储的数据或指令while(!SSPIF);  //每发送一个数据都要检测是否成功SSPIF=0;PEN=1;  //在SDA和SCL线上树立和发送一个中止信号时序while(!SSPIF);  //假如收到中止信号同样会置位SSPIF=0; }#endif

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/255478.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部