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

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

?? 24c02test.c

?? 基于C8051F005的24C02存儲(chǔ)器的操作程序
?? C
字號(hào):
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <c8051f000.h>                 // SFR declarations
#include <stdio.h>
#include <intrins.h>

//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);                  //系統(tǒng)時(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 UART0_Init (void);
void SYSCLK_Init (void);
void PORT_Init (void);
//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------
#define  WRITE       0x00                 //  SMBUS尋址字節(jié)的寫(xiě)標(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  0x00  //總線錯(cuò)誤                                  
  //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)競(jìng)爭(zhēng)失敗
#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 
#define SYSCLK       11059200          // SYSCLK frequency in Hz
#define BAUDRATE     115200              // Baud rate of UART in bps
char DATA[6]={0x17,0x3f,0x06,0x5b,0x4f}; 
char SLAW,DATA1[6];                    // 保存從地址+ WRITE 位
char SLAR;                              // 保存從地址+ WRITE 位
char WORD;                      // 保存被收/發(fā)的數(shù)據(jù)字節(jié)
char xdata sendnumber;                  // 保存被收/發(fā)的數(shù)據(jù)字節(jié)的數(shù)目        
unsigned char xdata  WORDADR;         //保存被傳送的數(shù)據(jù)在24C02中的首地址.
unsigned char xdata SENDMODE;           //SENDMODE作讀/寫(xiě)控制字                       
unsigned char j,k,sla,n,p;
unsigned int i;
bit  SM_BUSY;                             //忙碌標(biāo)志位                                       
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void  main (void)
{
   unsigned char check,Y,i=0;              // 測(cè)試用的工作變量
   WDTCN = 0xde;                          // 關(guān)閉看們狗
   WDTCN = 0xad;
   UART0_Init ();
   SYSCLK_Init ();
   PORT_Init ();
   SMB0CN = 0x44;                         // 允許SMBUS, 應(yīng)答返回AA(低電平
   SMB0CR = 0xf8;                   // SMBus 速率= 100 kHz,系統(tǒng)時(shí)鐘為11.0592MHZ
   EIE1 |= 2;                             // SMBus 中斷使能
   EA = 1;                                // 開(kāi)中斷
   SM_BUSY = 0;                           //  SM_BUSY是忙碌標(biāo)志位
   SI = 0;                                //SM_BUSY中斷標(biāo)志位
   sla=CHIP_A;
  for  (j=0;j<0x06;j++)            //向24C02的000地址依次寫(xiě)入64個(gè)數(shù)據(jù),
   { 
   Y=DATA[i];                      //64個(gè)數(shù)據(jù)的數(shù)值從10H---4FH   
   SLA_SEND(sla, j,Y,0x01);       // 寫(xiě)入AT24C02
    i++;
    }
  for  (j=0;j<0x06;j++)          //從24C02的00地址依次連續(xù)讀出64個(gè)數(shù)據(jù),
  {                              //64個(gè)數(shù)據(jù)的數(shù)值應(yīng)該是從10H---3FH(連續(xù)存放)
   check=SLA_READ(sla, j,0x01);     
     DATA1[j]=check;               //讀出來(lái)的數(shù)據(jù)依次連續(xù)存入數(shù)組DATA[]中
  }

 
}
//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
// SLA_SEND
//-----------------------------------------------------------------------------
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 個(gè)地址位 + 一位WRITE.
   WORD = word;                  // WORD中存放要送到24C02中去的數(shù)據(jù)(8位)
   WORDADR = wordadr;            // OP_CODE 中存放被傳送數(shù)據(jù)送入24C02的首地址.
   STO = 0;
   STA = 1;                         // 啟動(dòng)數(shù)據(jù)傳輸
   while(SM_BUSY);                  // 等待傳輸完成
}
//-----------------------------------------------------------------------------
// SLA_READ
//-----------------------------------------------------------------------------
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 個(gè)地址位 + 一位READ
   WORDADR = wordadr;                // OP_CODE 中存放從24C02讀出數(shù)據(jù)的的首地址.
   STO = 0;
   STA = 1;                          // 啟動(dòng)傳輸
   while(SM_BUSY);                   // 等待傳輸完成 
   return WORD;                      //返回讀出來(lái)的數(shù)據(jù)(一個(gè)字節(jié))
}
//-----------------------------------------------------------------------------
// SMBUS_ISR
//-----------------------------------------------------------------------------
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 ;            // 裝入被訪問(wèn)的從芯片的寫(xiě)地址
         STA = 0;                    // 人工清除 STA 位
         SI = 0;                     // 清除中斷標(biāo)志位
         break;
       case SMB_RP_START:	         //0x10,(MT & MR) 重復(fù)發(fā)送起始位
         SMB0DAT = SLAR;             // 裝入被訪問(wèn)的從芯片的讀地址
         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;
      }
}
//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
void PORT_Init (void)
{

    	XBR0 = 0x27;                    	// XBAR0: Initial Reset Value
    	XBR1 = 0x00;	                    // XBAR1: Initial Reset Value
    	XBR2 = 0x5c;                    	// XBAR2: Initial Reset Value
    	PRT0CF = 0x14;                      // Output configuration for P0 
      	PRT1CF = 0x10; // Output configuration for P3 
       	PRT3CF = 0x01; // Output configuration for P3 

}
//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
                                  // delaynms counter
      OSCXCN = 0x67;                      // start external oscillator with
      for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
      while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
      OSCICN = 0x88;                      // select external oscillator as SYSCLK                              
}
//-----------------------------------------------------------------------------
// UART0_Init
//-----------------------------------------------------------------------------
void UART0_Init (void)
{
   SCON    = 0x50;                     // SCON: mode 1, 8-bit UART, enable RX
   TMOD    = 0x20;                     // TMOD: timer 1, mode 2, 8-bit reload
   TH1    = -(SYSCLK/BAUDRATE/16);     // set Timer1 reload value for baudrate
   TR1    = 1;                         // start Timer1
   CKCON |= 0x10;                      // Timer1 uses SYSCLK as time base
   PCON  |= 0x80;                      // SMOD = 1
   TI     = 1;                         // Indicate TX ready
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡高清在线观看视频| 99久久777色| 欧美激情一区二区三区四区| 一本一道波多野结衣一区二区| 美女在线观看视频一区二区| 国产精品久久久久久久久动漫| 欧美巨大另类极品videosbest| 成人久久久精品乱码一区二区三区| 天天射综合影视| 亚洲欧美乱综合| 久久久国产综合精品女国产盗摄| 欧美日韩中文另类| 波多野结衣在线一区| 91丨porny丨户外露出| 日本中文字幕不卡| 亚洲欧美日本在线| 国产欧美日韩另类视频免费观看| 91精品国产色综合久久ai换脸| 成人美女在线视频| 韩国av一区二区三区在线观看| 婷婷久久综合九色综合伊人色| 亚洲三级理论片| 久久精品一二三| 久久天天做天天爱综合色| 欧美日韩国产大片| 欧美日韩中文另类| 欧洲生活片亚洲生活在线观看| 成人动漫在线一区| 国产成人av一区二区三区在线| 久草热8精品视频在线观看| 日本午夜精品一区二区三区电影| 亚洲一区二区免费视频| 一区二区三区在线视频观看58| 国产精品乱子久久久久| 国产视频视频一区| 欧美国产日韩一二三区| 国产精品水嫩水嫩| 国产欧美久久久精品影院| 久久中文娱乐网| 久久久精品免费免费| 精品国产一区二区三区不卡| 欧美一区二区三区免费视频 | 久久99精品国产| 裸体健美xxxx欧美裸体表演| 青青国产91久久久久久| 日本亚洲免费观看| 伦理电影国产精品| 国产一区二区在线视频| 国产精品一卡二卡| 国产成人精品影视| 99免费精品在线观看| 91免费视频网址| 欧美午夜在线一二页| 欧美人伦禁忌dvd放荡欲情| 欧美精品v国产精品v日韩精品| 欧美精品在欧美一区二区少妇| 91精品国产品国语在线不卡| 欧美v国产在线一区二区三区| 精品久久一二三区| 国产欧美一区二区精品婷婷| 国产精品美女久久久久久久 | 在线不卡免费欧美| 欧美成人一区二区三区| 久久久夜色精品亚洲| 国产精品久久久久婷婷| 一区二区三区鲁丝不卡| 日韩制服丝袜av| 国产高清不卡一区二区| 91小视频免费观看| 69堂精品视频| 久久久久久久久久久电影| 国产精品国产三级国产| 北岛玲一区二区三区四区| 色婷婷综合久久久久中文一区二区| 欧美亚洲国产bt| 久久新电视剧免费观看| 亚洲色欲色欲www在线观看| 三级欧美在线一区| 国产91在线|亚洲| 欧美三级视频在线| 久久久久久久久久久黄色| 亚洲精品高清视频在线观看| 日韩av高清在线观看| www.欧美日韩国产在线| 欧美电影一区二区| 中文字幕一区二区三区在线观看| 亚洲高清在线精品| 成人综合日日夜夜| 7777精品久久久大香线蕉| 中文字幕一区二区三区四区 | 国产午夜精品美女毛片视频| 亚洲黄色小视频| 狠狠色2019综合网| 欧洲另类一二三四区| 26uuu精品一区二区| 一区二区免费在线| 成人妖精视频yjsp地址| 91精品国产美女浴室洗澡无遮挡| 最新国产成人在线观看| 麻豆精品一区二区三区| 日本久久电影网| 久久日韩粉嫩一区二区三区 | 国产69精品久久777的优势| 精品视频1区2区3区| 国产女人18水真多18精品一级做| 亚洲成年人影院| 99re这里只有精品视频首页| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲国产精品欧美一二99 | 欧美xfplay| 肉色丝袜一区二区| 色就色 综合激情| 欧美激情一区在线| 国产福利不卡视频| 欧美一区二区三区免费视频| 一区二区三区资源| 99天天综合性| 亚洲国产精品成人综合色在线婷婷 | 欧美高清你懂得| 亚洲精品成a人| av在线不卡网| 日本一区二区三区电影| 国产精品白丝av| 久久看人人爽人人| 狠狠色综合日日| 精品国精品自拍自在线| 蜜臀av性久久久久蜜臀av麻豆| 欧美美女直播网站| 亚洲综合小说图片| 欧美性大战久久久久久久蜜臀 | 中日韩免费视频中文字幕| 欧美日韩精品一区二区三区蜜桃| 国产精品久久久久三级| 不卡的看片网站| 国产精品初高中害羞小美女文| 成人性色生活片| 中文字幕制服丝袜一区二区三区| 成人午夜精品一区二区三区| 国产肉丝袜一区二区| 国产精品乡下勾搭老头1| 欧美经典一区二区| 成人av片在线观看| 中文字幕综合网| 91国偷自产一区二区开放时间 | 日韩限制级电影在线观看| 日韩电影在线看| 欧美大片在线观看一区二区| 免费在线看成人av| 精品国产一区二区三区久久影院| 国产一区高清在线| 欧美精彩视频一区二区三区| 99久久婷婷国产综合精品电影 | av影院午夜一区| 一区二区三区中文字幕| 欧美日韩国产天堂| 美女国产一区二区三区| 久久先锋影音av鲁色资源| 国产99久久久久久免费看农村| 亚洲国产经典视频| 日本黄色一区二区| 午夜精品123| 久久久精品免费网站| 91在线视频18| 免费看精品久久片| 国产精品视频观看| 色综合亚洲欧洲| 日韩国产高清影视| 国产亚洲午夜高清国产拍精品 | av中文字幕亚洲| 天天操天天综合网| 久久久亚洲高清| 色国产综合视频| 日韩主播视频在线| 国产女主播一区| 欧美天堂亚洲电影院在线播放| 另类成人小视频在线| 国产精品视频一二三| 欧美伊人久久久久久久久影院| 蜜桃精品视频在线| 中文字幕一区在线观看| 欧美一区二区三区在| 懂色av一区二区在线播放| 亚洲高清在线视频| 国产精品色在线观看| 欧美日韩中字一区| 丁香六月久久综合狠狠色| 午夜影视日本亚洲欧洲精品| 国产午夜亚洲精品午夜鲁丝片| 91蜜桃免费观看视频| 久久精品国产成人一区二区三区| 中文字幕一区二区三区不卡| 欧美日韩1234| av激情亚洲男人天堂| 裸体一区二区三区| 亚洲一区在线播放| 国产精品女上位| 日韩视频一区二区| 欧美日韩一区二区电影| 成人免费视频播放| 激情六月婷婷久久|