亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? at24c02.lst

?? c8051f020源代碼39個 使用Silicon Labs IDE 調試器
?? LST
字號:
C51 COMPILER V7.05   AT24C02                                                               02/14/2006 09:04:33 PAGE 1   


C51 COMPILER V7.05, COMPILATION OF MODULE AT24C02
OBJECT MODULE PLACED IN AT24C02.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe AT24C02.C DB OE

stmt level    source

   1          //參考程序A:AT24C02.C   SMBUS  24C02 讀/寫  2005.12.25
   2          //程序功能:在AT24C02的地址00---3FH中依次存入連續的數據10H--4FH
   3          //再依次從地址00---3FH中讀出數據并通過SAA1064驅動四位數碼管顯示出來.
   4          //第一,二位數碼管顯示地址,第三,四位數碼管顯示存入該地址內的數據.
   5          //顯示格式:
   6          //存儲器的地址  存儲器單元的內容
   7          //00H---3FH     40H---4FH
   8          #include <c8051f020.h>                    // SFR declarations
   9          #include <intrins.h>
  10          #define  WRITE       0x00                 //  SMBUS尋址字節的寫標志位
  11          #define  READ        0x01                 //  SMBUS尋址字節的讀標志位
  12          // Device addresses
  13          #define  CHIP_A        0xA0                //AT24C02器件自身的尋址字節
  14          #define  CHIP_B        0x70                //AT24C02器件自身的尋址字節
  15          #define  SMB_BUS_ERROR  0x0  //總線錯誤                                  
  16            //MT為主發送器,MR為主接收器
  17          #define  SMB_START      0x08              // (MT & MR) 發送起始位
  18          #define  SMB_RP_START   0x10              // (MT & MR) 重復起始位
  19          #define  SMB_MTADDACK   0x18              // (MT) 發送從地址 + W 后收到ACK
  20          #define  SMB_MTADDNACK  0x20              // (MT) 發送從地址 + W 后收到NACK
  21          #define  SMB_MTDBACK    0x28              // (MT) 發送數據后收到ACK
  22          #define  SMB_MTDBNACK   0x30              // (MT) 發送數據后收到NACK
  23          #define  SMB_MTARBLOST  0x38              //(MT)競爭失敗
  24          #define  SMB_MRADDACK   0x40              // (MR) 發送從地址 + R 后收到 ACK
  25          #define  SMB_MRADDNACK  0x48              // (MR) 發送從地址 + R 后收到 NACK
  26          #define  SMB_MRDACK     0x50              // (MR) 收到數據字節 后已發送ACK                                
             -    
  27          #define  SMB_MRDBNACK   0x58              // (MR) 收到數據字節 后已發送NACK      
  28          char DATA0[6]={0x17,0x3f,0x06,0x5b,0x4f}; 
  29          char    xdata DATA2[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  30          char SLAW,DATA1[64];                    // 保存從地址+ WRITE 位
  31          char SLAR;                              // 保存從地址+ WRITE 位
  32          char WORD,WORDADR;                      // 保存被收/發的數據字節
  33          char xdata sendnumber;                  // 保存被收/發的數據字節的數目        
  34          //unsigned char xdata  WORDADR;         //保存被傳送的數據在24C02中的首地址.
  35          unsigned char xdata SENDMODE;           //SENDMODE作讀/寫控制字                       
  36          unsigned char xdata  i,j,k,sla,n,m,p;
  37          bit SM_BUSY;           //忙碌標志位                                        void sleep_ms( unsigned int cou
             -nt);       //延時
  38          void SYSCLK_Init (void);                  //系統時鐘初始化
  39          void DISPLAY(void);                       //通過SAA1064驅動四位數碼管顯示
  40          void SMBUS_ISR (void);                    //中斷服務程序
  41          char SLA_READ(char chip,char wordadr,char number);
  42          void SLA_SEND(char chip,char wordadr, char word,char number);
  43          void sleep_ms(unsigned int count);
  44          
  45          void MAIN (void)
  46          {
  47   1         unsigned char check;              // 測試用的工作變量
  48   1         WDTCN = 0xde;                          // 關閉看們狗
  49   1         WDTCN = 0xad;
  50   1         SYSCLK_Init();                         // 時鐘初始化
  51   1         XBR0 = 0x01;                           // 選交叉開關 :P0.0-->SDA,P0.1-->CLK
  52   1         XBR2 = 0x40;                           // 交叉開關使能
  53   1         SMB0CN = 0x44;                         // 允許SMBUS, 應答返回AA(低電平
C51 COMPILER V7.05   AT24C02                                                               02/14/2006 09:04:33 PAGE 2   

  54   1         SMB0CR = 0xc9;                   // SMBus 速率= 100 kHz,系統時鐘為11.0592MHZ
  55   1         EIE1 |= 2;                             // SMBus 中斷使能
  56   1         EA = 1;                                // 開中斷
  57   1         SM_BUSY = 0;                           //  SM_BUSY是忙碌標志位
  58   1         SI = 0;                                //SM_BUSY中斷標志位
  59   1         //寫64個連續的數據到AT24C02中去并依次存放.
  60   1      //64個連續的數據的存放地址:00H--3fH.第一個數為10H,最后一個數為4FH.
  61   1         i=0x10;
  62   1         sla=CHIP_A;
  63   1        for  (j=0;j<0x40;j++)            //向24C02的000地址依次寫入64個數據,
  64   1        {                                //64個數據的數值從10H---4FH   
  65   2         SLA_SEND(sla, j, i,0x01);       // 寫入AT24C02
  66   2         i++;
  67   2         }
  68   1        for  (j=0;j<0x40;j++)          //從24C02的00地址依次連續讀出64個數據,
  69   1        {                              //64個數據的數值應該是從10H---3FH(連續存放)
  70   2         check=SLA_READ(sla, j,0x01);     
  71   2         DATA1[j]=check;               //讀出來的數據依次連續存入數組DATA[]中
  72   2         }
  73   1         for  (j=0;j<0x40;j++)     //把要顯示的兩位地址和兩位數據存入DATA2[]中           
  74   1        { i=DATA1[j];              
  75   2          k=i&0x0f;
  76   2              m=DATA2[k];              //j為地址,i=DATA1[j]=check,i地址j中存放的數據
  77   2              DATA0[4]=m;
  78   2              k=i&0xf0;
  79   2              k=k>>4;
  80   2          n=DATA2[k];
  81   2              DATA0[3]=n;
  82   2          k=j&0x0f;
  83   2              m=DATA2[k];
  84   2              DATA0[2]=m;
  85   2              k=j&0xf0;
  86   2              k=k>>4;
  87   2          n=DATA2[k];
  88   2              DATA0[1]=n;
  89   2              DISPLAY();
  90   2          sleep_ms(1000);
  91   2              } 
  92   1         while(1);
  93   1       }
  94          void  DISPLAY (void)
  95          {
  96   1        sla=CHIP_B;
  97   1              DATA0[0]=0x17;              //0x17是SAA1064的控制字.
  98   1        for  (p=0;p<0x5;p++)
  99   1        {i=DATA0[p];                 //向SAA1064寫入五個數:SAA1064的控制字一字節,
 100   2        SLA_SEND(sla, p, i,0x01);     // 地址2字節,數據2字節.共五字節
 101   2      }
 102   1      }
 103           void SYSCLK_Init (void)
 104          {
 105   1         int i;                               // i 用于延時計數
 106   1         OSCXCN = 0x67;                       // 先選擇外捕振蕩器,頻率位11.0592MHZ
 107   1         for (i=0; i < 256; i++) ;            // 再延時(>1ms),
 108   1         while (!(OSCXCN & 0x80)) ;           // 等待外部晶振穩定
 109   1         OSCICN = 0x88;                       // 選擇外部晶振,允許時鐘丟失檢測
 110   1      }
 111          void SLA_SEND(char chip, char wordadr, char word,char number)
 112          {
 113   1        SENDMODE=0x01;
 114   1         sendnumber=number+1;
 115   1         while(SM_BUSY);               // 若SMBUS忙碌就等待
C51 COMPILER V7.05   AT24C02                                                               02/14/2006 09:04:33 PAGE 3   

 116   1         SM_BUSY = 1;                  // 置SM_BUSY位(忙碌標志位)為1                
 117   1         SLAW = (chip| WRITE);         // COMMAND = 7 個地址位 + 一位WRITE.
 118   1         WORD = word;                  // WORD中存放要送到24C02中去的數據(8位)
 119   1         WORDADR = wordadr;            // OP_CODE 中存放被傳送數據送入24C02的首地址.
 120   1         STO = 0;
 121   1         STA = 1;                         // 啟動數據傳輸
 122   1         while(SM_BUSY);                  // 等待傳輸完成
 123   1      }
 124          char SLA_READ(char chip, char wordadr,char number){
 125   1         sendnumber=number;
 126   1        SENDMODE=0;
 127   1         while(SM_BUSY);                  // 若SMBUS忙碌就等待
 128   1         SM_BUSY = 1;                     // 置SM_BUSY位(忙碌標志位)為1 
 129   1         SLAR = (chip| READ);             // COMMAND = 7 個地址位 + 一位READ
 130   1         WORDADR = wordadr;                // OP_CODE 中存放從24C02讀出數據的的首地址.
 131   1         STO = 0;
 132   1         STA = 1;                          // 啟動傳輸
 133   1         while(SM_BUSY);                   // 等待傳輸完成 
 134   1         return WORD;                      //返回讀出來的數據(一個字節)
 135   1      }
 136          void SMBUS_ISR (void) interrupt 7    //中斷服務程序
 137          {
 138   1         switch (SMB0STA){                 // 根據中斷狀態碼跳轉
 139   2                                           //(SMB0STA 是中斷狀態寄存器)
 140   2             case SMB_START:               //0x08, (MT & MR) 發送起始位
 141   2               SMB0DAT = SLAW ;            // 裝入被訪問的從芯片的寫地址
 142   2               STA = 0;                    // 人工清除 STA 位
 143   2               SI = 0;                     // 清除中斷標志位
 144   2               break;
 145   2             case SMB_RP_START:                //0x10,(MT & MR) 重復發送起始位
 146   2               SMB0DAT = SLAR;             // 裝入被訪問的從芯片的讀地址
 147   2               STA = 0;                    // 人工清除 STA 位
 148   2               SI = 0;                     // 清除中斷標志位
 149   2               break;
 150   2             case SMB_MTADDACK:            //0x18 ,(MT) 發送從地址 + W 后收到ACK
 151   2               SMB0DAT = WORDADR;
 152   2               SI = 0;                     // 清除中斷標志位
 153   2               break;
 154   2             case SMB_MTADDNACK:          //0x20,(MT) 發送從地址 + W 后收到NACK
 155   2               STO = 1;
 156   2               STA = 1;
 157   2               SI = 0;                    // 清除中斷標志位
 158   2               break;
 159   2            case SMB_MTDBACK:                 //0x28,(MT) 發送數據后收到ACK
 160   2               switch (SENDMODE){         // 檢查低1位
 161   3             case 1:
 162   3                                 sendnumber--;
 163   3                                 if(sendnumber)
 164   3                                 SMB0DAT = WORD;
 165   3                                 else{
 166   4                                              STO=1;
 167   4                                              SM_BUSY=0;
 168   4                                      }
 169   3                    break;             
 170   3             case 0:
 171   3                                   STO = 0;
 172   3                     STA = 1;
 173   3                     break;            
 174   3             default:              
 175   3                     STO = 1;
 176   3                     SM_BUSY = 0;
 177   3                     break;
C51 COMPILER V7.05   AT24C02                                                               02/14/2006 09:04:33 PAGE 4   

 178   3               }
 179   2               SI = 0;
 180   2               break;
 181   2            case SMB_MTDBNACK:        //0x30
 182   2               STO = 1;
 183   2               STA = 1;
 184   2               SI = 0;                          // 清除中斷標志
 185   2               break;
 186   2            case SMB_MRADDACK:        //0x40
 187   2               AA = 0;                        
 188   2               SI = 0;
 189   2               break;
 190   2                case SMB_MRADDNACK:   //0x48
 191   2               STO = 0;
 192   2               STA = 1;
 193   2               SI = 0;
 194   2               break;
 195   2           case SMB_MRDBNACK:     //0x58
 196   2               WORD = SMB0DAT;
 197   2               STO = 1;
 198   2               SM_BUSY = 0;
 199   2               AA = 1;                          
 200   2               SI = 0;
 201   2               break;
 202   2            default:
 203   2               STO = 1;
 204   2               SM_BUSY = 0;
 205   2               break;
 206   2            }
 207   1      }
 208          /*延時子程序*/
 209          void sleep_ms(unsigned int count)
 210          {
 211   1        unsigned int ii,jj;
 212   1        for(ii=0;ii<count;ii++)
 213   1          {
 214   2            for(jj=0;jj<250;jj++)
 215   2                _nop_();      
 216   2                 _nop_();     
 217   2                  _nop_();    
 218   2                       _nop_();                       
 219   2          }   
 220   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    620    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     25    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     74       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产盗摄一区二区| 久久久久久影视| 国产三级精品三级在线专区| 色综合 综合色| 亚洲三级在线免费| 99久久99精品久久久久久| 欧美精品一区二区久久婷婷| 日本不卡123| 久久人人爽爽爽人久久久| 国产一区在线不卡| 国产日韩欧美一区二区三区综合| 国产又粗又猛又爽又黄91精品| 色狠狠综合天天综合综合| 日欧美一区二区| 欧美美女一区二区三区| 日韩和欧美的一区| 日韩美女视频在线| 国产经典欧美精品| 亚洲欧洲色图综合| 色综合久久中文综合久久牛| 亚洲欧美一区二区不卡| 欧美综合在线视频| 爽爽淫人综合网网站| 日韩亚洲欧美高清| 国产精品66部| 欧美视频一区在线观看| 激情都市一区二区| 国产精品久久777777| 色8久久人人97超碰香蕉987| 亚洲一区二区三区在线播放| 久久综合色之久久综合| 岛国一区二区三区| 亚洲另类在线一区| 欧美一区欧美二区| 91网站视频在线观看| 亚洲高清在线精品| 日韩欧美国产综合在线一区二区三区| 狠狠色丁香婷婷综合| 久久精品视频在线免费观看| 在线日韩一区二区| 蜜桃视频一区二区三区在线观看| 久久久五月婷婷| 91免费国产在线观看| 蜜臀av一级做a爰片久久| 欧美韩国日本一区| 精品视频免费看| 国产伦精品一区二区三区免费迷 | 在线视频国内自拍亚洲视频| 亚洲成人动漫一区| 国产偷国产偷精品高清尤物| 在线一区二区三区四区| 福利电影一区二区三区| 亚洲成在人线在线播放| 国产欧美日韩综合| 91麻豆精品91久久久久同性| 久久精品国产亚洲高清剧情介绍| 一区二区三区高清在线| 精品免费99久久| 欧美伊人久久大香线蕉综合69| 精品一区二区日韩| 日本在线不卡视频一二三区| 亚洲视频图片小说| 精品日韩在线观看| 欧美另类一区二区三区| 91免费看片在线观看| 国产成人三级在线观看| 蜜桃视频免费观看一区| 亚洲电影一区二区三区| 国产精品传媒入口麻豆| 国产亚洲精品7777| 精品久久久久久最新网址| 欧美日韩一区中文字幕| 色综合天天视频在线观看| 韩国成人在线视频| 久久激情五月婷婷| 日韩高清一区在线| 亚洲图片一区二区| 国产精品人妖ts系列视频| 国产三级精品三级| 精品成a人在线观看| 91精品婷婷国产综合久久竹菊| 日本韩国精品一区二区在线观看| 97久久精品人人爽人人爽蜜臀| 国产成人三级在线观看| 激情丁香综合五月| 久久av老司机精品网站导航| 亚洲伦理在线精品| 亚洲一二三级电影| 亚洲在线视频免费观看| 亚洲精选一二三| 亚洲人成影院在线观看| 成人欧美一区二区三区| 亚洲少妇30p| 曰韩精品一区二区| 亚洲成人激情av| 日韩在线一区二区三区| 国产最新精品免费| av爱爱亚洲一区| 欧美日韩第一区日日骚| 日韩久久久精品| 日韩成人午夜电影| 国产不卡视频在线观看| 99国产精品久久久久久久久久久| 欧美视频一区二区三区| 日韩无一区二区| 国产精品免费av| 日韩综合一区二区| 国产精品自拍网站| 91精品1区2区| 精品区一区二区| 亚洲欧美日韩电影| 美日韩一级片在线观看| k8久久久一区二区三区| 制服丝袜亚洲精品中文字幕| 国产午夜精品理论片a级大结局 | 色悠久久久久综合欧美99| 欧美日韩免费一区二区三区| 久久久精品黄色| 亚洲成人av一区二区| 国产91在线观看| 在线不卡欧美精品一区二区三区| 精品裸体舞一区二区三区| 亚洲精品日韩专区silk| 激情小说欧美图片| 精品视频全国免费看| 国产精品污www在线观看| 午夜电影网一区| 波多野结衣中文字幕一区 | 美女一区二区视频| 色又黄又爽网站www久久| 久久久久久毛片| 五月婷婷久久综合| 99久久精品免费| 2021中文字幕一区亚洲| 亚洲国产精品久久不卡毛片| 国产成人免费视频网站 | 奇米精品一区二区三区在线观看 | 激情综合色综合久久| 在线免费观看一区| 国产精品日日摸夜夜摸av| 麻豆极品一区二区三区| 欧美日韩一二三| 亚洲人成7777| 99在线热播精品免费| 久久精品视频一区二区三区| 麻豆精品一区二区av白丝在线 | 制服丝袜亚洲网站| 亚洲免费视频成人| 97精品电影院| 国产精品色一区二区三区| 国产精品影视网| 久久一夜天堂av一区二区三区| 无码av中文一区二区三区桃花岛| 色琪琪一区二区三区亚洲区| 亚洲欧洲精品一区二区精品久久久 | 亚洲一区二区三区四区在线观看| 成人黄色777网| 欧美国产精品专区| 国产精品99久久久久久宅男| 精品电影一区二区| 国内精品国产成人| 久久精品日产第一区二区三区高清版 | 国产成人在线电影| 国产日产精品1区| 高清不卡一二三区| 中文字幕免费不卡在线| 成人动漫在线一区| 亚洲视频在线一区| 色婷婷精品大在线视频| 一区二区三区电影在线播| 在线观看一区日韩| 午夜视频久久久久久| 91精品国产麻豆国产自产在线| 日本中文一区二区三区| 日韩女同互慰一区二区| 精品亚洲aⅴ乱码一区二区三区| 欧美一区二区三区在线电影 | 26uuu国产电影一区二区| 国产一区91精品张津瑜| 欧美激情综合网| av网站免费线看精品| 亚洲自拍都市欧美小说| 欧美老肥妇做.爰bbww| 九色综合国产一区二区三区| 久久精品一区四区| 91浏览器入口在线观看| 石原莉奈一区二区三区在线观看| 欧美一级欧美三级在线观看| 狠狠色伊人亚洲综合成人| 日本一区二区三区国色天香| 97久久超碰国产精品| 视频在线观看一区二区三区| 精品欧美乱码久久久久久1区2区| 国产suv精品一区二区三区| 亚洲欧美日韩在线| 在线不卡中文字幕| 国产成人综合在线观看| 樱桃视频在线观看一区| 91精品福利在线一区二区三区| 国产精品亚洲一区二区三区妖精|