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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? at24c02.#3

?? c8051f020源代碼39個 使用Silicon Labs IDE 調(diào)試器
?? #3
字號:
//參考程序A:AT24C02.C   SMBUS  24C02 讀/寫  2005.12.25
//程序功能:在AT24C02的地址00---3FH中依次存入連續(xù)的數(shù)據(jù)10H--4FH
//再依次從地址00---3FH中讀出數(shù)據(jù)并通過SAA1064驅(qū)動四位數(shù)碼管顯示出來.
//第一,二位數(shù)碼管顯示地址,第三,四位數(shù)碼管顯示存入該地址內(nèi)的數(shù)據(jù).
//顯示格式:
//存儲器的地址	存儲器單元的內(nèi)容
//00H---3FH	40H---4FH
#include <c8051f020.h>                    // SFR declarations
#include <intrins.h>
#define  WRITE       0x00                 //  SMBUS尋址字節(jié)的寫標(biāo)志位
#define  READ        0x01                 //  SMBUS尋址字節(jié)的讀標(biāo)志位
// Device addresses
#define  CHIP_A        0xA0                //AT24C02器件自身的尋址字節(jié)
#define  CHIP_B        0x70                //AT24C02器件自身的尋址字節(jié)
#define  SMB_BUS_ERROR  0x0  //總線錯誤                                  
  //MT為主發(fā)送器,MR為主接收器
#define  SMB_START      0x08              // (MT & MR) 發(fā)送起始位
#define  SMB_RP_START   0x10              // (MT & MR) 重復(fù)起始位
#define  SMB_MTADDACK   0x18              // (MT) 發(fā)送從地址 + W 后收到ACK
#define  SMB_MTADDNACK  0x20              // (MT) 發(fā)送從地址 + W 后收到NACK
#define  SMB_MTDBACK    0x28              // (MT) 發(fā)送數(shù)據(jù)后收到ACK
#define  SMB_MTDBNACK   0x30              // (MT) 發(fā)送數(shù)據(jù)后收到NACK
#define  SMB_MTARBLOST  0x38              //(MT)競爭失敗
#define  SMB_MRADDACK   0x40              // (MR) 發(fā)送從地址 + R 后收到 ACK
#define  SMB_MRADDNACK  0x48              // (MR) 發(fā)送從地址 + R 后收到 NACK
#define  SMB_MRDACK     0x50              // (MR) 收到數(shù)據(jù)字節(jié) 后已發(fā)送ACK                                    
#define  SMB_MRDBNACK   0x58              // (MR) 收到數(shù)據(jù)字節(jié) 后已發(fā)送NACK      
char DATA0[6]={0x17,0x3f,0x06,0x5b,0x4f}; 
char	xdata DATA2[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char SLAW,DATA1[64];                    // 保存從地址+ WRITE 位
char SLAR;                              // 保存從地址+ WRITE 位
char WORD,WORDADR;                      // 保存被收/發(fā)的數(shù)據(jù)字節(jié)
char xdata sendnumber;                  // 保存被收/發(fā)的數(shù)據(jù)字節(jié)的數(shù)目        
//unsigned char xdata  WORDADR;         //保存被傳送的數(shù)據(jù)在24C02中的首地址.
unsigned char xdata SENDMODE;           //SENDMODE作讀/寫控制字                       
unsigned char xdata  i,j,k,sla,n,m,p;
bit SM_BUSY;           //忙碌標(biāo)志位                                        void sleep_ms( unsigned int count);       //延時
void SYSCLK_Init (void);                  //系統(tǒng)時鐘初始化
void DISPLAY(void);                       //通過SAA1064驅(qū)動四位數(shù)碼管顯示
void SMBUS_ISR (void);                    //中斷服務(wù)程序
char SLA_READ(char chip,char wordadr,char number);
void SLA_SEND(char chip,char wordadr, char word,char number);
void sleep_ms(unsigned int count);

void MAIN (void)
{
   unsigned char check;              // 測試用的工作變量
   WDTCN = 0xde;                          // 關(guān)閉看們狗
   WDTCN = 0xad;
   SYSCLK_Init();                         // 時鐘初始化
   XBR0 = 0x01;                           // 選交叉開關(guān)	:P0.0-->SDA,P0.1-->CLK
   XBR2 = 0x40;                           // 交叉開關(guān)使能
   SMB0CN = 0x44;                         // 允許SMBUS, 應(yīng)答返回AA(低電平
   SMB0CR = 0xc9;                   // SMBus 速率= 100 kHz,系統(tǒng)時鐘為11.0592MHZ
   EIE1 |= 2;                             // SMBus 中斷使能
   EA = 1;                                // 開中斷
   SM_BUSY = 0;                           //  SM_BUSY是忙碌標(biāo)志位
   SI = 0;                                //SM_BUSY中斷標(biāo)志位
   //寫64個連續(xù)的數(shù)據(jù)到AT24C02中去并依次存放.
//64個連續(xù)的數(shù)據(jù)的存放地址:00H--3fH.第一個數(shù)為10H,最后一個數(shù)為4FH.
   i=0x10;
   sla=CHIP_A;
  for  (j=0;j<0x40;j++)            //向24C02的000地址依次寫入64個數(shù)據(jù),
  {                                //64個數(shù)據(jù)的數(shù)值從10H---4FH   
   SLA_SEND(sla, j, i,0x01);       // 寫入AT24C02
   i++;
   }
  for  (j=0;j<0x40;j++)          //從24C02的00地址依次連續(xù)讀出64個數(shù)據(jù),
  {                              //64個數(shù)據(jù)的數(shù)值應(yīng)該是從10H---3FH(連續(xù)存放)
   check=SLA_READ(sla, j,0x01);     
   DATA1[j]=check;               //讀出來的數(shù)據(jù)依次連續(xù)存入數(shù)組DATA[]中
   }
   for  (j=0;j<0x40;j++)     //把要顯示的兩位地址和兩位數(shù)據(jù)存入DATA2[]中           
  { i=DATA1[j];              
    k=i&0x0f;
	m=DATA2[k];              //j為地址,i=DATA1[j]=check,i地址j中存放的數(shù)據(jù)
	DATA0[4]=m;
	k=i&0xf0;
	k=k>>4;
    n=DATA2[k];
	DATA0[3]=n;
    k=j&0x0f;
	m=DATA2[k];
	DATA0[2]=m;
	k=j&0xf0;
	k=k>>4;
    n=DATA2[k];
	DATA0[1]=n;
	DISPLAY();
    sleep_ms(1000);
	} 
   while(1);
 }
void  DISPLAY (void)
{
  sla=CHIP_B;
   	DATA0[0]=0x17;              //0x17是SAA1064的控制字.
  for  (p=0;p<0x5;p++)
  {i=DATA0[p];	               //向SAA1064寫入五個數(shù):SAA1064的控制字一字節(jié),
  SLA_SEND(sla, p, i,0x01);     // 地址2字節(jié),數(shù)據(jù)2字節(jié).共五字節(jié)
}
}
 void SYSCLK_Init (void)
{
   int i;                               // i 用于延時計(jì)數(shù)
   OSCXCN = 0x67;                       // 先選擇外捕振蕩器,頻率位11.0592MHZ
   for (i=0; i < 256; i++) ;            // 再延時(>1ms),
   while (!(OSCXCN & 0x80)) ;           // 等待外部晶振穩(wěn)定
   OSCICN = 0x88;                       // 選擇外部晶振,允許時鐘丟失檢測
}
void SLA_SEND(char chip, char wordadr, char word,char number)
{
  SENDMODE=0x01;
   sendnumber=number+1;
   while(SM_BUSY);               // 若SMBUS忙碌就等待
   SM_BUSY = 1;                  // 置SM_BUSY位(忙碌標(biāo)志位)為1                
   SLAW = (chip| WRITE);         // COMMAND = 7 個地址位 + 一位WRITE.
   WORD = word;                  // WORD中存放要送到24C02中去的數(shù)據(jù)(8位)
   WORDADR = wordadr;            // OP_CODE 中存放被傳送數(shù)據(jù)送入24C02的首地址.
   STO = 0;
   STA = 1;                         // 啟動數(shù)據(jù)傳輸
   while(SM_BUSY);                  // 等待傳輸完成
}
char SLA_READ(char chip, char wordadr,char number){
   sendnumber=number;
  SENDMODE=0;
   while(SM_BUSY);                  // 若SMBUS忙碌就等待
   SM_BUSY = 1;                     // 置SM_BUSY位(忙碌標(biāo)志位)為1 
   SLAR = (chip| READ);             // COMMAND = 7 個地址位 + 一位READ
   WORDADR = wordadr;                // OP_CODE 中存放從24C02讀出數(shù)據(jù)的的首地址.
   STO = 0;
   STA = 1;                          // 啟動傳輸
   while(SM_BUSY);                   // 等待傳輸完成 
   return WORD;                      //返回讀出來的數(shù)據(jù)(一個字節(jié))
}
void SMBUS_ISR (void) interrupt 7    //中斷服務(wù)程序
{
   switch (SMB0STA){                 // 根據(jù)中斷狀態(tài)碼跳轉(zhuǎn)
                                     //(SMB0STA 是中斷狀態(tài)寄存器)
       case SMB_START:	             //0x08, (MT & MR) 發(fā)送起始位
         SMB0DAT = SLAW ;            // 裝入被訪問的從芯片的寫地址
         STA = 0;                    // 人工清除 STA 位
         SI = 0;                     // 清除中斷標(biāo)志位
         break;
       case SMB_RP_START:	         //0x10,(MT & MR) 重復(fù)發(fā)送起始位
         SMB0DAT = SLAR;             // 裝入被訪問的從芯片的讀地址
         STA = 0;                    // 人工清除 STA 位
         SI = 0;                     // 清除中斷標(biāo)志位
         break;
       case SMB_MTADDACK:            //0x18 ,(MT) 發(fā)送從地址 + W 后收到ACK
         SMB0DAT = WORDADR;
         SI = 0;                     // 清除中斷標(biāo)志位
         break;
       case SMB_MTADDNACK:     	    //0x20,(MT) 發(fā)送從地址 + W 后收到NACK
         STO = 1;
         STA = 1;
         SI = 0;                    // 清除中斷標(biāo)志位
         break;
      case SMB_MTDBACK:		        //0x28,(MT) 發(fā)送數(shù)據(jù)后收到ACK
         switch (SENDMODE){         // 檢查低1位
       case 1:
			   sendnumber--;
			   if(sendnumber)
			   SMB0DAT = WORD;
			   else{
			   		STO=1;
				   	SM_BUSY=0;
				}
              break;             
       case 0:
			     STO = 0;
               STA = 1;
               break;            
       default:              
               STO = 1;
               SM_BUSY = 0;
               break;
         }
         SI = 0;
         break;
      case SMB_MTDBNACK:	//0x30
         STO = 1;
         STA = 1;
         SI = 0;                          // 清除中斷標(biāo)志
         break;
      case SMB_MRADDACK:	//0x40
         AA = 0;                        
         SI = 0;
         break;
   	  case SMB_MRADDNACK:	//0x48
         STO = 0;
         STA = 1;
         SI = 0;
         break;
     case SMB_MRDBNACK:	    //0x58
         WORD = SMB0DAT;
         STO = 1;
         SM_BUSY = 0;
         AA = 1;                          
         SI = 0;
         break;
      default:
         STO = 1;
         SM_BUSY = 0;
         break;
      }
}
/*延時子程序*/
void sleep_ms(unsigned int count)
{
  unsigned int ii,jj;
  for(ii=0;ii<count;ii++)
    {
      for(jj=0;jj<250;jj++)
	  _nop_();	
	   _nop_();	
	    _nop_();	
		 _nop_();			
    }	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av中文字幕| 一区免费观看视频| 麻豆精品视频在线观看| 在线不卡中文字幕播放| 日本特黄久久久高潮| 日韩无一区二区| 国产麻豆成人传媒免费观看| 久久久久综合网| 成人avav在线| 亚洲小说欧美激情另类| 欧美巨大另类极品videosbest| 性做久久久久久久久| 欧美成人一级视频| 高清日韩电视剧大全免费| 国产精品久久久久久久久免费桃花| www.视频一区| 日韩激情中文字幕| 久久夜色精品国产噜噜av| 国产成人av在线影院| 中文字幕一区二区三区不卡在线| 一本一道综合狠狠老| 午夜成人在线视频| 久久亚洲综合色一区二区三区| 成人ar影院免费观看视频| 亚洲大片精品永久免费| 久久亚洲综合色| 欧美网站大全在线观看| 精品写真视频在线观看| 亚洲人成网站影音先锋播放| 91精品免费观看| 不卡一区二区三区四区| 婷婷开心激情综合| 久久久www免费人成精品| 99久久免费精品高清特色大片| 亚洲国产成人高清精品| 国产亚洲欧美激情| 欧美日韩一区二区三区视频| 国产夫妻精品视频| 天天免费综合色| 久久久影视传媒| 欧美情侣在线播放| 91麻豆国产在线观看| 国产一区二区看久久| 亚洲1区2区3区视频| 国产精品免费久久| 欧美人妖巨大在线| 成人av免费网站| 激情丁香综合五月| 五月婷婷欧美视频| 亚洲欧美另类图片小说| 久久午夜色播影院免费高清| 欧美男男青年gay1069videost| 成人国产精品免费观看动漫| 美日韩黄色大片| 亚洲自拍偷拍欧美| 中文字幕一区二| 国产精品视频一二| 久久久久久**毛片大全| 精品日产卡一卡二卡麻豆| 91福利社在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 国产美女在线精品| 国产精品综合二区| 激情伊人五月天久久综合| 日韩国产欧美在线视频| 亚洲高清在线视频| 亚洲福利视频三区| 亚洲精品成人悠悠色影视| 中文字幕在线播放不卡一区| 国产视频一区不卡| 久久九九影视网| 国产女人水真多18毛片18精品视频| 日韩一区二区三区在线| 日韩三级视频在线观看| 91麻豆精品国产91久久久久| 欧美日韩国产一级| 欧美精三区欧美精三区| 在线不卡一区二区| 制服丝袜中文字幕一区| 欧美日韩高清在线播放| 欧美日韩精品三区| 欧美一区二区三区电影| 欧美日韩国产高清一区二区| 欧美日本不卡视频| 欧美日韩精品一区二区三区蜜桃 | 久久精品夜色噜噜亚洲a∨| 亚洲精品一区二区三区香蕉| 欧美成人艳星乳罩| 精品欧美久久久| 日本一区二区三区在线不卡| 中文字幕免费不卡| 依依成人精品视频| 日韩av网站在线观看| 蜜乳av一区二区三区| 国产成人福利片| 91久久精品午夜一区二区| 欧美日韩一区久久| 精品国产伦一区二区三区观看方式 | av激情综合网| 欧美在线免费观看亚洲| 欧美一区二区三区免费视频 | 国产清纯白嫩初高生在线观看91| 国产拍欧美日韩视频二区| 国产精品国产三级国产普通话三级 | 国产激情视频一区二区在线观看| 成人做爰69片免费看网站| 色噜噜久久综合| 欧美一区二区三区成人| 久久精品视频免费| 亚洲视频在线一区观看| 视频一区在线播放| 国产精选一区二区三区| 日本韩国精品在线| 日韩欧美不卡一区| 亚洲另类在线制服丝袜| 久久99久久精品| 91在线免费播放| 欧美不卡123| 一区二区三区在线影院| 久久国内精品自在自线400部| 成人性生交大片免费看中文网站| 欧美丝袜丝交足nylons| 国产午夜亚洲精品羞羞网站| 艳妇臀荡乳欲伦亚洲一区| 久久97超碰色| 欧美日韩在线播放三区| 国产欧美一区二区精品性色 | 国产精品综合久久| 欧美日韩和欧美的一区二区| 国产喷白浆一区二区三区| 日本va欧美va精品发布| 99久久精品一区二区| 欧美一级日韩免费不卡| 亚洲欧美偷拍卡通变态| 国产老肥熟一区二区三区| 欧美精品一卡两卡| 亚洲欧美另类图片小说| 盗摄精品av一区二区三区| 日韩精品一区二区在线| 亚洲va欧美va天堂v国产综合| 成人高清在线视频| 久久久久久久久久久久久久久99| 午夜精品一区在线观看| 91在线观看污| 欧美国产在线观看| 久久99热这里只有精品| 欧美日韩国产综合一区二区三区| 亚洲美女屁股眼交3| 成人综合在线网站| 久久久久亚洲综合| 极品销魂美女一区二区三区| 欧美电影在线免费观看| 亚洲欧美韩国综合色| 91麻豆精品在线观看| 中文文精品字幕一区二区| 久久99久久精品| 欧美mv日韩mv国产网站| 麻豆精品新av中文字幕| 欧美肥妇bbw| 日本麻豆一区二区三区视频| 欧美日韩精品欧美日韩精品一| 亚洲精品自拍动漫在线| 99精品黄色片免费大全| 国产精品久99| 99久久精品国产网站| 国产精品人成在线观看免费| 国产精品一区二区在线播放| 久久综合九色综合97婷婷| 黄一区二区三区| 精品国产乱码久久久久久蜜臀 | 欧美哺乳videos| 激情偷乱视频一区二区三区| 26uuu色噜噜精品一区| 久久精品国产亚洲aⅴ| 日韩欧美激情一区| 久久国产尿小便嘘嘘| 久久日韩精品一区二区五区| 精品中文字幕一区二区小辣椒| 日韩精品一区二区三区蜜臀| 激情综合色丁香一区二区| 2017欧美狠狠色| 国产成人免费9x9x人网站视频| 国产日产欧美一区二区三区 | 欧美性感一区二区三区| 午夜精品久久久久| 日韩欧美你懂的| 国产高清无密码一区二区三区| 久久久久国产一区二区三区四区 | 色综合一区二区| 一区二区三区在线免费观看| 精品视频999| 麻豆视频观看网址久久| 精品国产精品一区二区夜夜嗨| 国产九九视频一区二区三区| 国产精品成人一区二区三区夜夜夜| 不卡av免费在线观看| 亚洲国产综合在线| 欧美mv日韩mv亚洲| 91在线国内视频| 日本成人中文字幕在线视频|