日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

16F877A和24C02通信汇编语言,pic单片机IIC通信读24C02程序例 16F877A 主频4M

發布時間:2023/12/9 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 16F877A和24C02通信汇编语言,pic单片机IIC通信读24C02程序例 16F877A 主频4M 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#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同步串口控制寄存器置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

總結

以上是生活随笔為你收集整理的16F877A和24C02通信汇编语言,pic单片机IIC通信读24C02程序例 16F877A 主频4M的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。