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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392974.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392974.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392974.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何從XMLHttpRequest創建自定義獲取API

What is your worst nightmare?你最可怕的噩夢是什么? That sounded dark, but it’s not a rhetorical question. I really want to know because I am about to tell you mine. Along the way, we will learn some things like how the fetch API works and als…

leetcode637. 二叉樹的層平均值

給定一個非空二叉樹, 返回一個由每層節點平均值組成的數組。示例 1:輸入:3/ \9 20/ \15 7 輸出:[3, 14.5, 11] 解釋: 第 0 層的平均值是 3 , 第1層是 14.5 , 第2層是 11 。因此返回 [3, 14.5, 11] 。/*** Definition for a b…

5.3 上午

觀看英語課程——《戀練有詞》 學習Linux 轉載于:https://www.cnblogs.com/bgd140206110/p/6801164.html

AD庫轉換為KiCAD庫的方法

AD庫轉換為KiCAD庫的方法 參照博主另外一篇文檔: AD轉換為KiCAD的方法,點擊此處轉載于:https://www.cnblogs.com/zhiqiang_zhang/p/11109560.html

遺傳算法求解裝箱問題c語言,求解裝箱問題的遺傳算法-南昌航空大學期刊網.pdf...

求解裝箱問題的遺傳算法-南昌航空大學期刊網1998 2 Journal of Nanchang Institute of Aeronautical Technology 21998方 平    李 娟( 南昌航空工業學院)  ( 西北工業大學): ( Bin Packing) ,, , D( irst it De-creasing) ,: ; ; ;: TP301. 6( )( Bin Packing) , :1 2 …

mysql索引隨記

為什么80%的碼農都做不了架構師?>>> 先了解下Btree:https://my.oschina.net/u/3646190/blog/1593094 為什么每個數據項,即索引字段要盡量的小,比如int占4字節,要比bigint8字節少一半? 通過上面…

leetcode79. 單詞搜索(回溯算法)

給定一個二維網格和一個單詞,找出該單詞是否存在于網格中。 單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內的字母不允許被重復使用。 示例: board [ [‘A’,‘…

react鉤子_迷上了鉤子:如何使用React的useReducer()

react鉤子So the React Conference just happened and as always something new happened. Hooks happened! The React team talked about suspense, lazy loading, concurrent rendering, and hooks :D.因此,React會議剛剛發生,并且一如既往地發生了一些…

開發注意事項

明確需求 - 溝通 - 定好上下游接口 次序亂不得轉載于:https://www.cnblogs.com/zslzz/p/6802437.html

c語言寫桌面程序unity,Unity和iOS原生界面交互示例

注意上面的Main方法中出現的UnityAppController,該類就是作為控制類來實現Unity在iOS上顯示的功能,在Main方法中就是將該控制器作為參數傳遞,即Main方法之后就會進入該類執行。所以這是我們進入到UnityAppController.mm,來查看該類…

oracle審計實施

1、語句審計 Audit session; Audit session By ; 與instance連接的每個會話生成一條審計記錄。審計記錄將在連接時期插入并且在斷開連接時期進行更新。 保留有關會話的信息比如連接時期斷開連接時期處理的邏輯和物理I/O,以及更多信息將存儲在單獨一條審計 記錄中…

JPDA 架構研究5 - Agent利用環境指針訪問VM (內存管理篇)

引入: 我們在前面說到JVMTI的客戶端Agent,又提到Agent通過環境指針來訪問VM。這里就來看看環境指針到底有多大的訪問VM的能力。 分類1:內存管理 a.Allocate. 分配內存 jvmtiError Allocate(jvmtiEnv* env,jlong size,unsigned char** mem_ptr) size:分配…

leetcode94. 二叉樹的中序遍歷(dfs)

給定一個二叉樹,返回它的中序 遍歷。示例:輸入: [1,null,2,3]1\2/3輸出: [1,3,2]代碼 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class …

vtk刪除一個actor_如何構建一個基于actor的簡單區塊鏈

vtk刪除一個actorScalachain is a blockchain built using the Scala programming language and the actor model (Akka Framework).Scalachain是使用Scala編程語言和參與者模型( Akka Framework )構建的區塊鏈。 In this story I will show the development process to build…

java枚舉的簡單介紹

1.枚舉,enum關鍵字,相當于public final static. 2.舉例: 首先定義了一個名為spiciness的枚舉類型。 public enum Spiciness {NOT, MILD, MEDIUM, HOT, FLAMING } 再來測試一下enum,這個測試方法表明它有tostring()方法&#xff0…

瀏覽器中插入富文本編輯器

常用的富文本編輯器有CKEditor、UEEditor、TinyEditor、KindEditor等、以下以kindeditor編輯器的使用為例。 1.官網下載KindEditor編輯器http://kindeditor.net/down.php, 當前最新版本為4.1.11,解壓縮后放入項目的static目錄,作為js插件引用…

獲取Extjs文本域中的內容

經常在Ext.select()和Ext.query()等問題上糾結,今天終于有了點新認識: 需求,假設我們的頁面上有個panel ,其id為clusterstab_edit_details,這個panel的內部有個textarea,這個textarea的name為editDetails_Description,那么我們有多少方法可以…

android觸摸指紋會觸發按鍵功能,Android P新特性:利用觸摸指紋識別器能阻止手機息屏...

設想你正在閱讀手機上的文章,突然間顯示屏變暗了一點。顯然,你設置的30秒或1分鐘超時息屏對于常規使用來說還可以,但對于閱讀純文本片段,還遠遠不夠。因此,這時你會輕觸屏幕,可能會上下滑動,以防…

leetcode37. 解數獨(hashmap+回溯)

編寫一個程序,通過已填充的空格來解決數獨問題。 一個數獨的解法需遵循如下規則: 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。 空白格用 ‘.’ 表示。 Note: 給定的數獨序…

malloc、calloc、realloc和alloca各種的區別

需要先包含頭文件 #include"malloc.h"malloc是標準的在堆中開辟新的空間比如char *pt(char *)malloc(10*sizeof(char));需要free(p)才會釋放空間calloc也是開辟空間,但是使用方式不一樣比如char *pt(char *)calloc(100, sizeof(char));然后用calloc開辟的…