久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

pic單片機IIC通信讀24C02程序例 16F877A 主頻4M

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年10月09日   【字體:

文本名為   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.h>
//pic單片機IIC通信初始化函數
void iiccsh(void)   
{
 TRISC3=1;     
 TRISC4=1;     //PIC單片機(對16F877A單片機而言IIC通信是RC3和RC4引腳)IIC通信時時鐘引腳和數據引腳要設置成輸入
 SSPCON=0X28;  //SSPCON同步串口控制寄存器設置成IIC通信功能使能和單片機主控方式
 SSPCON2=0;    //SSPCON2同步串口控制寄存器置0
 SSPSTAT=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
關閉窗口

相關文章

主站蜘蛛池模板: 午夜精品久久久久久久久久久久久 | 国产毛片久久久久久久久春天 | 欧美8一10sex性hd | 天天操天天摸天天干 | 一区在线观看 | 国产精品综合视频 | 日本一区二区三区精品视频 | 久久99精品久久久久久秒播九色 | 一区二区三区小视频 | 亚州激情 | 国产伦精品一区二区三区四区视频 | 日韩电影一区二区三区 | 99中文字幕 | 婷婷在线视频 | 日韩在线不卡 | 成人av一区二区三区 | 偷拍亚洲色图 | 国产99视频精品免视看9 | 日韩一三区 | 无码一区二区三区视频 | 超碰男人天堂 | 中文精品久久 | 99精品免费 | 久久久久国产精品一区二区 | 五月综合色啪 | www.国产精 | 久久亚洲精品国产精品紫薇 | 久久久91精品国产一区二区三区 | 国内精品久久久久久 | 欧美日韩中文在线 | 亚洲免费一区二区 | 久一精品 | 亚洲综合大片69999 | 99免费在线观看视频 | 欧美一级久久 | 欧美日韩国产在线观看 | 我我色综合 | 国产99久久久久 | 91精品久久久久 | 国产精品福利在线观看 | 久久久久亚洲精品中文字幕 |