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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

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

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年10月09日   【字體:

文本名為   iic.h #ifndef  _iic_h_
#define  _iic_h_//pic單片機(jī)IIC通信初始化函數(shù)聲明
void iiccsh(void);  
//pic單片機(jī)IIC通信讀外圍設(shè)備函數(shù)聲明
//功能:傳送一個(gè)8位地址,返回一個(gè)8位數(shù)據(jù)
unsigned char iicread(unsigned char data);
//pic單片機(jī)IIC通信給外圍器件發(fā)送函數(shù)聲明
//功能:傳送一個(gè)8位地址,傳送一個(gè)8位數(shù)據(jù)或指令
void iicwrite(unsigned char diz,unsigned char data);
#endif          文本名為   iic.c#ifndef  _iic_h_      //立即寫,立即讀,在寫讀之間要有一定的延時(shí)(unsigned int sdf; sdf=400; while(sdf)--sdf;)
#define  _iic_h_
#include<pic.h>
//pic單片機(jī)IIC通信初始化函數(shù)
void iiccsh(void)   
{
 TRISC3=1;     
 TRISC4=1;     //PIC單片機(jī)(對(duì)16F877A單片機(jī)而言IIC通信是RC3和RC4引腳)IIC通信時(shí)時(shí)鐘引腳和數(shù)據(jù)引腳要設(shè)置成輸入
 SSPCON=0X28;  //SSPCON同步串口控制寄存器設(shè)置成IIC通信功能使能和單片機(jī)主控方式
 SSPCON2=0;    //SSPCON2同步串口控制寄存器置0
 SSPSTAT=0X80;  //SSPSTAT同步串口狀態(tài)寄存器設(shè)置成采用標(biāo)準(zhǔn)S模式(100Kb/s)和輸入電平滿足IIC總線標(biāo)準(zhǔn)
 SSPADD=9;     //SSPADD  iic通信波特率寄存器 
}
//pic單片機(jī)IIC通信讀外圍設(shè)備函數(shù)
//功能:傳送一個(gè)8位地址,返回一個(gè)8位數(shù)據(jù)
unsigned char iicread(unsigned char address)  //address位
{
 unsigned char data;
 SSPIF=0;
 SEN=1;  //在SDA和SCL線上建立和發(fā)送一個(gè)啟動(dòng)信號(hào)時(shí)序
 while(!SSPIF);  //判斷是啟動(dòng)信號(hào)否發(fā)送完畢,SSPIF為1的時(shí)候是真 為0的時(shí)候是假 !SSPIF(1)為非真,為假退出語(yǔ)句
 SSPIF=0;  //軟件清零 不會(huì)自動(dòng)清零
 SSPBUF=0XA0;  //發(fā)送外設(shè)IIC器件地址和寫信號(hào)
 while(!SSPIF);
 SSPIF=0;
 SSPBUF=address;  //發(fā)送要讀外設(shè)IIC器件數(shù)據(jù)的地址
 while(!SSPIF);  //判斷是否發(fā)送完畢
 SSPIF=0;
 RSEN=1;  //發(fā)送啟動(dòng)重啟信號(hào)
 while(!SSPIF);
 SSPIF=0;
 SSPBUF=0XA1;  //發(fā)送外設(shè)IIC器件地址和讀數(shù)據(jù)信號(hào)
 while(!SSPIF);  //每發(fā)送一個(gè)數(shù)據(jù)都要檢測(cè)是否成功
 SSPIF=0;
 RCEN=1;  //設(shè)置讀允許
    while(SSPIF==0);
 data=SSPBUF;
// while(SSPIF==0);
 SSPIF=0;
 ACKDT=0;  //寫入應(yīng)答信號(hào)
 ACKEN=1;   //發(fā)送應(yīng)答信號(hào)
 while(!SSPIF);
 SSPIF=0;
 RCEN=0; 
 PEN=1;  //在SDA和SCL線上建立和發(fā)送一個(gè)停止信號(hào)時(shí)序
 while(!SSPIF); //如果收到停止信號(hào)同樣會(huì)置位
 SSPIF=0;
 return(data);
 
}
//pic單片機(jī)IIC通信給外圍器件發(fā)送函數(shù)聲明
//功能:傳送一個(gè)8位地址,傳送一個(gè)8位數(shù)據(jù)或指令
void iicwrite(unsigned char diz,unsigned char data)
{
 SSPIF=0;
 SEN=1;  //在SDA和SCL線上建立和發(fā)送一個(gè)啟動(dòng)信號(hào)時(shí)序
 while(!SSPIF);  //判斷是啟動(dòng)信號(hào)否發(fā)送完畢,SSPIF為1的時(shí)候是真 為0的時(shí)候是假 !SSPIF(1)為非真,為假退出語(yǔ)句
 SSPIF=0;   //軟件清零 不會(huì)自動(dòng)清零
 SSPBUF=0XA0;  //發(fā)送外設(shè)IIC器件地址和寫信號(hào)
 while(!SSPIF);  //判斷是否發(fā)送完畢
 SSPIF=0;
 SSPBUF=diz;  //發(fā)送要讀外設(shè)IIC器件數(shù)據(jù)的地址
 while(!SSPIF);  //每發(fā)送一個(gè)數(shù)據(jù)都要檢測(cè)是否成功
 SSPIF=0;
 SSPBUF=data;  //發(fā)送要讀外設(shè)IIC器件要存儲(chǔ)的數(shù)據(jù)或命令
 while(!SSPIF);  //每發(fā)送一個(gè)數(shù)據(jù)都要檢測(cè)是否成功
 SSPIF=0;
 PEN=1;  //在SDA和SCL線上建立和發(fā)送一個(gè)停止信號(hào)時(shí)序
 while(!SSPIF);  //如果收到停止信號(hào)同樣會(huì)置位
 SSPIF=0; 
}
#endif
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 一区二区视频在线观看 | 精品久久久久国产免费第一页 | 无码一区二区三区视频 | 国产中文一区二区三区 | 亚洲一区二区在线免费观看 | 天天操,夜夜爽 | 福利影院在线看 | 91视频网| 国产黄色大片在线免费观看 | 性色视频 | 亚洲丝袜天堂 | 日韩精品久久久久久 | 亚洲超碰在线观看 | 日韩国产一区二区三区 | 午夜一区二区三区在线观看 | 日韩精品一区在线 | 中国一级特黄视频 | 9191av| 色婷婷亚洲一区二区三区 | 欧美a√| 国产不卡在线观看 | 亚洲精品久久久一区二区三区 | 日韩在线免费看 | 国产欧美一区二区三区在线看 | 欧美精品一区二区三区在线 | 在线国产视频 | 久草在线| 久久国| 91免费视频观看 | 精品国产欧美日韩不卡在线观看 | 一区二区三区免费在线观看 | 亚洲国产精品一区二区第一页 | 日韩午夜场 | 久久久久久久综合色一本 | 欧美成人a| 综合在线视频 | 天天操天天干天天透 | 91久久精品一区二区三区 | 一级黄色片网站 | 色免费在线视频 | 黄色毛片免费看 |