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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4615|回復: 17
打印 上一主題 下一主題
收起左側

單片機24C02的讀寫程序搞了兩天了,還是搞不定,有大佬幫忙看看的嗎?

  [復制鏈接]
回帖獎勵 2 黑幣 回復本帖可獲得 2 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
本想做個外部存儲,就是24C02程序搞了一段時間,始終無法寫進和讀出數據·····實在不知道哪里有問題,看到上網上很多版本,改來改去都沒用······
單片機源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define ulong unsigned long

  5. sbit sda=P3^3;
  6. sbit scl=P3^2;
  7. sbit s=P2^3;
  8. sbit b=P2^4;
  9. sbit d=P2^5;

  10. uchar i;
  11. uchar array1[]={0xF0,0x01,0x00,0x01,0x00,0x01,0x00,0x01};
  12. uchar array2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  13. void delay(uint z)
  14. {
  15.         uint x,y;
  16.         for(x=z;x>0;x--)
  17.                 for(y=110;y>0;y--);
  18. }

  19. void start()//kaishi
  20. {
  21.         sda=1;
  22.         delay(10);
  23.         scl=1;
  24.         delay(50);
  25.         sda=0;
  26.         delay(50);
  27.               scl=0;
  28.               delay(20);
  29. }

  30. void stop()//tingzhi
  31. {
  32.         sda=0;
  33.         delay(10);
  34.         scl=1;
  35.         delay(50);
  36.         sda=1;
  37.         delay(40);
  38. }

  39. void respons()//yingda
  40. {
  41.         uchar i;
  42.         scl=1;
  43.         delay(10);
  44.         while((sda==1)&&(i<250))
  45.         i++;
  46.         scl=0;
  47.         delay(10);
  48. }

  49. void init()//chushihua
  50. {
  51.         sda=1;
  52.         delay(10);
  53.         scl=1;
  54.         delay(10);
  55. }

  56. void write_byte(uchar date)//xiezijie
  57. {
  58.         uchar i,temp;
  59.         temp=date;
  60.         for(i=0;i<8;i++)
  61.         {
  62.                 temp=temp<<1;
  63.                 scl=0;
  64.                 delay(10);
  65.                 sda=CY;
  66.                 delay(10);
  67.                 scl=1;
  68.                 delay(10);
  69.         }
  70.         scl=0;
  71.         delay(10);
  72.         sda=1;
  73.         delay(10);
  74. }
  75. uchar read_byte()//duzijie
  76. {
  77.         uchar i,k;
  78.         scl=0;
  79.         delay(10);
  80.         sda=1;
  81.         delay(10);
  82.         for(i=0;i<8;i++)
  83.         {
  84.                 scl=1;
  85.                 delay(10);
  86.                 k=(k<<1)|sda;
  87.                 scl=0;
  88.                 delay(10);
  89.         }
  90.         return k;
  91. }

  92. void write_add(uchar address,uchar date)
  93. {

  94.                 init();
  95.                 start();
  96.         write_byte(0xa0);
  97.         respons();
  98.         write_byte(address);
  99.         respons();
  100.                
  101.         write_byte(date);
  102.         respons();
  103.         stop();
  104.         
  105. }

  106. uchar read_add(uchar address)
  107. {
  108.         uchar date;
  109.         init();
  110.                 start();
  111.         write_byte(0xa0);
  112.         respons();
  113.         write_byte(address);
  114.         respons();
  115.         start();
  116.         write_byte(0xa1);
  117.         respons();
  118.         date=read_byte();
  119.         stop();
  120.         return date;
  121. }

  122. void writearray() //D′èëêy×é
  123. {
  124. uchar i=0;
  125. while(1)
  126. {
  127. write_add(i,array1[i]); //½«êy×éarray1ÖDμÄêy′óμØÖ·¡°0¡±òà′ÎD′èë′æ′¢Çø
  128. i++;
  129. if(i==8)
  130. break;
  131. }

  132. }

  133. void readarray()
  134. {
  135. uchar i=0;
  136. while(1)

  137. {
  138. array2[i]=read_add(i);
  139. i++;
  140. if(i==8)
  141. break;
  142. }

  143. }

  144. void main()
  145. {
  146.     //uchar j;
  147.                 init();
  148.           write_add(0x00,array1[0]);
  149.                 read_add(0x00);
  150.     while(1)
  151.                 {
  152.                 P1=array2[0];        
  153.                 }                        

  154. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 4#
ID:24758 發表于 2020-11-19 01:26 | 只看該作者
你說的無法讀寫的問題可以按以下兩步解決:
1.修改delay(),我感覺你的delay()延時太長了?稍囋
    void delay()
      {; ;}
  這個應該可以解決無法寫的問題。
2.在 write_add(0x00,array1[0]);
                read_add(0x00);
之間加延時,也就是寫完數據后稍等一會再進行讀操作。如:
              write_add(0x00,array1[0]);              for(i=100;i>0;i--)      
                   for(j=100;j>0;j--)         
                        ;
              read_add(0x00);
這個應該可以解決無法讀的問題。

附圖:

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

沙發
ID:826942 發表于 2020-11-18 20:17 | 只看該作者
#include "i2c.h"
#include "intrins.h"

void i2c_delay(void)
{
        _nop_();_nop_();_nop_();_nop_();_nop_();
}

void i2c_start(void)
{
        SCL=1;
        SDA=1;
        i2c_delay();
        SDA=0;
        i2c_delay();
        SCL=0;
        i2c_delay();
}

void i2c_stop(void)
{
        SCL=1;
        SDA=0;
        i2c_delay();
        SDA=1;
        i2c_delay();

}

//主機應答從機
void send_ACK(bit ack)
{
        SCL=0;
        i2c_delay();
        if(ack==ACK)
        {
                SDA=0;
    i2c_delay();       
        }
        else
        {
                SDA=1;
    i2c_delay();       
        }
        SCL=1;
        i2c_delay();
        SCL=0;

}

//主機檢查從機
bit check_ACK(void)
{
        bit ack;
        SCL=0;
        i2c_delay();
        SCL=1;
        _nop_();_nop_();
        if(SDA)
        {
                ack=NACK;
       
        }
        else
        {
                ack=ACK;
        }
        _nop_();_nop_();
        SCL=0;

        return(ack);
}

//發送數據,寫
void i2c_send_byte(uint8 dat)
{
        uint8 i;
       
        for(i=0;i<8;i++)
  {
                SCL=0;
        i2c_delay();
                if(dat&0x80)
                {
                        SDA=1;
                }
                else
                {
                        SDA=0;
                }
                i2c_delay();
                SCL=1;     
                dat=dat<<1;
        }
}

//接收數據,讀
uint8 i2c_read_byte(void)
{
        uint8 i,temp;
        for(i=0;i<8;i++)
  {
                SCL=0;
                i2c_delay();
                SCL=1;
          temp<<=1;
                if(SDA)
                {
                        temp|=0x01;
                }       
    i2c_delay();       
        }
                SCL=0;     //感覺應要拉低
        return(temp);
}
回復

使用道具 舉報

板凳
ID:826942 發表于 2020-11-18 20:19 | 只看該作者
#include <reg52.h>
#include <intrins.h>
#include "24c02.h"
#define  NOP()   _nop_()   /* 定義空指令 */
#define  _Nop()  _nop_()   /*定義空指令*/

sbit     SCL=P2^0;     //I2C  時鐘
sbit     SDA=P2^1;     //I2C  數據 普中定義

bit ack;                 /*應答標志位*/






//AT2402的功能函數
/*******************************************************************
                    向有子地址器件發送多字節數據函數               
函數原型: bit  ISendStr(UCHAR sla,UCHAR suba,ucahr *s,UCHAR no);  
功能:     從啟動總線到發送地址,子地址,數據,結束總線的全過程,從器件
          地址sla,子地址suba,發送內容是s指向的內容,發送no個字節。
          如果返回1表示操作成功,否則操作有誤。
注意:    使用前必須已結束總線。
********************************************************************/
bit ISendStr(unsigned char  sla,unsigned char  suba,unsigned char  *s,unsigned char  no)
{
   unsigned char i;

   Start_I2c();               /*啟動總線*/
   SendByte(sla);             /*發送器件地址*/
   if(ack==0)return(0);
   SendByte(suba);            /*發送器件子地址*/
   if(ack==0)return(0);

   for(i=0;i<no;i++)
   {   
     SendByte(*s);            /*發送數據*/
     if(ack==0)return(0);
     s++;
   }
   Stop_I2c();                /*結束總線*/

   return(1);
}

/*******************************************************************
                    向有子地址器件讀取多字節數據函數               
函數原型: bit  RecndStr(UCHAR sla,UCHAR suba,ucahr *s,UCHAR no);  
功能:     從啟動總線到發送地址,子地址,讀數據,結束總線的全過程,從器件
          地址sla,子地址suba,讀出的內容放入s指向的存儲區,讀no個字節。
           如果返回1表示操作成功,否則操作有誤。
注意:    使用前必須已結束總線。
********************************************************************/
bit IRcvStr(unsigned char  sla,unsigned char  suba,unsigned char  *s,unsigned char  no)
{
   unsigned char i;

   Start_I2c();                  /*啟動總線*/
   SendByte(sla);                /*發送器件地址*/
   if(ack==0)return(0);
   SendByte(suba);               /*發送器件子地址*/
   if(ack==0)return(0);

   Start_I2c();                 /*重新啟動總線*/
   SendByte(sla+1);
   if(ack==0)return(0);
   for(i=0;i<no-1;i++)
   {   
     *s=RcvByte();               /*發送數據*/
      Ack_I2c(0);                /*發送就答位*/  
     s++;
   }
   *s=RcvByte();
   Ack_I2c(1);                   /*發送非應位*/
   Stop_I2c();                   /*結束總線*/
   return(1);
}

/*******************************************************************
   

/*******************************************************************
                     起動總線函數               
函數原型: void  Start_I2c();  
功能:     啟動I2C總線,即發送I2C起始條件.  
********************************************************************/
void Start_I2c()
{
  SDA=1;         /*發送起始條件的數據信號*/
  _Nop();
  SCL=1;
  _Nop();        /*起始條件建立時間大于4.7us,延時*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();   
  SDA=0;         /*發送起始信號*/
  _Nop();        /* 起始條件鎖定時間大于4μs*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();      
  SCL=0;       /*鉗住I2C總線,準備發送或接收數據 */
  _Nop();
  _Nop();
}

/*******************************************************************
                      結束總線函數               
函數原型: void  Stop_I2c();  
功能:     結束I2C總線,即發送I2C結束條件.  
********************************************************************/
void Stop_I2c()
{
  SDA=0;      /*發送結束條件的數據信號*/
  _Nop();       /*發送結束條件的時鐘信號*/
  SCL=1;      /*結束條件建立時間大于4μs*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();
  _Nop();
  SDA=1;      /*發送I2C總線結束信號*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();
}

/*******************************************************************
                 字節數據發送函數               
函數原型: void  SendByte(UCHAR c);
功能:     將數據c發送出去,可以是地址,也可以是數據,發完后等待應答,并對
          此狀態位進行操作.(不應答或非應答都使ack=0)     
           發送數據正常,ack=1; ack=0表示被控器無應答或損壞。
********************************************************************/
void  SendByte(unsigned char  c)
{
unsigned char  BitCnt;

for(BitCnt=0;BitCnt<8;BitCnt++)  /*要傳送的數據長度為8位*/
    {
     if((c<<BitCnt)&0x80)SDA=1;   /*判斷發送位*/
       else  SDA=0;               
     _Nop();
     SCL=1;               /*置時鐘線為高,通知被控器開始接收數據位*/
      _Nop();
      _Nop();             /*保證時鐘高電平周期大于4μs*/
      _Nop();
      _Nop();
      _Nop();         
     SCL=0;
    }
   
    _Nop();
    _Nop();
    SDA=1;                /*8位發送完后釋放數據線,準備接收應答位*/
    _Nop();
    _Nop();   
    SCL=1;
    _Nop();
    _Nop();
    _Nop();
    if(SDA==1)ack=0;     
       else ack=1;        /*判斷是否接收到應答信號*/
    SCL=0;
    _Nop();
    _Nop();
}

/*******************************************************************
                 字節數據接收函數               
函數原型: UCHAR  RcvByte();
功能:        用來接收從器件傳來的數據,并判斷總線錯誤(不發應答信號),
          發完后請用應答函數應答從機。  
********************************************************************/   
unsigned char   RcvByte()
{
  unsigned char  retc;
  unsigned char  BitCnt;
  
  retc=0;
  SDA=1;                       /*置數據線為輸入方式*/
  for(BitCnt=0;BitCnt<8;BitCnt++)
      {
        _Nop();           
        SCL=0;                  /*置時鐘線為低,準備接收數據位*/
        _Nop();
        _Nop();                 /*時鐘低電平周期大于4.7μs*/
        _Nop();
        _Nop();
        _Nop();
        SCL=1;                  /*置時鐘線為高使數據線上數據有效*/
        _Nop();
        _Nop();
        retc=retc<<1;
        if(SDA==1)retc=retc+1;  /*讀數據位,接收的數據位放入retc中 */
        _Nop();
        _Nop();
      }
  SCL=0;   
  _Nop();
  _Nop();
  return(retc);
}

/********************************************************************
                     應答子函數
函數原型:  void Ack_I2c(bit a);
功能:      主控器進行應答信號(可以是應答或非應答信號,由位參數a決定)
********************************************************************/
void Ack_I2c(bit a)
{
  
  if(a==0)SDA=0;              /*在此發出應答或非應答信號 */
  else SDA=1;
  _Nop();
  _Nop();
  _Nop();      
  SCL=1;
  _Nop();
  _Nop();                    /*時鐘低電平周期大于4μs*/
  _Nop();
  _Nop();
  _Nop();  
  SCL=0;                     /*清時鐘線,鉗住I2C總線以便繼續接收*/
  _Nop();
  _Nop();   
}

你參考我這個源碼看看,我這是可以用的
回復

使用道具 舉報

5#
ID:401564 發表于 2020-11-19 08:29 | 只看該作者
樓上有人說是延時太長,這個應該不會的
24C02對延時好像只有最短要求,但對最長并沒有規定,我之前調試的時候是1秒鐘一個時鐘,那都是可以正常讀寫的
個人感覺應該是在下面的這個應答函數里面,你不覺得while循環下面的三個語句應該加一個{}嗎?,你這個應該只查詢了250次,很有可能還沒有寫入完成就退出了等待應答函數了
  • void respons()//yingda
  • {
  •         uchar i;
  •         scl=1;
  •         delay(10);
  •         while((sda==1)&&(i<250))
  •         i++;
  •         scl=0;
  •         delay(10);
  • }

回復

使用道具 舉報

6#
ID:568565 發表于 2020-11-19 08:48 | 只看該作者
如果參考的網上的代碼也不一定就是時序問題,可能就是簡單的引腳定義不一致導致的
回復

使用道具 舉報

7#
ID:213173 發表于 2020-11-19 14:10 | 只看該作者
樓主調試失敗有兩個原因。1.延時函數錯誤,2驗證方式錯誤。其它代碼沒有問題。修改后經仿真驗證無誤:
void delay(uint z)//大致延時長度 T=z*2+5 us
{
        while(--z);
}
void main()
{
        P1=array2[0]; //顯示原來數據
        delay(0xffff);//延長顯示時間
        delay(0xffff);//延長顯示時間
        write_add(0x00,array1[0]);//寫EEPROM
        array2[0]=read_add(0x00);//讀EEPROM并保存
        P1=array2[0]; //顯示保存的數據
        while(1);        
}
回復

使用道具 舉報

8#
ID:378732 發表于 2020-11-19 17:36 | 只看該作者
epson009 發表于 2020-11-19 01:26
你說的無法讀寫的問題可以按以下兩步解決:
1.修改delay(),我感覺你的delay()延時太長了?稍囋
    vo ...

請問這是什么軟件操作的?
回復

使用道具 舉報

9#
ID:845519 發表于 2020-11-20 09:16 | 只看該作者
建議對照I2C時序圖檢查一下程序細節,確;A的I2C通信沒問題;再對照24C02數據手冊查看命令是否正確
回復

使用道具 舉報

10#
ID:170498 發表于 2020-11-20 18:38 | 只看該作者
I2C總線上,接上拉電阻了嗎?不接上拉不行的。
回復

使用道具 舉報

11#
ID:367460 發表于 2020-11-21 16:31 | 只看該作者
剛寫完是不能去讀取的,最好加一段小延時,這個我以前也是這樣
回復

使用道具 舉報

12#
ID:188940 發表于 2020-12-30 13:36 | 只看該作者
epson009 發表于 2020-11-19 01:26
你說的無法讀寫的問題可以按以下兩步解決:
1.修改delay(),我感覺你的delay()延時太長了?稍囋
    vo ...

謝謝  之前忙 沒看帖  現在搞好了  
回復

使用道具 舉報

13#
ID:188940 發表于 2020-12-30 13:37 | 只看該作者
謝謝大家    之前忙 沒看帖  現在搞好了  
回復

使用道具 舉報

14#
ID:743654 發表于 2020-12-30 22:32 | 只看該作者
Coolguyisme 發表于 2020-12-30 13:37
謝謝大家    之前忙 沒看帖  現在搞好了

什么問題,怎么解決的,說一下,后來人好參考。
回復

使用道具 舉報

15#
ID:390416 發表于 2020-12-31 11:40 | 只看該作者
void IIC_Delay()
{
        _nop_();_nop_();_nop_();_nop_();_nop_();
}

void IIC_Init()
{
        P2M0&=0x3f;
        P2M1&=0x3f;
        SDA_GPIO=1;
        SCL_GPIO=1;
}

void IIC_Start()//IIC啟動信號
{
        SDA_GPIO=1;
        SCL_GPIO=1;
        IIC_Delay();
        SDA_GPIO=0;
        IIC_Delay();
        SCL_GPIO=0;
        IIC_Delay();
}

void IIC_Stop()//IIC停止信號
{
        SDA_GPIO=0;
        SCL_GPIO=1;
       

        SDA_GPIO=1;
        IIC_Delay();
}

void IIC_Write_Byte(u8 IIC_Byte)//向總線發送一個字節
{
        u8 i;
        SCL_GPIO=0;
        SDA_GPIO=1;
        for(i=0;i<8;i++)
        {
                SDA_GPIO=(bit)(IIC_Byte&0x80);
                IIC_Byte<<=1;
                IIC_Delay();
                SCL_GPIO=1;
                IIC_Delay();
                SCL_GPIO=0;
                IIC_Delay();
        }
}

u8 IIC_Read_Byte()
{
        u8 i,Value;
        SCL_GPIO=0;
        SDA_GPIO=1;
        for(i=0;i<8;i++)
        {
                Value=(Value<<1)|SDA_GPIO;
                IIC_Delay();
                SCL_GPIO=1;
                IIC_Delay();
                SCL_GPIO=0;
                IIC_Delay();
        }
        return Value;
}

u8 IIC_Read_Ack()//單片機檢測IIC從機發來的應答信號
{
        u8 ack=1,i=0;
        SCL_GPIO=1;
        IIC_Delay();
        while((ack)&&(i<5))
        {
                ack=SDA_GPIO;
                i++;
        }
        SCL_GPIO=0;
        return ack;
}

void IIC_Write_Ack(bit ack)//單片機發送應答給從機
{
        SDA_GPIO=ack;
        IIC_Delay();
        SCL_GPIO=1;
        IIC_Delay();
        SCL_GPIO=0;
        IIC_Delay();
        SDA_GPIO=1;
        IIC_Delay();
}

IIC代碼 用我這個
回復

使用道具 舉報

16#
ID:188940 發表于 2021-1-4 20:10 | 只看該作者
cheney03 發表于 2020-12-30 22:32
什么問題,怎么解決的,說一下,后來人好參考。

我直接重新參考了另外一段程序,之前的那個好像是函數的聲明順序錯了  具體那個有問題  我也忘了額·····
回復

使用道具 舉報

17#
ID:188940 發表于 2021-1-4 20:15 | 只看該作者
我后來直接用了另一段程序,當時心切,就沒有過多的對比··· 現在在搞AS608的程序,感覺指紋的程序也不怎么好搞····· 謝謝 大家的積極回復!
C文件:
#include "delay.h"
#include "reg52.h"
#include "function.h"
#include "24c02.h"
#include "key.h"
#include "control.h"
#include "1602.h"
#include "time.h"
sbit sda=P3^3;
sbit scl=P3^2;
uchar mima2[]={0,0,0,0,0,0,0,0};

void delay1()
{;;}  
       
void AT24c02_init()         //初始化
{
        sda=1;
        scl=1;
        delay1();
}

void start()        //開始信號
{
        sda=1;
delay1();
        scl=1;
        delay1();
        sda=0;
        delay1();
}

void stop()       //停止信號
{
        sda=0;
        delay1();
        scl=1;
        delay1();
        sda=1;
        delay1();
}

void respons()     //應答信號
{
        uchar i;
        scl=1;
        delay1();
        while((sda==1)&&(i<255))i++;
        scl=0;
        delay1();
}

void write_byte(uchar date)    //寫一個字節
{
        uchar i,temp;
        temp=date;
        for(i=0;i<8;i++)
        {
                scl=0;
                delay1();
                temp<<=1;
                sda=CY;
                delay1();
                scl=1;
                delay1();
        }
        scl=0;
        delay1();
        sda=1;
        delay1();
}

uchar read_byte(void)     //讀一個字節
{
        uchar f,e;
        scl=0;
        delay1();
        sda=1;
        delay1();
        for(f=0;f<8;f++)     /*循環8次讀出一個字節數據*/
        {
                scl=1;
                delay1();
                e=(e<<1)|sda;
                scl=0;
                delay1();
        }
        return e;
}

void write_add(uchar address,uchar date)
{                        //指定地址寫數據
        start();                               /*初始信號*/
        write_byte(0xa0);                      /*寫入芯片地址0XA0*/
        respons();                             /*應答信號*/
        write_byte(address);                   /*寫入芯片內部寄存器地址ADDRESS*/
        respons();                             /*應答信號*/
        write_byte(date);                      /*寫入數據*/
        respons();                             /*應答信號*/
        stop();                                /*停止信號*/
}

uchar read_add(uchar address)
{
        uchar date;
        start();                              /*初始信號*/
        write_byte(0xa0);                     /*寫入芯片地址0XA0*/
        respons();                            /*應答信號*/
        write_byte(address);                  /*寫入芯片內部寄存器地址ADDRESS*/
        respons();                            /*應答信號*/
        start();                              /*初始信號*/
        write_byte(0xa1);                     /*初始信號*/
        respons();                            /*寫入芯片地址0XA1(讀)*/
        date=read_byte();                     /*讀出數據*/
        stop();                               /*停止信號*/
        return date;                          /*返回讀出值*/
}


void Ingest_code()                //寫入密碼
{
uchar i=0;
T1_NUM=0;
p=0;
d=0;
TR1=0;
AT24c02_init();
for(i=0;i<8;i++)
{
write_add(i,mima1[i]);
mima2[i]=mima1[i];                         //修改本地密碼
xianshi10();
}
xianshi5();
TR1=1;
}

void Ingest_code1()                  //讀取密碼
{
uchar i=0;
blue();
TR1=0;
T1_NUM=0;
p=0;
d=0;
AT24c02_init();
for(i=0;i<8;i++)
{
mima2[i]=read_add(i);
xianshi10();
}
xianshi5();
TR1=1;
}

/*void Ingest_code2()
{
uchar i=0;
AT24c02_init();
for(i=0;i<8;i++)
{
write_add(i,0);
blue();
xianshi10();
xianshi5();
TR1=0;
T1_NUM=0;
p=0;
d=0;
}
TR1=1;
}
*/
H文件:
#ifndef __24C02_H__
#define __24C02_H__

#define uchar unsigned char

extern void delay1();
extern void AT24c02_init();
extern void start();
extern void stop();
extern void respons();
extern void write_byte(uchar date);
extern uchar read_byte(void);
extern void write_add(uchar address,uchar date);
extern uchar read_add(uchar address);
extern void Ingest_code();
extern void Ingest_code1();

extern uchar mima2[8];

#endif
回復

使用道具 舉報

18#
ID:188940 發表于 2021-1-4 20:18 | 只看該作者
epson009 發表于 2020-11-19 01:26
你說的無法讀寫的問題可以按以下兩步解決:
1.修改delay(),我感覺你的delay()延時太長了。可試試
    vo ...

好像就是這個問題
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产99热| 韩国理论电影在线 | 小早川怜子xxxxaⅴ在线 | 日韩一级不卡 | 91在线精品视频 | 久久精品久久久久久 | 亚洲一区二区三区免费观看 | 人人色视频| 欧美最猛性xxxxx亚洲精品 | 狠狠躁18三区二区一区 | 99免费精品视频 | 97精品超碰一区二区三区 | 99在线免费观看视频 | 亚洲视频免费观看 | 一区二区在线 | 97视频在线免费 | 亚洲欧美网站 | 欧美国产日韩在线 | 九九精品在线 | 免费国产视频在线观看 | 亚洲欧美综合 | av香港经典三级级 在线 | 日日欧美 | 成人影院网站ww555久久精品 | 免费观看av | 91就要激情| 欧洲精品视频一区 | 亚洲精品亚洲人成人网 | 成人国产一区二区三区精品麻豆 | 在线免费小视频 | 欧美一区二区免费电影 | 欧美日韩成人在线 | 一区二区三区福利视频 | 欧美三级三级三级爽爽爽 | 午夜精品久久久 | 日韩av一区在线观看 | 久久草视频| 一区二区三区欧美 | 国产电影一区二区 | 久久99精品久久久 | 在线电影日韩 |