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

標題: 中穎單片機SH88F516讀寫SPI總線EEPROM 93C56的源程序 [打印本頁]

作者: weihu    時間: 2017-11-18 04:57
標題: 中穎單片機SH88F516讀寫SPI總線EEPROM 93C56的源程序
代碼工程與芯片pdf資料:



實現本功能的中穎單片機源碼如下:
  1. /*************************************************************************************************
  2. 說明;SPI使用EEPROM存儲芯片93C56A,256X8bit=2K的存儲空間.在使用SPI通訊時通常使用端口進行仿真,為了符合
  3. 使用需要,本程序同樣使用了端口進行仿真,當然也可以直接使用88F516自帶的SPI總線進行通訊.
  4. 串口1用于觀測93C56A的讀寫數據正確與否?寫入成功接收到數據R,寫入失敗接收到數據E,讀取成功接收到數據r,
  5. 讀取失敗接收到數據e.
  6. 要求:打開撥碼開關J6的5,6,7,8,打開撥碼開關J4
  7. *************************************************************************************************/

  8. #include <sh88f516.h>
  9. #include <INTRINS.H>        //for use 51 instruction

  10. sbit cs_93=P1^4;
  11. sbit di_93=P1^5;
  12. sbit do_93=P1^6;
  13. sbit sk_93=P1^7;

  14. void UART1SendChar(unsigned char value)
  15. {
  16.         IEN1 &= 0xFB;               //ES1=0;               
  17.         SBUF1=value;                            //寫SBUF1,激活發送
  18.         while(TI1==0);                          //等待轉換結束
  19.         TI1=0;                                                //清除發送標志位
  20.         IEN1 = 0x04;                //ES1=1;               
  21. }


  22. /*-----------------------------------------------------
  23. SPI93cXX系列函數調用
  24. void high56(void)--------發送1
  25. void low56(void) --------發送0
  26. void wd56(unsigned char dd)        --------寫8位數據,輸入參數address or data
  27. unsigned char rd56(void) --------讀8位數據,返回值data
  28. -----------------------------------------------------*/
  29. void high56(void)
  30. {
  31.         di_93=1;
  32.         sk_93=1; _nop_();
  33.         sk_93=0; _nop_();
  34. }
  35. void low56(void)
  36. {
  37.         di_93=0;
  38.         sk_93=1;_nop_();
  39.         sk_93=0;_nop_();
  40. }
  41. void wd56(unsigned char dd)
  42. {
  43.         unsigned char i;
  44.         for (i=0;i<8;i++)
  45.         {
  46.                 if (dd>=0x80) high56();
  47.                 else low56();
  48.                 dd=dd<<1;
  49.         }
  50. }
  51. unsigned char rd56(void)
  52. {
  53.         unsigned char i,dd=0;
  54.         do_93=1;
  55.         for (i=0;i<8;i++)
  56.         {
  57.                 dd<<=1;
  58.                 sk_93=1;_nop_();
  59.                 sk_93=0;_nop_();
  60.                 if (do_93) dd|=1;
  61.         }
  62.         return(dd);
  63. }

  64. /*-----------------------------------------------------
  65. SPI93c56系列函數調用
  66. void ewen56(void)-----------寫使能
  67. unsigned char read93c56_word(unsigned char address) ------------SPI讀函數,輸入參數為address,返回dat
  68. bit write93c56_word(unsigned char address,unsigned char dat)----SPI寫函數,輸入參數為address,dat,寫入成功返回0,失敗返回1
  69. -----------------------------------------------------*/
  70. void ewen56(void)
  71. {
  72.         _nop_();
  73.         cs_93=1;
  74.         high56();
  75.         low56();
  76.         low56();
  77.         //low56();
  78.         high56();//add
  79.         wd56(0xc0);
  80.         //wd56(0x00);
  81.         cs_93=0;
  82. }

  83. unsigned char read93c56_word(unsigned char address)
  84. {
  85.         unsigned char dat;
  86.         cs_93=sk_93=0;
  87.         cs_93=1;

  88.         high56();                        //1 --start
  89.         high56();                        //1       
  90.         low56();                        //0        --10 read
  91.         low56();                        //X        --A8,
  92.         wd56(address);                //A7--A0
  93.         dat=rd56();                        //data

  94.         cs_93=0;
  95.         return(dat);
  96. }

  97. bit write93c56_word(unsigned char address,unsigned char dat)
  98. {
  99.         unsigned char e;
  100.         unsigned char temp=address;
  101.         e=0;
  102.         while (e<3)
  103.         {
  104.                 cs_93=sk_93=0;
  105.                 cs_93=1;
  106.                 ewen56();
  107.                 _nop_();
  108.                 cs_93=1;
  109.                 _nop_();

  110.                 high56();                  //1 --start
  111.                 low56();                  //0       
  112.                 high56();                  //1        --01 write
  113.                 low56();                  //X        --A8,
  114.                 wd56(address);          //A7--A0
  115.                 wd56(dat);                  //data

  116.                 cs_93=0;
  117.                 _nop_();
  118.                 cs_93=1;

  119.                 do_93=1;
  120.                 while (1)
  121.                 {
  122.                         if (do_93==1) break;
  123.                 }
  124.                 cs_93=0;
  125.                 if (read93c56_word(temp)==dat)
  126.                 {
  127.                         return(0);
  128.                 }
  129.                 e++;
  130.         }
  131.         return(1);
  132. }



  133. main()
  134. {
  135.     unsigned char i;

  136.         CLKCON = 0x60;                   //f=osc/12

  137.         SCON1 = 0x50;                    //工作方式選擇,此處為工作方式1
  138.         SBRT1 = 0xFF;                   //波特率設置.工作在方式1時,BAUDRATE=(1/16)*Fsys/(32768-SBRT[1:0])   Fsys=16M
  139.         SBRT0 = 0xF7;                   //Fsys=16M/12

  140.         IEN1 = 0x04;                       
  141.         EA = 1;  

  142.         for(i=0;i<200;i++)
  143.         {
  144. ……………………

  145. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼



壓縮包里面包含有中穎單片機sh88f516常用功能的源碼,中文注釋都很詳細
下載地址:http://m.zg4o1577.cn/bbs/dpj-98300-1.html




作者: lcclzy    時間: 2018-7-26 09:30
已學習,再接再厲!加油




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产理论在线 | 久久靖品 | 一区二区高清 | 在线一区二区三区四区 | 香蕉成人网 | 日本一级一片免费视频 | 中文字幕高清 | 精品视频一区二区 | 一级黄色片在线观看 | 四虎黄色网址 | 亚洲精品一区二三区不卡 | 好色影院 | 蜜桃视频一区二区三区 | 狠狠艹狠狠干 | 一级大片免费看 | 国产免费黄色片 | 亚洲免费一区二区 | av不卡在线| 久久国产精品视频 | 亚洲精品国产精品国自产在线 | 91久久久久久久久久 | 欧美一级片在线 | 午夜在线 | 欧美黄色一级视频 | 少妇特黄a一区二区三区 | 久久久久久久国产精品 | 一区二区三区四区视频在线观看 | 亚洲精品观看 | 国产一区二区观看 | 成人在线精品 | 天天摸夜夜操 | 亚洲久久在线 | 成人精品在线视频 | 亚洲黄色网址 | 9999精品视频 | 欧美成人小视频 | 日韩一区二区三区在线播放 | 亚洲精品免费视频 | 免费三片在线观看网站v888 | 亚洲午夜视频在线观看 | 欧美日韩一区在线观看 |