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

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

?? at24c02.c

?? c8051f020源代碼39個 使用Silicon Labs IDE 調試器
?? C
字號:
//參考程序A:AT24C02.C   SMBUS  24C02 讀/寫  2005.12.25
//程序功能:在AT24C02的地址00---3FH中依次存入連續的數據10H--4FH
//再依次從地址00---3FH中讀出數據并通過SAA1064驅動四位數碼管顯示出來.
//第一,二位數碼管顯示地址,第三,四位數碼管顯示存入該地址內的數據.
//顯示格式:
//存儲器的地址	存儲器單元的內容
//00H---3FH	40H---4FH
#include <c8051f020.h>                    // SFR declarations
#include <intrins.h>
#define  WRITE       0x00                 //  SMBUS尋址字節的寫標志位
#define  READ        0x01                 //  SMBUS尋址字節的讀標志位
// Device addresses
#define  CHIP_A        0xA0                //AT24C02器件自身的尋址字節
#define  CHIP_B        0x70                //AT24C02器件自身的尋址字節
#define  SMB_BUS_ERROR  0x0  //總線錯誤                                  
  //MT為主發送器,MR為主接收器
#define  SMB_START      0x08              // (MT & MR) 發送起始位
#define  SMB_RP_START   0x10              // (MT & MR) 重復起始位
#define  SMB_MTADDACK   0x18              // (MT) 發送從地址 + W 后收到ACK
#define  SMB_MTADDNACK  0x20              // (MT) 發送從地址 + W 后收到NACK
#define  SMB_MTDBACK    0x28              // (MT) 發送數據后收到ACK
#define  SMB_MTDBNACK   0x30              // (MT) 發送數據后收到NACK
#define  SMB_MTARBLOST  0x38              //(MT)競爭失敗
#define  SMB_MRADDACK   0x40              // (MR) 發送從地址 + R 后收到 ACK
#define  SMB_MRADDNACK  0x48              // (MR) 發送從地址 + R 后收到 NACK
#define  SMB_MRDACK     0x50              // (MR) 收到數據字節 后已發送ACK                                    
#define  SMB_MRDBNACK   0x58              // (MR) 收到數據字節 后已發送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;                      // 保存被收/發的數據字節
char xdata sendnumber;                  // 保存被收/發的數據字節的數目        
//unsigned char xdata  WORDADR;         //保存被傳送的數據在24C02中的首地址.
unsigned char xdata SENDMODE;           //SENDMODE作讀/寫控制字                       
unsigned char xdata  i,j,k,sla,n,m,p;
bit SM_BUSY;           //忙碌標志位                                        void sleep_ms( unsigned int count);       //延時
void SYSCLK_Init (void);                  //系統時鐘初始化
void DISPLAY(void);                       //通過SAA1064驅動四位數碼管顯示
void SMBUS_ISR (void);                    //中斷服務程序
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;                          // 關閉看們狗
   WDTCN = 0xad;
   SYSCLK_Init();                         // 時鐘初始化
   XBR0 = 0x01;                           // 選交叉開關	:P0.0-->SDA,P0.1-->CLK
   XBR2 = 0x40;                           // 交叉開關使能
   SMB0CN = 0x44;                         // 允許SMBUS, 應答返回AA(低電平
   SMB0CR = 0xc9;                   // SMBus 速率= 100 kHz,系統時鐘為11.0592MHZ
   EIE1 |= 2;                             // SMBus 中斷使能
   EA = 1;                                // 開中斷
   SM_BUSY = 0;                           //  SM_BUSY是忙碌標志位
   SI = 0;                                //SM_BUSY中斷標志位
   //寫64個連續的數據到AT24C02中去并依次存放.
//64個連續的數據的存放地址:00H--3fH.第一個數為10H,最后一個數為4FH.
   i=0x10;
   sla=CHIP_A;
  for  (j=0;j<0x40;j++)            //向24C02的000地址依次寫入64個數據,
  {                                //64個數據的數值從10H---4FH   
   SLA_SEND(sla, j, i,0x01);       // 寫入AT24C02
   i++;
   }
  for  (j=0;j<0x40;j++)          //從24C02的00地址依次連續讀出64個數據,
  {                              //64個數據的數值應該是從10H---3FH(連續存放)
   check=SLA_READ(sla, j,0x01);     
   DATA1[j]=check;               //讀出來的數據依次連續存入數組DATA[]中
   }
   for  (j=0;j<0x40;j++)     //把要顯示的兩位地址和兩位數據存入DATA2[]中           
  { i=DATA1[j];              
    k=i&0x0f;
	m=DATA2[k];              //j為地址,i=DATA1[j]=check,i地址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寫入五個數:SAA1064的控制字一字節,
  SLA_SEND(sla, p, i,0x01);     // 地址2字節,數據2字節.共五字節
}
}
 void SYSCLK_Init (void)
{
   int i;                               // i 用于延時計數
   OSCXCN = 0x67;                       // 先選擇外捕振蕩器,頻率位11.0592MHZ
   for (i=0; i < 256; i++) ;            // 再延時(>1ms),
   while (!(OSCXCN & 0x80)) ;           // 等待外部晶振穩定
   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位(忙碌標志位)為1                
   SLAW = (chip| WRITE);         // COMMAND = 7 個地址位 + 一位WRITE.
   WORD = word;                  // WORD中存放要送到24C02中去的數據(8位)
   WORDADR = wordadr;            // OP_CODE 中存放被傳送數據送入24C02的首地址.
   STO = 0;
   STA = 1;                         // 啟動數據傳輸
   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位(忙碌標志位)為1 
   SLAR = (chip| READ);             // COMMAND = 7 個地址位 + 一位READ
   WORDADR = wordadr;                // OP_CODE 中存放從24C02讀出數據的的首地址.
   STO = 0;
   STA = 1;                          // 啟動傳輸
   while(SM_BUSY);                   // 等待傳輸完成 
   return WORD;                      //返回讀出來的數據(一個字節)
}
void SMBUS_ISR (void) interrupt 7    //中斷服務程序
{
   switch (SMB0STA){                 // 根據中斷狀態碼跳轉
                                     //(SMB0STA 是中斷狀態寄存器)
       case SMB_START:	             //0x08, (MT & MR) 發送起始位
         SMB0DAT = SLAW ;            // 裝入被訪問的從芯片的寫地址
         STA = 0;                    // 人工清除 STA 位
         SI = 0;                     // 清除中斷標志位
         break;
       case SMB_RP_START:	         //0x10,(MT & MR) 重復發送起始位
         SMB0DAT = SLAR;             // 裝入被訪問的從芯片的讀地址
         STA = 0;                    // 人工清除 STA 位
         SI = 0;                     // 清除中斷標志位
         break;
       case SMB_MTADDACK:            //0x18 ,(MT) 發送從地址 + W 后收到ACK
         SMB0DAT = WORDADR;
         SI = 0;                     // 清除中斷標志位
         break;
       case SMB_MTADDNACK:     	    //0x20,(MT) 發送從地址 + W 后收到NACK
         STO = 1;
         STA = 1;
         SI = 0;                    // 清除中斷標志位
         break;
      case SMB_MTDBACK:		        //0x28,(MT) 發送數據后收到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;                          // 清除中斷標志
         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_();			
    }	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区四区四| 国产精品你懂的在线| 久久久不卡影院| 夜夜嗨av一区二区三区四季av| 精品亚洲国内自在自线福利| 91黄色免费版| 国产精品超碰97尤物18| 极品少妇一区二区| 欧美一区二区三区成人| 最近中文字幕一区二区三区| 国产一区二区三区香蕉| 欧美一区二区三区视频免费| 国产精品乱码久久久久久| 久久99国产精品久久99果冻传媒| 色综合视频一区二区三区高清| 日韩美女主播在线视频一区二区三区| 亚洲天堂福利av| www.亚洲色图| 日本一区二区动态图| 国产一区二区不卡在线| 亚洲精品在线网站| 久草在线在线精品观看| 日韩一级黄色大片| 五月天中文字幕一区二区| 在线观看欧美精品| 一区二区三区欧美视频| 色香色香欲天天天影视综合网| 久久久久国产成人精品亚洲午夜| 国产尤物一区二区| 2022国产精品视频| 国产一区二区在线电影| 久久先锋资源网| 国产美女一区二区三区| 日本一区二区免费在线| 国产精品一区二区三区网站| 2017欧美狠狠色| 国产麻豆精品在线| 中文字幕中文字幕在线一区| 99久久婷婷国产综合精品电影 | 69堂国产成人免费视频| 视频在线观看91| 在线播放国产精品二区一二区四区| 一个色在线综合| 欧美一区二区三区的| 久草精品在线观看| 中文字幕一区二区三区在线不卡| 99re视频精品| 亚洲成人动漫一区| 欧美一区二区女人| 国产精品自拍av| 自拍偷拍亚洲综合| 欧美区在线观看| 久久99精品国产.久久久久久| 欧美国产日韩精品免费观看| 91影院在线免费观看| 香蕉加勒比综合久久| 精品国精品自拍自在线| 风间由美一区二区av101| 亚洲精品视频在线观看网站| 欧美精品123区| 国产精品123区| 亚洲国产欧美在线| 精品国产免费久久| 在线视频你懂得一区| 久99久精品视频免费观看| 亚洲欧洲av一区二区三区久久| 欧美高清一级片在线| 国产传媒一区在线| 五月天欧美精品| 欧美韩日一区二区三区四区| 欧美日韩国产综合久久| 粉嫩av一区二区三区在线播放| 亚洲一区二区欧美| 国产精品私人自拍| 欧美一二三四在线| 色诱视频网站一区| 精品亚洲国产成人av制服丝袜 | 久久成人精品无人区| 中文字幕一区二区三区乱码在线 | 麻豆精品一二三| 亚洲嫩草精品久久| 久久综合九色综合97婷婷女人 | 色综合久久综合网欧美综合网| 麻豆中文一区二区| 亚洲欧美一区二区三区极速播放 | 亚洲gay无套男同| 国产欧美一区二区在线| 欧美二区乱c少妇| 97se亚洲国产综合自在线观| 激情成人综合网| 婷婷久久综合九色综合绿巨人 | 亚洲国产成人午夜在线一区| 欧美日韩国产精品自在自线| eeuss鲁片一区二区三区 | 美女www一区二区| 亚洲国产一区在线观看| 国产精品久久久久aaaa| 久久综合色8888| 精品国免费一区二区三区| 欧美剧情片在线观看| 欧美午夜理伦三级在线观看| 一本色道亚洲精品aⅴ| 丁香激情综合国产| 国产精一区二区三区| 六月丁香综合在线视频| 丝袜诱惑亚洲看片| 亚洲国产日日夜夜| 亚洲午夜视频在线观看| 亚洲一区二区视频在线观看| 亚洲尤物在线视频观看| 亚洲激情校园春色| 亚洲在线视频免费观看| 亚洲午夜久久久| 亚洲444eee在线观看| 亚洲午夜成aⅴ人片| 亚洲夂夂婷婷色拍ww47| 亚洲激情网站免费观看| 一区二区三区成人| 亚洲在线成人精品| 日韩国产欧美三级| 久久精品国产免费看久久精品| 久久国产日韩欧美精品| 韩国欧美国产1区| 国产成人精品免费在线| a级高清视频欧美日韩| 色综合天天做天天爱| 欧洲精品一区二区| 91麻豆精品国产91久久久久久久久 | 日韩电影免费一区| 国产一区二区三区免费看| 国产一区二区中文字幕| 成人美女在线观看| 色8久久精品久久久久久蜜| 在线一区二区视频| 56国语精品自产拍在线观看| 欧美第一区第二区| 国产精品你懂的在线欣赏| 一区二区三区精品在线| 日本中文在线一区| 国产成人综合网| 91搞黄在线观看| 日韩欧美国产一区二区在线播放 | 不卡的电影网站| 欧美亚洲国产一区二区三区| 91精品国产综合久久福利| 久久蜜桃av一区精品变态类天堂| 国产精品萝li| 蜜桃视频免费观看一区| 国产宾馆实践打屁股91| 欧美在线小视频| 久久夜色精品一区| 亚洲自拍偷拍图区| 国产成人av福利| 欧美三级日韩在线| 国产色产综合产在线视频| 一区二区三区不卡在线观看| 国产激情精品久久久第一区二区| 在线观看日韩电影| 久久综合九色综合97婷婷| 亚洲一区二区偷拍精品| 国产传媒一区在线| 欧美久久一二区| 国产精品高清亚洲| 老司机精品视频导航| 日本高清不卡aⅴ免费网站| 欧美mv日韩mv| 日日摸夜夜添夜夜添亚洲女人| 成人福利视频在线| 欧美不卡一区二区三区四区| 亚洲综合在线免费观看| 成人一区在线看| 欧美va在线播放| 亚洲一级二级在线| 99热99精品| 国产女人18水真多18精品一级做| 亚洲福利视频导航| 一本一道久久a久久精品| 久久精品一区二区三区av| 日产精品久久久久久久性色| 在线免费观看一区| 亚洲人成网站在线| 成人免费毛片app| 久久日一线二线三线suv| 男女性色大片免费观看一区二区| 在线观看日韩高清av| 亚洲男帅同性gay1069| 99久久精品国产精品久久| 国产欧美精品一区二区三区四区 | 麻豆成人91精品二区三区| 欧美午夜理伦三级在线观看| 亚洲欧美日本在线| 99re8在线精品视频免费播放| 国产日产亚洲精品系列| 国产精品99久久不卡二区| 久久久蜜臀国产一区二区| 国产最新精品精品你懂的| 久久亚洲一级片| 国产成人精品免费视频网站| 国产精品拍天天在线| 国产精品538一区二区在线|