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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

AT24C1024全容量讀寫NXPLPC11XX源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:29943 發表于 2018-1-2 12:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
AT24C1024全容量讀寫程序,只要讀寫起始地址和讀寫長度,程序自動跨頁,絕對原創、絕對好用,含測試程序。

單片機源程序如下:
  1. #include "nxplpc11xx.h"
  2. #include "i2c.h"
  3. #include "AT24C1024.h"

  4. /************************************************************/
  5. /* 函數功能:從AT24C1024中讀數據                            */
  6. /* 入口參數StartAddr:起始地址,經測試跨頁時地址會自動加1。*/
  7. /*           *pData:讀入的數據放到這個數組中                */
  8. /*           nBytes:要寫的數據字節個數                     */
  9. /************************************************************/
  10. void AT24C1024_Read(uint32 StartAddr, uint16 nBytes, uint8 *pData)
  11. {                                
  12.     uint8 StartAddr_L, StartAddr_H, P0;
  13.     StartAddr_L = StartAddr & 0x0000ff;
  14.           StartAddr_H = (StartAddr >> 8) & 0x0ff;
  15.           P0 = (StartAddr / 0x10000) << 1;
  16.           I2C_Send_Ctrl(AT24C1024_Addr | P0);
  17.           I2C_Send_Byte(StartAddr_H);        
  18.           I2C_Send_Byte(StartAddr_L);        
  19.           I2C_Stop();        
  20.     I2C_Send_Ctrl((AT24C1024_Addr | P0) + 1);
  21.            while(nBytes != 1)
  22.           {
  23.     *pData++=I2C_Recieve_Byte(1);                     // 應答位為ACK,不釋放總線,繼續讀
  24.                 nBytes--;
  25.           }
  26.                 *pData++=I2C_Recieve_Byte(0);              // 應答位為NACK,停止讀,釋放總線
  27.                 I2C_Stop();                                // 產生一個停止條件  
  28.                 delay_us(10);                              // 這個延時是任意地址讀兩段數據時最小時間間隔,保證停止位后正常產生下一個開始位。
  29. }  
  30. /*******************************************************************/
  31. /* 函數功能:給AT24C1024寫數據                                     */
  32. /* 入口參數StartAddr:起始地址,跨頁寫時,需要重新寫入地址數據。  */
  33. /*           *pData:把這個數組中的數據寫入                         */
  34. /*           nBytes:要寫的數據字節個數                            */
  35. /*******************************************************************/
  36. void AT24C1024_Write(uint32 StartAddr, uint16 nBytes, uint8 *pData)
  37. {
  38.     uint8 StartAddr_L, StartAddr_H, P0;
  39.           while(nBytes != 0)                      // 所有數據發送完畢,退出循環
  40.           {
  41.           StartAddr_L = StartAddr & 0x0000ff;     // 計算低位地址
  42.           StartAddr_H = (StartAddr >> 8) & 0x0ff; // 計算高位地址
  43.           P0 = (StartAddr / 0x10000) << 1;        // 計算第17位,即P0
  44.     I2C_Send_Ctrl(AT24C1024_Addr | P0);     // 帶P0發送器件地址
  45.           I2C_Send_Byte(StartAddr_H);                    // 發送高位地址
  46.           I2C_Send_Byte(StartAddr_L);                    // 發送低位地址
  47.           while(nBytes != 0)                      // 數據未發送完,循環
  48.           {
  49.           I2C_Send_Byte(*pData);         
  50.                 pData++;
  51.     nBytes--;               
  52.                 StartAddr++;
  53.                 if((StartAddr & 0x00ff) == 0)           // 跨頁,終止當前頁循環,重新寫入新地址
  54.                 break;
  55.           }               
  56.           I2C_Stop();                             // 產生一個停止條件
  57.                 delay_ms(3);                            // 這個延時為兩次讀寫最小間隔時間,不要刪除,連續大量寫數據時有用。
  58.   }
  59. }
復制代碼
  1. /************************************************/
  2. /* AT24C1024全容量讀寫程序                      */
  3. /* CPU型號:LPC1114FBD/302                      */
  4. /************************************************/
  5. #include "nxplpc11xx.h"
  6. #include "i2c.h"
  7. #include "AT24C1024.h"
  8. int main()
  9. {
  10. union Initial_Value{uint8 Val_Hex[400];float Val_Float[100];}Init;    //定義一個浮點數組,用于寫入和讀出,一個浮點數用4個字節
  11.       uint16 i;      
  12.       float j;
  13.         SysCLK_config();         // 時鐘配置
  14.   I2C_Init(0);             // 初始化I2C 快速模式
  15.   delay_ms(10);
  16.   for(i=0; i<100; i++)     // 初始化浮點數組分別為0——99。
  17.   {
  18.   j = i;
  19.   Init.Val_Float[i] = j;
  20.         }
  21.         AT24C1024_Write(0xff80, 400, Init.Val_Hex);   // 寫入
  22.         delay_ms (3);
  23.         AT24C1024_Read(0xff80, 400, Init.Val_Hex);        
  24.   while(1)
  25.         {};
  26. }

復制代碼

所有資料51hei提供下載:
AT24C1024.zip (112.69 KB, 下載次數: 105)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:366539 發表于 2019-6-21 20:30 | 只看該作者
謝謝
回復

使用道具 舉報

板凳
ID:97506 發表于 2019-10-8 22:49 | 只看該作者
謝謝分享辛苦了
回復

使用道具 舉報

地板
ID:613739 發表于 2020-4-5 11:36 | 只看該作者
謝謝分享,辛苦了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 岛国二区| a免费视频 | 日韩欧美亚洲一区 | 欧美456 | 九九热精品视频 | 精品欧美一区二区三区久久久 | 日韩欧美电影在线 | 免费视频一区二区三区在线观看 | 中文在线一区 | 久久99视频免费观看 | 91麻豆精品一区二区三区 | 国产91丝袜在线播放 | 亚洲一区二区在线视频 | 中文字幕一区二区三区在线观看 | 99久久婷婷国产精品综合 | 精品久久久久久亚洲精品 | 欧美成人在线影院 | 亚洲一区二区视频 | 9久久精品| 四虎伊人| 国产激情在线 | 一区二区三区免费 | 天天爽综合网 | 欧美日本一区 | 99精品久久久国产一区二区三 | 欧美1区2区 | 日日干天天操 | 亚洲精品在线观看视频 | 久久人 | 伊人狠狠干 | 日韩一二区 | avtt国产 | 国产欧美视频一区二区三区 | 免费观看一级毛片 | 在线观看视频91 | 国产欧美日韩一区二区三区在线 | 国产一区中文字幕 | 91精品国产一区二区三区香蕉 | 91在线精品秘密一区二区 | 亚洲精品一区二区久 | 欧美a在线观看 |