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

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

IIC器件的讀寫操作,大家看看這個(gè)所謂的“教程”!!

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

看看下面的這段,是從***的“教程”里摘錄而來,如果是筆誤當(dāng)然無須吹毛求疵。

這里,無論是“接收”,還是“發(fā)送”,都是“ACK”, 其“ACK”的內(nèi)容是(SCL_IC_ C ARD=1;      SCL_IC_ C ARD=0;”)就這些。這樣能行嗎?這個(gè)“老師”連基本的IIC協(xié)議都沒弄懂。這大概不會(huì)是筆誤吧?

在IIC協(xié)議中,不管是主控器件還是從器件,A、向總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)后,就要發(fā)送一個(gè)應(yīng)答信號(hào)(1bit),告訴接收器件“發(fā)送完成”。B、接收器件正確接收到一個(gè)字節(jié)的數(shù)據(jù)后,也要發(fā)送一個(gè)應(yīng)答信號(hào)(1bit),告訴發(fā)送器件“接收完成”

如果接收器件接收不正確,則不會(huì)發(fā)送應(yīng)答信號(hào)。發(fā)送器件就檢測不到“應(yīng)答信號(hào)”,這時(shí)就要從“開始”步驟重來。

這里就有了這么幾個(gè)環(huán)節(jié):“應(yīng)答信號(hào)(1bit,低位)”、“非應(yīng)答信號(hào)(1bit,高位)、“檢測應(yīng)答信號(hào)”。

讀的流程:發(fā)送開始信號(hào)-發(fā)送器件地址(含“寫”信息)-檢測應(yīng)答-發(fā)送字節(jié)地址-檢測應(yīng)答-發(fā)送開始信號(hào)(含“讀”信息)-檢測應(yīng)答-讀一個(gè)字節(jié)-發(fā)送應(yīng)答信號(hào)-......讀第N字節(jié)-發(fā)送非應(yīng)答信號(hào)-發(fā)送停止信號(hào)

寫的流程:發(fā)送開始信號(hào)-發(fā)送器件地址(含“寫”信息)-檢測應(yīng)答-發(fā)送字節(jié)地址-檢測應(yīng)答-寫一個(gè)字節(jié)-檢測應(yīng)答信號(hào)-......寫第N字節(jié)-檢測應(yīng)答信號(hào)-發(fā)送停止信號(hào)
 

上面僅就多字節(jié)讀寫做了簡單的描述,單字節(jié)的類似。

特別說明:無論哪一個(gè)“檢測應(yīng)答信號(hào)”不成功,都要返回到“發(fā)送開始信號(hào)”處,重新開始。 如果是大容量的,發(fā)送地址分高位、低位2次,都要“檢測應(yīng)答”

下面就是這個(gè)“教程”的摘錄:

*****************(鄭重提醒:這是一個(gè)不正確的程序,千萬不要套用)******************   
第十四講 IC卡(24C01)

在日常生活中,IC卡的使用越來越廣泛,而且還有進(jìn)一步擴(kuò)大的趨勢。因此

有必要掌握這方面的知識(shí),下面以24C01 為例,簡單地介紹一般使用方法。


#include <reg52.h> 

#include <intrins.h> 

sbit   SC L _ IC _ C AR D= P1 ^3 ;                  

sbit   SDA_ IC _ C AR D= P1 ^4 ;                     

sbit WP_IC_CARD =P1^7; 

bdata char com_data; 

sbit m o s_bit=com_data^7; 

sbit low_bit=com_data^0; 

unsigned  char  data  display _buf fer[8];               

void   d e l a y(i n t   n );                                 

unsigned char rd_24c01(char a); 

void w r_24c01(char a,char b); 



ma in() 

{ 

unsigned char i; 

 WP_IC_CARD=1; 

  for (i=0;i<=7;i++) {display _buf fer[i]=rd_24c01(i);delay (250);} 

  for (i=0;i<=7;i++) {w r_24c01(i,display_buf fer[i]);delay (250);} 

 while(1); 

} 



void start()      //啟動(dòng)讀寫時(shí)序 

{          // 圖4-22 (c )開始、結(jié)束脈沖時(shí)序 

SDA_IC_ C ARD=1;  

    SCL_IC_ C ARD=1;  

    SDA_ IC _ C AR D= 0 ;             // 啟動(dòng)start 

    SCL_IC_ C ARD=0;  

} 

void stop()      //停止操作 

{          // 圖4-22 (c )開始、結(jié)束脈沖時(shí)序 

 SDA_IC_ C ARD=0;  

    SCL_IC_ C ARD=1;  

    SDA_IC_ C ARD=1;  

} 

void ack()      //應(yīng)答函數(shù) 

{           

 SCL_IC_ C ARD=1;  

    SCL_IC_ C ARD=0;  

} 

void shift8(char  a)    //8位移位輸出 

{  

data unsigned char i; 

    com _data=a; 

 for(i=0;i<8;i++) 

    {  

    SDA_IC_CARD=mo s_bit; 

    S C L _ IC _ C AR D= 1 ;  

    S C L _ IC _ C AR D= 0 ;  

    com _data=com_data*2; 

    } 

} 

unsigned char rd_24c01(char a)  // 讀IC 卡函數(shù) 

{  

data unsigned char i,comma nd; 

    SDA_IC_ C ARD=1;  

    SCL_IC_ C ARD=0;  

      st a rt ();       // 啟動(dòng) 

    com ma nd=0X A0 ;      //160; 

    shift8(comma nd);      // 送出器件地址       第一步 

      a c k ();       // 應(yīng)答 

      shift8(a);      //送出存儲(chǔ)器地址 



      a c k ();       // 應(yīng)答 

      st a rt ();       // 啟動(dòng) 

    com ma nd=0X A1       //161; 

    shift8(comma nd);      // 送出器件地址              第二步 

      a c k ();       // 應(yīng)答 

    SDA_IC_ C ARD=1;     // 

    for(i=0;i<8;i++)      // 循環(huán)8 次讀取一個(gè)字節(jié) 

      {  

      com _data=com_data*2; 

  SCL_IC_ C ARD=1;  

      lo w_b it=SDA_ IC_ C ARD;      讀取數(shù)據(jù) 

      SC L _ IC _ C AR D= 0 ;  

      } 

      st o p ();       // 停止操作 

    return(com _data); 

} 



void w r_24c01(char a,char b)   // 寫IC 卡函數(shù) 

{  

data unsigned char comma nd; 

    WP_IC_CARD=0; 

 _nop_(); 

 SDA_IC_ C ARD=1;  

    SCL_IC_ C ARD=0;  

      st a rt ();       // 啟動(dòng) 

    com ma nd=0X A0 ;      //160; 

    shift8(comma nd);      // 送出器件地址             寫IC 卡函數(shù) 

      a c k ();       // 應(yīng)答 

      shift8(a);      //送出存儲(chǔ)器地址 

      a c k ();       // 應(yīng)答 

      shift8(b);      //送出欲寫入的數(shù)據(jù) 

      a c k ();       // 應(yīng)答 

      st o p ();       // 停止操作 

 _nop_(); 

 WP_IC_CARD=1; 

} 



void delay(int n)    // 延時(shí)函數(shù) 

{ 

 int i; 

 for (i=1;i<=n;i++){;} 

} 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 久久av一区 | 欧美jizzhd精品欧美巨大免费 | 亚洲精品国产精品国自产在线 | 午夜日韩精品 | 精品国产精品三级精品av网址 | 欧美黑人国产人伦爽爽爽 | 伊人久久国产 | 久久国产综合 | 成人免费一区二区三区视频网站 | 国产欧美在线一区二区 | 欧美影院 | 丁香久久| 亚洲精品乱码久久久久久9色 | 亚洲免费视频网址 | 免费激情网站 | 久久伊人在 | 色婷婷综合久久久中文字幕 | 亚洲二区精品 | 久久久久久久国产 | 日韩欧美一区二区三区免费观看 | 午夜视频导航 | 精品成人av| 国产精品欧美精品 | 精品av| 国产精品久久久久久久久久久久久 | 成人日韩| 精品视频在线观看 | 欧美jizzhd精品欧美巨大免费 | 亚洲三级视频 | 亚洲成人免费视频 | 国产精品99 | 91精品在线看 | 国产成年人视频 | 亚洲成人高清 | 亚洲自拍偷拍欧美 | 国产精品久久久久久吹潮 | 成人啊啊啊 | 亚洲高清在线观看 | 欧美激情在线精品一区二区三区 | 二区在线视频 | 精品国模一区二区三区欧美 |