wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標題: 松翰SN8F5703單片機IIc例程 [打印本頁]

作者: hexinquan    時間: 2020-12-8 11:18
標題: 松翰SN8F5703單片機IIc例程
松翰單片機5703例程——IIC
  1. //-----------------------------------------------------------------------------
  2. //  FILE:   Master_I2C.c
  3. //-----------------------------------------------------------------------------
  4. //  Copyright 2014 SONiX Technology Corp. All rights reserved.
  5. //
  6. //  AUTHOR:     SONiX
  7. //  DATE:       2014/11/11
  8. //
  9. //  The program is an example of Master I2C to implement it.
  10. //   
  11. //  I2C decription:
  12. //      User need to external pull-high at SDA and SCL pin
  13. //
  14. //
  15. //  The system clock frequency is IHRC 32MHz
  16. //
  17. //  Device:     SN8F5708
  18. //  Tool chain: KEIL C51 V9.50a
  19. //
  20. //-----------------------------------------------------------------------------
  21. // Includes
  22. //-----------------------------------------------------------------------------
  23. #include <string.h>
  24. #include <SN8F5703.h>
  25. #include "GenericTypeDefs.h"
  26. //-----------------------------------------------------------------------------
  27. // Global Constants
  28. //-----------------------------------------------------------------------------
  29. #define MAXDATALEN  5
  30. //-----------------------------------------------------------------------------
  31. // Global Variables
  32. //-----------------------------------------------------------------------------
  33. UINT8 u8I2CFlag = 0;
  34. UINT8 u8I2CData[MAXDATALEN];
  35. UINT8 u8I2CAddr = 0;
  36. UINT8 u8I2CLen = 0;
  37. UINT8 u8I2CCnt = 0;
  38. //-----------------------------------------------------------------------------
  39. // Function Prototypes
  40. //-----------------------------------------------------------------------------
  41. void I2C_Init(void);
  42. UINT8 I2C_Master_Write_One_Byte(UINT8 u8Addr, UINT8 u8data);
  43. UINT8 I2C_Master_Write_N_Byte(UINT8 u8Addr, UINT8 *u8data, UINT8 u8size);
  44. UINT8 I2C_Master_Read_N_Byte(UINT8 u8Addr, UINT8 *u8data, UINT8 u8size);
  45. //-----------------------------------------------------------------------------
  46. // Main loop
  47. //-----------------------------------------------------------------------------
  48. void main(void)
  49. {
  50.     UINT8 u8TxData[MAXDATALEN] = {0xAA,0xBB,0xCC,0xDD,0xEE};                                                                                             // for test
  51.     UINT8 u8RxData[] = {0};
  52.     UINT8 u8SlaveAddr = 0x2C;                                                   // set addr

  53.                 CLKSEL = 0x06;                                                                                                                                                        // Fcpu = 32M/2 = 16M
  54.                 CLKCMD = 0X69;
  55.                 CKCON = 0X10;       
  56.                
  57.     WDTR = 0x5A;                                                                                                                            // clear watchdog if watchdog enable
  58.                
  59.                 P0 = 0;
  60.                 P0M = 0;
  61.                 P0UR = 0xFF;
  62.        
  63.                 P1 = 0;
  64.                 P1M = 0;
  65.                 P1UR = 0xFF;
  66.        
  67.                 P2 = 0;
  68.                 P2M = 0;
  69.                 P2UR = 0xFF;
  70.        
  71.                                        
  72.                 I2C_Init();   

  73.     // Write one data to slave
  74.                 I2C_Master_Write_One_Byte(u8SlaveAddr, u8TxData[0]);

  75.     // Write multi data to slave
  76.                 I2C_Master_Write_N_Byte(u8SlaveAddr, u8TxData, sizeof(u8TxData));

  77.                 // read 1 data form slave
  78.                 I2C_Master_Read_N_Byte(u8SlaveAddr, u8RxData, 1);
  79.                
  80.     // read multi data form slave
  81.                 I2C_Master_Read_N_Byte(u8SlaveAddr, u8RxData, sizeof(u8RxData));
  82.                
  83.     while (1)
  84.                 {
  85.                         WDTR = 0x5A;                                                                                                                        // clear watchdog if watchdog enable
  86.     }
  87. }
  88. //-----------------------------------------------------------------------------
  89. //  Function:   void I2C_Init(void)
  90. //  Description:
  91. //          SCL and SDA need to external pull high
  92. //-----------------------------------------------------------------------------
  93. void I2C_Init(void)
  94. {
  95.                 I2CCON = 0x43;                                                                                                                         // I2C enable (ENS1),Fclk = Fcpu/160 = 100K

  96.                 EI2C = 1;                                                                                                                       // I2C interrupt enable
  97.                 EAL = 1;                                                                                                                        // Interrupt enable
  98. }
  99. //-----------------------------------------------------------------------------
  100. //  Function:   UINT8 I2C_Master_Write_One_Byte(UINT8 u8Addr, UINT8 u8Data)
  101. //  Description:
  102. //
  103. //-----------------------------------------------------------------------------
  104. UINT8 I2C_Master_Write_One_Byte(UINT8 u8Addr, UINT8 u8Data)
  105. {
  106.     if (!u8I2CFlag) {
  107.         u8I2CFlag = 1;                                                                                              // get Use Right            
  108.         u8I2CLen = 1;                                                                                               // set length
  109.         u8I2CCnt = 0;                                                                                               // clear tx count
  110.         u8I2CData[0] = u8Data;
  111.         u8I2CAddr = u8Addr & 0xFE;                                                                                  // write mode               
  112.         I2CCON |= 0x20;                                                                                             // START (STA) = 1

  113.         while(u8I2CFlag);                                                                                           // wait Trasmit end

  114.         return TRUE;
  115.     }
  116.     else
  117.         return FALSE;
  118. }

  119. //-----------------------------------------------------------------------------
  120. //  Function:   UINT8 I2C_Master_Write_N_Byte(UINT8 u8Addr, UINT8 *u8data, UINT8 u8size)
  121. //  Description:
  122. //
  123. //-----------------------------------------------------------------------------
  124. UINT8 I2C_Master_Write_N_Byte(UINT8 u8Addr, UINT8 *u8data, UINT8 u8size)
  125. {
  126.     if (u8size > MAXDATALEN)   
  127.         return FALSE;                                                                                               // over buf size
  128.    
  129.     if (u8size == 0)   
  130.         return FALSE;                                                                                               // error size
  131.    
  132.     if (!u8I2CFlag) {
  133.         u8I2CFlag = 1;                                                                                      // get Use Right
  134.         u8I2CLen = u8size;                                                                                  // set length
  135.         u8I2CCnt = 0;                                                                                       // clear tx count
  136.         u8I2CAddr = u8Addr & 0xFE;                                                                          // write mode            
  137.         memcpy(u8I2CData, u8data, u8size);
  138.         I2CCON |= 0x20;                                                                                     // START (STA) = 1

  139.         while(u8I2CFlag);                                                                                   // wait Trasmit end

  140.         return TRUE;
  141.     }
  142.     else
  143.         return FALSE;
  144. }

  145. //-----------------------------------------------------------------------------
  146. //  Function:   UINT8 I2C_Master_Read_N_Byte(UINT8 u8Addr, UINT8 *u8data, UINT8 u8size)
  147. //  Description:
  148. //
  149. //-----------------------------------------------------------------------------
  150. UINT8 I2C_Master_Read_N_Byte(UINT8 u8Addr, UINT8 *u8data, UINT8 u8size)
  151. {
  152.     if (u8size > MAXDATALEN)   
  153.         return FALSE;                                                                                       // over buf size
  154.     if (u8size == 0)   
  155.         return FALSE;                                                                                       // error size
  156.     if (!u8I2CFlag) {
  157.         u8I2CFlag = 1;                                                                                      // get Use Right
  158.         u8I2CLen = u8size;                                                                                  // set length
  159.         u8I2CCnt = 0;
  160.         u8I2CAddr = u8Addr | 0x01;                                                                          // read mode
  161.         I2CCON |= 0x20;                                                                                     // START (STA) = 1
  162.    
  163.         while(u8I2CFlag);                                                                                   // wait recevier end
  164.    
  165.         memcpy(u8data, u8I2CData, u8size);
  166.    
  167.         return TRUE;
  168.     }
  169.     else
  170.         return FALSE;
  171. }
  172. //-----------------------------------------------------------------------------
  173. //  Function:   I2C interrupt
  174. //  Description:      
  175. //
  176. //-----------------------------------------------------------------------------
  177. void I2C_ISR(void) interrupt ISRI2c                                                                    // Vector @  0x43
  178. {
  179.     switch (I2CSTA)
  180.     {
  181.         // tx mode
  182.         case 0x08:
  183.             I2CCON &= 0xDF;                                                                     // START (STA) = 0
  184.             I2CDAT = u8I2CAddr;                                                                 // Tx/Rx addr
  185.             break;
  186.         case 0x18:                                                                              // write first byte
  187.             I2CDAT = u8I2CData[u8I2CCnt++];
  188.             u8I2CLen--;
  189.             break;
  190.         case 0x28:                                                                              // write n byte
  191.             if (u8I2CLen == 0) {                                                                // chk length if empty
  192.                 I2CCON |= 0x10;                                                                 // STOP (STO)
  193.                 u8I2CFlag = 0;
  194.                 u8I2CCnt = 0;
  195.             }
  196.             else {
  197.                 I2CDAT = u8I2CData[u8I2CCnt++];
  198.                 u8I2CLen--;
  199.             }
  200.             break;
  201.             
  202.         //    rx mode   
  203.         case 0x40:                                                                              // get slave addr
  204.             if(u8I2CLen > 1)        I2CCON |= 0x04;         // AA = 1
  205.                                                 else        I2CCON &= 0xFB;  
  206.             break;
  207.         case 0x50:                                                                              // read n byte
  208.             u8I2CData[u8I2CCnt++] = I2CDAT;
  209.             if (u8I2CCnt == (u8I2CLen-1)) {
  210.                 I2CCON &= 0xFB;                                                                 // AA = 0
  211.             }
  212.             else {               
  213.                 I2CCON |= 0x04;                                                                        // AA = 1
  214.             }
  215.             break;
  216.         case 0x58:                                                                              // read last byte & stop
  217.             u8I2CData[u8I2CCnt] = I2CDAT;
  218.             I2CCON |= 0x10;                                                                     // STOP (STO)
  219.             u8I2CFlag = 0;
  220.             break;
  221.         default:
  222.             I2CCON |= 0x10;                                                                     // STOP (STO)
  223.             u8I2CFlag = 0;
  224.     }
  225.                
  226.     I2CCON &= 0xF7;                                                                             // Clear I2C flag (SI)        
  227. }
復制代碼


5703_I2C_20161104.rar

115.79 KB, 下載次數: 10, 下載積分: 黑幣 -5






歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
国产99久久久精品| 亚洲精品91美女久久久久久久| 成人羞羞视频播放网站| 国产在线看片| 全免费一级毛片免费看| 中国女人真人一级毛片| 午夜视频在线观看国产| 少妇久久久久久被弄到高潮| 国产精品日日做人人爱| 综合av色偷偷网| 久久影视中文字幕| 日韩**一区毛片| 成人看片网页| 在线黄色.com| 一个人看的www视频免费观看 | 99伊人久久| 欧美大尺度在线观看| 日韩欧美视频专区| www.国产精品| av观看在线| 又黄又爽在线观看| 狠狠擦狠狠操| 麻豆国产传媒av福利| 亚洲黄页视频免费观看| 韩国三级中文字幕hd久久精品| 欧美第十八页| 97青娱国产盛宴精品视频| 国模私拍一区二区国模曼安| 国产香蕉在线| 全部孕妇毛片丰满孕妇孕| 激情网站在线观看| 免费看的黄色录像| 风韵丰满熟妇啪啪区老熟熟女| 丰满少妇久久久| 伊人久久大香线蕉精品| 国产亚洲二区| 成人免费福利在线| 4388成人网| 九九九久久久久久| x99av成人免费| 国产一区二区三区久久精品 | 亚洲日本精品国产第一区| 国产二区不卡| 96国产粉嫩美女| 浅井舞香一区二区| 91国语精品自产拍在线观看性色| 久久人人爽人人爽人人片亚洲 | igao视频网在线视频| eeuss影影院www在线播放| 国内精品久久久久久影院8f| 男人天堂电影网| 香蕉视频黄色片| 丰满人妻妇伦又伦精品国产| 91好色先生tv| 神马久久久久久久| 久久中文字幕在线观看| 小泽玛利亚一区二区免费| 91网站免费视频| 波多野结衣一二三四区| 亚洲av熟女国产一区二区性色| 一区二区三区免费在线观看视频| 91精品啪在线观看国产| fc2成人免费视频| 88av在线播放| 国产精品揄拍100视频| 日本japanese极品少妇| 特级西西人体wwwww| 亚洲AV无码片久久精品| 一区二区黄色片| 免费看裸体网站| 99热99这里只有精品| 欧美视频www| 国产一级二级三级视频| 欧美激情黑白配| 国产女主播喷水视频在线观看 | 五月婷婷欧美视频| 天天色天天操综合| 色婷婷亚洲一区二区三区| 日韩精品福利| 国产卡一卡2卡三卡免费视频| 性欧美69式xxxxx| 污污视频免费看| www视频在线播放| 日韩欧美亚洲一区| 成人福利在线| 岛国片av在线| 精品美女一区| www.国产精品.com| 哥也色在线视频| h片在线观看视频免费免费| 欧美电影免费观看高清完整| 欧美天堂在线| 亚洲色图丝袜| 黄页网站一区| 国产综合色在线视频区| 久久久精品黄色| 亚洲大片免费看| 51精品国自产在线| 国产午夜精品一区二区三区| 欧美激情一级精品国产| 国产在线观看不卡| 久久91亚洲精品中文字幕奶水| 欧美国产日韩一区| 国产美女精品视频| 欧美日韩精品免费观看视一区二区 | 久香视频在线观看| 青青草视频在线免费直播| 日本精品网站| 国产一区二区三区四区五区| 亚洲经典在线看| 国产aⅴ综合色| 亚洲蜜臀av乱码久久精品蜜桃| 粉嫩av一区二区三区免费野| 日韩精品中文字幕在线不卡尤物| 在线观看午夜av| 日本欧美在线观看| 国产视频一区二区三区在线播放 | 久久91在线| 国产精品国产一区| 日本午夜一本久久久综合| 久久久精品免费观看| 欧美性猛交xxxx久久久| 日韩精品福利在线| 国产精品jizz在线观看麻豆| 欧美一区免费视频| 成人日日夜夜| 91在线国产福利| 久草电影在线| av在线免费观看网| 久久91视频| 偷拍欧美精品| 成人污视频在线观看| 亚洲自拍偷拍欧美| 日韩电影中文字幕| 国产精品99导航| 欧美性受黑人性爽| 中文字幕人妻一区| 好看的av在线| 国产极品视频| 中文字幕av高清| 狠狠躁天天躁日日躁欧美| 欧美亚洲另类色图| 日韩高清不卡在线| 久久久美女艺术照精彩视频福利播放| 亚洲高清免费一级二级三级| 日韩精品福利网站| 国产精品www色诱视频| 一区二区三区偷拍| 四季av综合网站| 中文字幕在线播出| www.黄com| 波多野在线观看| 婷婷亚洲五月| 国产欧美一区二区精品性色| eeuss在线观看| 日韩欧美亚洲| 在线日本欧美| 午夜亚洲激情| 婷婷综合另类小说色区| 日韩少妇与小伙激情| 欧美日韩国产精品一区二区三区四区| 亚洲人成在线播放| 久久精品99| 国产精品一区二区无码对白| 国产又大又粗又长| 九色porn| 麻豆国产一区| 国产精品一区二区不卡| 欧美美女激情18p| 国产精品网址在线| 性chinese极品按摩| 国产成人a v| 16—17女人毛片毛片| 色成人免费网站| 免费在线观看精品| 欧美色区777第一页| 国产精品九九久久久久久久| 农村妇女精品一二区| 久久精品无码av| 男女视频网站免费观看| 精品国产第一国产综合精品| 国产在线不卡一卡二卡三卡四卡| 91精品综合久久久久久| 亚洲最大的成人网| av无码一区二区三区| 亚洲男人天堂影院| 另类视频在线| 久久午夜精品| 欧美日韩成人综合天天影院 | 亚洲天堂av影院| 久久婷婷久久| 欧美人妖巨大在线| 国产日韩精品久久| 国产91丝袜美女在线播放| 国产美女在线看| 成人区精品一区二区| 欧美日韩女优| 美女日批免费视频| 国产亚洲在线| 一区二区三区短视频| 日韩五码在线| 欧美最猛性xxxxx直播| 国产日韩在线一区| 一区二区在线免费观看视频| 手机在线观看毛片| 色婷婷在线播放| 视频精品一区二区| 精品成人免费观看| 婷婷亚洲婷婷综合色香五月| 唐朝av高清盛宴| 日韩欧美第二区在线观看| 蜜臀av色欲a片无码精品一区| 免费毛片一区二区三区| 国产日本视频| 欧美丝袜一区| 欧美不卡高清一区二区三区| 亚洲中午字幕| 欧美大胆人体bbbb| 欧美三级电影在线播放| 日韩精品久久久久久久的张开腿让 | 国产日韩欧美大片| 这里只有精品免费视频| √新版天堂资源在线资源| 亚洲美女黄色| 亚洲国产成人91精品| www.亚洲一区二区| 一区二区三区四区国产| 亚洲福利专区| 永久久久久久久| 欧美色电影在线| 国产美女高潮在线观看| 日韩Av无码精品| 欧美一区二区观看视频| 国产乱码精品一区二三赶尸艳谈| 别急慢慢来1978如如2| 99精品国产视频| 亚洲手机在线观看| 免费观看成人毛片| 痴汉一区二区三区| 亚洲欧美日韩国产成人精品影院 | 国产精品hd| 欧美一区二区三区成人| 亚洲mv在线看| 911美女片黄在线观看游戏| 欧美日韩精品区| 91在线不卡| 国产在线看一区| 久久夜精品香蕉| 五月天丁香社区| 18岁以下禁止观看的美女视频| 国产欧美日韩在线观看视频| 欧美性受xxxx黑人xyx| 樱空桃在线播放| 香蕉视频黄色片| 8848成人影院| 精品女同一区二区三区在线播放| 免费av一区二区三区| 亚洲天堂中文字幕在线| 伊人久久国产| 亚洲精品国产a久久久久久| 国产精品一区二| 中文字幕在线日亚洲9| 交100部在线观看| 中文字幕亚洲区| 久久另类ts人妖一区二区| 亚洲天堂手机版| 日韩午夜电影免费看| 欧美日韩国产精品一区二区三区四区 | 中文字幕 欧美激情| 麻豆国产在线| 亚洲激情第一区| 日本中文不卡| 欧美一级特黄aaaaaa| 久久99成人| 欧美日韩高清影院| 九九九九免费视频| 中文字幕 视频一区| 久久久国产精品视频| 在线免费黄色| 天堂网av成人| 欧美日韩视频在线观看一区二区三区| 中文字幕在线乱| 四虎地址8848jia| 亚洲va久久久噜噜噜久久| 欧美在线影院一区二区| 精品无码国模私拍视频| 国产麻豆永久视频| 88国产精品视频一区二区三区| 亚洲香蕉在线观看| 亚洲精品女人久久久| 狠狠v欧美ⅴ日韩v亚洲v大胸| 高清在线成人网| 91久久精品www人人做人人爽| 无码人妻av免费一区二区三区| 午夜精品久久久久久久久久蜜桃| 91在线品视觉盛宴免费| 99热这里有精品| 欧美日韩国产中文| 亚洲激情在线观看视频| 成人丁香基地| 国产久卡久卡久卡久卡视频精品| 国产精品对白刺激| 小泽玛利亚一区二区三区视频| 亚洲精品大片| 欧美一区二区黄| 美女扒开腿免费视频| 色三级在线观看| 亚洲美女区一区| 中文精品无码中文字幕无码专区 | 小说区图片区亚洲| 欧美乱妇23p| 99精品视频播放| bdsm精品捆绑chinese| 91片黄在线观看| 91国偷自产一区二区三区的观看方式| 日本系列第一页| 国产一区 二区| 日韩av在线免费观看| xxxx日本黄色| 国产精品13p| 欧美日韩国产综合一区二区三区| 波多野吉衣在线视频| 成年人视频在线观看免费| 亚洲免费在线观看| 久久精品国产久精国产一老狼| 激情六月综合| 你懂的视频在线看| 9l视频自拍蝌蚪9l视频成人| 欧美精品一区二区三区在线播放 | 国产精品玖玖玖在线资源| 亚洲精品自产拍| 加勒比婷婷色综合久久| 国产91欧美| 亚洲日本欧美日韩高观看| 小向美奈子av| 日韩三级一区| 在线日韩av观看| 毛片视频网站在线观看| 欧美三级自拍| 性色av一区二区三区| 国产精品久久久久久久久久久久久久久久 | 成人福利一区二区| 日韩精品一区二区三区四区| 国产老熟女伦老熟妇露脸| 黄页网站在线| 日韩视频一区在线观看| 少妇视频在线播放| 色婷婷成人网| 最近2019年手机中文字幕| 日韩精品在线免费视频| 九一精品国产| 欧洲精品在线视频| 69xxx视频hd| 日本美女视频一区二区| 日韩动漫在线观看| 久久久视频6r| 18成人在线| 5月丁香婷婷综合| www.国产在线视频| 亚洲成人av在线影院| 亚洲国产一区二区在线播放| 日本xxxx免费| av在线一区不卡| 国产午夜精品视频| 一级黄色免费看| 国产欧美日韩亚洲一区二区三区| 粉嫩精品一区二区三区在线观看| 青青草免费在线观看| 久久免费视频色| 视频二区在线播放| 超碰国产一区| 搡老女人一区二区三区视频tv| 一级黄色录像大片| 国产欧美短视频| 日韩精品大片| 黄色大片在线免费观看| 欧美精品久久天天躁| 亚洲国产日韩一区无码精品久久久| 男女av免费观看| 高清免费日韩| 在线观看久久av| 亚洲一区二区久久久久久久| 欧美性猛交ⅹxxx乱大交免费| 成人国产精品免费观看| 欧美变态另类刺激| 午夜伦理在线| 亚洲精品成a人在线观看| 日本视频免费观看| 一区二区三区精品视频在线观看| 日韩欧美亚洲日产国| 伊人av免费在线观看| 欧美日韩精品欧美日韩精品一综合| 国产亚洲第一页| 国产综合视频| 制服诱惑一区| 麻豆免费在线观看| 亚洲人成网在线播放| 亚洲第一页视频| 成人免费视频国产在线观看| 网站一区二区三区|