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

標(biāo)題: 51單片機利用SPI讀寫25xx320 EEPROM實例程序 [打印本頁]

作者: haiqingxiao    時間: 2018-7-11 10:26
標(biāo)題: 51單片機利用SPI讀寫25xx320 EEPROM實例程序
51單片機利用SPI讀寫25xx320實例


單片機源碼:
  1. /********51單片機以SPI總線讀寫MicroChip的25xx320EEPROM程序,2013年11月25日****************/
  2. # include <reg51.h>    //包含單片機寄存器的頭文件
  3. # include <intrins.h>   //包含_nop_()函數(shù)定義的頭文件
  4. sbit CS=P1^3;
  5. sbit SO=P1^2;
  6. sbit SI=P1^1;
  7. sbit SCK=P1^0;
  8. //SCK=0;
  9. //CS=1;
  10. /**************延時n微秒***************/
  11. void delaynus(unsigned char n,unsigned char i)
  12. {
  13.         for(i=0;i<n;i++);
  14. }
  15. /**************寫允許函數(shù)**************/
  16. void wren(unsigned char enable,unsigned char i)
  17. {
  18.         CS=0;
  19.         enable=0x06;
  20.         SCK=0;
  21.         delaynus(1,2);
  22.         for(i=0;i<8;i++)
  23.         {
  24.         SI=enable&0x80;
  25.         delaynus(1,2);
  26.         SCK=1;
  27.         enable<<=1;
  28.         delaynus(1,2);
  29.         SCK=0;
  30.         }
  31.         CS=1;
  32.         delaynus(1,5);
  33. }
  34. /****************寫禁止函數(shù)***************/
  35. /**void wrds(unsigned char dis,unsigned char i)
  36. {
  37.         CS=0;
  38.         dis=0x04;
  39.         SCK=0;
  40.         delaynus(1,2);
  41.         for(i=0;i<8;i++)
  42.         {
  43.         SI=dis&0x80;
  44.         delaynus(1,2);
  45.         SCK=1;
  46.         dis<<=1;
  47.         delaynus(1,2);
  48.         SCK=0;
  49.         }
  50.         CS=1;
  51. }
  52. /****************寫指令函數(shù)***************/
  53. void wrin(unsigned char write,unsigned char i)
  54. {
  55.         CS=0;
  56.         write=0x02;
  57.         SCK=0;
  58.         delaynus(1,2);
  59.         for(i=0;i<8;i++)
  60.         {
  61.         SI=write&0x80;
  62.         delaynus(1,2);
  63.         SCK=1;
  64.         write<<=1;
  65.         delaynus(1,2);
  66.         SCK=0;
  67.         }
  68. }
  69. /****************寫地址函數(shù)***************/
  70. void wrad(unsigned char adh,unsigned char adl,unsigned char i)
  71. {
  72.         CS=0;
  73.         SCK=0;
  74.         delaynus(1,2);
  75.         for(i=0;i<8;i++)
  76.         {
  77.         SI=adh&0x80;
  78.         delaynus(1,2);
  79.         SCK=1;
  80.         adh<<=1;
  81.         delaynus(1,2);
  82.         SCK=0;
  83.         }
  84.         for(i=0;i<8;i++)
  85.         {
  86.         SI=adl&0x80;
  87.         delaynus(1,2);
  88.         SCK=1;
  89.         adl<<=1;
  90.         delaynus(1,2);
  91.         SCK=0;
  92.         }       
  93. }
  94. /****************寫數(shù)據(jù)函數(shù)***************/
  95. void wrda(unsigned char i,unsigned char dataa)
  96. {
  97.         CS=0;
  98.         SCK=0;
  99.         delaynus(1,2);
  100.         for(i=0;i<8;i++)
  101.         {
  102.         SI=(dataa&0x80);
  103.         delaynus(1,2);
  104.         SCK=1;
  105.         dataa=(dataa<<1);
  106.         delaynus(1,2);
  107.         SCK=0;
  108.         }
  109. }
  110. /****************讀命令函數(shù)***************/
  111. void rdin(unsigned char read,unsigned char i)
  112. {
  113.         CS=0;
  114.         SCK=0;
  115.         delaynus(1,2);
  116.         read=0x03;
  117.         for(i=0;i<8;i++)
  118.         {
  119.         SI=read&0x80;
  120.         delaynus(1,2);
  121.         SCK=1;
  122.         read=(read<<=1);
  123.         delaynus(1,2);
  124.         SCK=0;
  125.         }
  126. }
  127. /****************讀數(shù)據(jù)函數(shù)***************/
  128. unsigned char rdda()
  129. {
  130.         unsigned char i;
  131.         unsigned char dat=0;
  132.         delaynus(1,2);
  133.         SCK=0;
  134.         CS=0;
  135.         for(i=0;i<8;i++)
  136.         {
  137.         SCK=1;
  138.         dat<<=1;
  139.         if (SO==1)
  140.         dat|=0x01;
  141.         delaynus(1,2);
  142.         SCK=0;
  143.         delaynus(1,2);
  144.         }
  145.         CS=1;
  146.         return dat;
  147. }
  148. main()
  149. {
  150.         CS=0;
  151.         wren(0x06,0x00);
  152.         wrin(0x02,0);
  153.         wrad(0x00,0x00,0);
  154.         wrda(0,0x80);
  155.         CS=1;
  156.         delaynus(1,20);
  157.         CS=0;
  158.         rdin(0x03,0);
  159.         wrad(0x00,0x00,0);
  160.         delaynus(1,2);
  161.         ACC=rdda();
  162.         P3=ACC;
  163.         CS=1;
  164. }
復(fù)制代碼

完整的Word格式文檔51黑下載地址:
51單片機利用SPI讀寫25xx320實例.rar (8.36 KB, 下載次數(shù): 73)



作者: chenzj5566    時間: 2019-7-28 01:01
最近剛好用到SPI,參考下,謝謝。
作者: 還有誰?    時間: 2020-3-21 16:49
大家不要下,這個不行的,25xx320在Proteus中就沒有,下到也不能仿真
作者: 老董    時間: 2021-11-4 12:57
寫地址函數(shù)只有兩個字節(jié)最多能到512K 要是遇到大于512K 的 怎么辦呢?是在寫地址函數(shù)里面再加一個字節(jié)碼?
作者: wlhuang    時間: 2022-4-14 21:27
還有誰? 發(fā)表于 2020-3-21 16:49
大家不要下,這個不行的,25xx320在Proteus中就沒有,下到也不能仿真

25LC320
32K
SPI
有這個芯片




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人小视频在线观看 | 亚洲 欧美 另类 综合 偷拍 | 欧美日韩在线视频一区 | 色偷偷888欧美精品久久久 | 91精品久久久久久久 | 天天插天天搞 | 色综合视频 | 在线国产99 | 国产中文区二幕区2012 | 亚洲午夜精品 | 欧美伊人久久久久久久久影院 | 自拍视频在线观看 | 日日操av| 日韩欧美一区二区三区 | 精品国产一区二区三区性色 | 精品国产久 | 成人久久 | 精品久久久久久久久久久久久久久久久 | 国产精品成人一区二区三区 | 二区在线视频 | 91精品久久 | www国产成人免费观看视频,深夜成人网 | 精品久久久久一区二区国产 | 亚洲网站在线观看 | 国产97碰免费视频 | 久久一区| 日本视频一区二区三区 | 殴美一级片| 亚洲一区视频在线 | 久久精品二区 | 国产在线a | 在线观看日韩 | 一区二区在线 | 91免费高清 | 久久综合成人精品亚洲另类欧美 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 久久精品色欧美aⅴ一区二区 | 国产免费福利 | 国产成人在线视频播放 | 国产视频久 | 国产在线观看一区二区 |