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

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

?? smbus.c

?? 書(shū)中詳細(xì)說(shuō)明了多路數(shù)據(jù)采集的方法,以及怎么樣用AD來(lái)采集數(shù)據(jù)喲,大家不妨看看嘛,說(shuō)不定有所幫助喲?
?? C
字號(hào):
/***************************************Copyright (c)*************************************
**
/*--------------文件信息------------------------------------------------------------------  
**文 件 名:SMBUS.C 
**創(chuàng) 建 人:王勝
**日    期:2007年2月4日  
**描    述:
**         本庫(kù)函數(shù)可實(shí)現(xiàn)I2C總線一次讀/寫(xiě)多個(gè)字節(jié)操作,將這兩個(gè)文件復(fù)制到您的工程目錄下,在
**         主函數(shù)中使用頭文件包含語(yǔ)句  #include "SMBUS.h" 即可,其中包含三個(gè)函數(shù):
**
**         SMBUS初始化函數(shù):
**         void SMBus_Init(void);
**
**         多個(gè)字節(jié)數(shù)據(jù)的發(fā)送函數(shù):
**         void SMBUS_Puts(
**                            unsigned char chip,
**						      unsigned char wordadr,
**						      char *dat,
**						      unsigned char number
**						  );
**
**         多個(gè)字節(jié)數(shù)據(jù)的讀取函數(shù):
**         void SMBUS_Gets(
**                            unsigned char chip,
**							  unsigned char wordadr,
**							  char *dat,
**							  unsigned char number
**						  );
**
**         輸入變量定義如下:
**         chip    : 為I2C器件從地址,本實(shí)驗(yàn)板3個(gè)I2C器件(ZLG7290,24C02,PCF8563)的從地址定義                 
**                  (不包括R/W的控制)在頭文件"SMBUS.h"中有定義。
**         wordadr : 為I2C器件內(nèi)部寄存器從器件子地址。
**         dat     : 為讀/寫(xiě)數(shù)據(jù)指針,當(dāng)為讀取時(shí),通過(guò)指針直接修改變量的值。
**         number  : 為每次讀/寫(xiě)數(shù)據(jù)的字節(jié)數(shù)。
*******************************************************************************************/

#include <c8051f020.h>

//與SMBUS操作有關(guān)變量定義
bit SM_BUSY;                       //SMB0忙標(biāo)志位.
unsigned char SMBMODE;             //SMB0讀寫(xiě)控制字CHIP_SELECT+R/W.
unsigned char SMB_num;             //SMB0一次讀寫(xiě)的字節(jié)數(shù)..
unsigned char start_adr;           //SMB0讀寫(xiě)字節(jié)在器件中的起始地址.
char          *SMB_Dat;            //SMBUS中斷傳輸數(shù)據(jù)指針

/******************************************************************************************/ 
/*函數(shù)名稱:SMBus_Init()                                                                  */
/*函數(shù)功能:SMBus初始化函數(shù)                                                               */
/*輸入?yún)?shù):無(wú)                                                                            */
/*輸出參數(shù):無(wú)                                                                            */
/******************************************************************************************/ 
void SMBus_Init(void)       
{
    SMB0CN    = 0x44;  //允許SMBUS, 應(yīng)答返回AA(低電平有效)
    SMB0CR    = 0x00;  //配置傳送速度為42Kbit/s
    EIE1     |= 0x02;  //使能SMBUS中斷
    EIP1     |= 0x02;  //設(shè)置SMBUS中斷為高優(yōu)先級(jí)
}
                                                        
/******************************************************************************************/
/*函數(shù)名稱:SMBUS_Puts()                                                                  */
/*函數(shù)功能:SMBUS 總線綜合發(fā)送函數(shù),向從機(jī)發(fā)送number個(gè)字節(jié)的數(shù)據(jù)                          */
/*入口參數(shù):chip     從機(jī)地址(7位純地址,不含讀寫(xiě)位)                                      
            wordadr  從機(jī)的子地址
			data     待發(fā)送的數(shù)據(jù)指針 
			number   發(fā)送數(shù)據(jù)的字節(jié)數(shù)                                                     */                                                     
/*出口參數(shù):無(wú)                                                                            */
/******************************************************************************************/

void SMBUS_Puts(unsigned char chip,unsigned char wordadr,char *dat,unsigned char number)
{  
   SI = 0;
   SMB_num=number;          // 確定寫(xiě)數(shù)據(jù)大小
   while (SM_BUSY);         // 若SMBUS忙碌就等待
   SM_BUSY = 1;             // SM_BUSY是忙碌標(biāo)志位 
   SMBMODE=chip & 0xfe;
   start_adr=wordadr;       // 裝載寫(xiě)字節(jié)起始地址
   SMB_Dat= dat;
   STO = 0;
   STA = 1;  
   while (SM_BUSY);
}
 
/******************************************************************************************/
/*函數(shù)名稱:SMBUS_Gets()                                                                  */
/*函數(shù)功能:SMBUS 總線綜合接收函數(shù),從從機(jī)接收number個(gè)字節(jié)的數(shù)據(jù)                          */
/*入口參數(shù):chip     從機(jī)地址(7位純地址,不含讀寫(xiě)位)                                      
            wordadr  從機(jī)的子地址
			*data    保存接收到的數(shù)據(jù) 
			number   讀取數(shù)據(jù)的字節(jié)數(shù)                                                     */                                                     
/*出口參數(shù):無(wú)                                                                            */
/******************************************************************************************/  

void SMBUS_Gets(unsigned char chip,unsigned char wordadr,char *dat,unsigned char number)
{
   SI = 0;
   SMB_num = number;          //確定寫(xiě)數(shù)據(jù)大小
   while (SM_BUSY);           // 若SMBUS忙碌就等待
   SM_BUSY = 1;               // SM_BUSY是忙碌標(biāo)志位 
   SMBMODE = chip | 0x01;   
   start_adr = wordadr;       //裝載寫(xiě)字節(jié)起始地址
   SMB_Dat =dat;    
   STO = 0;
   STA = 1; 
   while (SM_BUSY); 
}

//SMBUS中斷服務(wù)函數(shù)
void SMBUS_ISR (void) interrupt 7
{
   switch (SMB0STA)
   {                  
      case  0x08:					    //(MT & MR) 發(fā)送起始位
         SMB0DAT = (SMBMODE & 0xFE);    //發(fā)送從器件地址 + W
         STA = 0;                      
         break;
      case  0x10:				        //(MT & MR) 重復(fù)起始位
         SMB0DAT = (SMBMODE | 0x01);    // 發(fā)送從器件地址 + R.
         STA = 0;
         break;
      case 0x18:				        //(MT) 發(fā)送從地址 + W 后收到ACK
         SMB0DAT = start_adr;           // 發(fā)送SMB0讀寫(xiě)字節(jié)在器件中的起始地址.
         break;
      case  0x20:				        //(MT) 發(fā)送從地址 + W 后收到NACK
         STO = 1;
         STA = 1;
         break;
      case  0x28:					    //(MT) 發(fā)送數(shù)據(jù)后收到ACK
         if(SMB_num)
		 {							    
             if (SMBMODE & 0x01)        // 如果為讀操作則重新啟動(dòng)總線.
			 {     
                 STO = 0;
                 STA = 1;
           	  } 
			 else 
			 { 
                 SMB0DAT = *SMB_Dat;   //如果為寫(xiě)操作則將數(shù)據(jù)寫(xiě)入SMB0DAT.
                 SMB_Dat++;		
				 SMB_num--;
              }
          }
		 else           //如果數(shù)據(jù)寫(xiě)入完畢則發(fā)送停止信號(hào).
		 { 
             STO = 1;
             SM_BUSY = 0; 
          }
         break;
      case  0x30:       //(MT) 發(fā)送數(shù)據(jù)后收到NACK
         STO = 1;
         STA = 1;
         break;
      case  0x38 :	    //(MT)競(jìng)爭(zhēng)失敗
         STO = 1;
         STA = 1;
         break;
      case  0x40:       //(MR) 發(fā)送從地址 + R 后收到 ACK
         if(SMB_num==1) //如果只讀一個(gè)字節(jié)則將應(yīng)答位AA清0,
		  AA = 0;       //收到數(shù)據(jù)以后不發(fā)送應(yīng)答位               
         else
		 AA = 1;        //如果讀字節(jié)數(shù)大于1則收到數(shù)據(jù)以后發(fā)送應(yīng)答位
         break;
      case  0x48:	    //(MR) 發(fā)送從地址 + R 后收到 NACK
         STO = 0;
         STA = 1;
         break;
      case  0x50:		//(MR) 收到數(shù)據(jù)字節(jié) 后已發(fā)送ACK  
		 if(SMB_num>2)
		 {								 
            *SMB_Dat = SMB0DAT;  
            SMB_Dat++;
			SMB_num--;
			AA=1;           
          }
		 else if(SMB_num ==2)
		 { 
			 *SMB_Dat = SMB0DAT;  
             SMB_Dat++;
			 SMB_num--;
			 AA=0;
          }                  
          break;
      case  0x58:	  //(MR) 收到數(shù)據(jù)字節(jié) 后已發(fā)送NACK 
         *SMB_Dat = SMB0DAT;
         STO = 1;
         SM_BUSY = 0;                   
         break;
      default:
         STO = 1;                         
         SM_BUSY = 0;
         break;
      }
     SI=0;    // 清除中斷標(biāo)志
 }



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类欧美日韩国产在线| 国产高清不卡二三区| 欧美激情一区二区| 欧美日韩色一区| 国产69精品久久久久毛片| 日韩在线观看一区二区| 亚洲精品第一国产综合野| 久久女同性恋中文字幕| 欧美高清视频不卡网| 91丝袜美腿高跟国产极品老师| 国产乱码精品一区二区三区五月婷| 一区二区成人在线| 亚洲日本青草视频在线怡红院| 久久免费午夜影院| 2023国产精品| 日韩精品一区二| 91精品国产入口| 欧美日韩久久久一区| 91丨porny丨最新| 成人激情校园春色| 国产99久久久国产精品潘金| 精品一区二区成人精品| 日本少妇一区二区| 日韩精品一卡二卡三卡四卡无卡| 亚洲激情男女视频| 亚洲免费视频中文字幕| 国产精品久久影院| 国产精品拍天天在线| 国产日韩在线不卡| 国产精品水嫩水嫩| 欧美国产亚洲另类动漫| 国产清纯在线一区二区www| 久久蜜桃香蕉精品一区二区三区| 精品国产乱码久久| 久久一夜天堂av一区二区三区| 精品日韩av一区二区| 久久伊人中文字幕| 欧美精品一区二区三区蜜桃视频 | 亚洲一级二级三级| 亚洲综合精品久久| 国产大陆a不卡| 国产综合久久久久久鬼色 | 国产成人精品www牛牛影视| 国产精品一区在线观看你懂的| 韩国欧美国产1区| 国产成人激情av| 成人av资源在线观看| hitomi一区二区三区精品| 91理论电影在线观看| 在线观看成人小视频| 欧美老年两性高潮| 日韩视频永久免费| 国产三级一区二区| 亚洲视频小说图片| 亚洲成av人影院| 麻豆精品新av中文字幕| 国产高清在线精品| 91美女片黄在线观看91美女| 欧美日韩精品一区二区| 精品久久国产字幕高潮| 中文字幕一区二区视频| 亚洲综合在线视频| 蜜桃av噜噜一区二区三区小说| 国产一本一道久久香蕉| 91视频一区二区三区| 欧美高清www午色夜在线视频| 久久亚洲一级片| 亚洲精品中文字幕在线观看| 丝袜亚洲另类欧美| 从欧美一区二区三区| 在线免费观看视频一区| 日韩欧美中文一区| 国产精品国产三级国产普通话蜜臀| 一区二区三区.www| 精品亚洲免费视频| 在线观看区一区二| 久久在线观看免费| 亚洲福利视频一区二区| 国产盗摄一区二区三区| 欧美日韩国产在线播放网站| 26uuu国产电影一区二区| 亚洲综合色视频| 国产伦理精品不卡| 欧美日韩国产一级二级| 欧美激情在线一区二区三区| 首页综合国产亚洲丝袜| 国产aⅴ精品一区二区三区色成熟| 欧洲精品在线观看| 中文字幕乱码一区二区免费| 日韩国产欧美在线播放| 99精品视频中文字幕| 日韩三级高清在线| 亚洲美女偷拍久久| 国产不卡免费视频| 91精品国产一区二区| 亚洲精品免费播放| 国产a久久麻豆| 日韩欧美一级在线播放| 一区二区三区鲁丝不卡| 国产不卡视频在线播放| 欧美一区二区三区喷汁尤物| 一区二区三区四区乱视频| 国产精品性做久久久久久| 欧美夫妻性生活| 亚洲精品大片www| 成人av资源在线观看| 五月天激情综合| 99热这里都是精品| 久久久99精品久久| 老汉av免费一区二区三区| 欧美人体做爰大胆视频| 一区二区三区欧美| 91美女福利视频| 亚洲色图一区二区| 99久久婷婷国产综合精品电影| 精品国产凹凸成av人导航| 日韩国产精品91| 欧美日韩高清在线播放| 亚洲成人一区在线| 欧美亚洲尤物久久| 亚洲成人自拍一区| 欧美日韩免费视频| 亚洲国产另类av| 欧美日韩国产大片| 日韩黄色片在线观看| 欧美老人xxxx18| 日韩国产精品久久| 日韩精品一区二区三区视频在线观看| 日韩经典一区二区| 欧美一区二区久久| 久久99最新地址| 久久久三级国产网站| 国产·精品毛片| 综合欧美一区二区三区| 91免费国产视频网站| 一区二区在线电影| 欧美人牲a欧美精品| 午夜精品视频在线观看| 欧美一级电影网站| 韩国成人福利片在线播放| 久久麻豆一区二区| 东方欧美亚洲色图在线| 国产精品第13页| 在线观看av一区| 午夜不卡在线视频| 欧美zozozo| 国产成人福利片| 亚洲视频中文字幕| 欧美精品123区| 国产一区二区视频在线| 国产精品美女久久久久av爽李琼| 91视频.com| 午夜激情综合网| 2020国产精品久久精品美国| 不卡视频免费播放| 亚洲一二三四区不卡| 日韩欧美综合在线| 成人h版在线观看| 午夜成人在线视频| 久久免费的精品国产v∧| 91免费看片在线观看| 丝袜美腿成人在线| 国产欧美精品日韩区二区麻豆天美| 日韩在线观看一区二区| 日韩精品欧美成人高清一区二区| 欧美三级视频在线播放| 乱一区二区av| 国产精品美女一区二区在线观看| 91久久精品一区二区| 美国欧美日韩国产在线播放| 亚洲国产精品精华液ab| 欧美日韩综合不卡| 国产精品18久久久久久久久| 亚洲日本欧美天堂| 日韩欧美国产成人一区二区| 99久久国产免费看| 美女精品一区二区| 亚洲免费视频成人| 精品动漫一区二区三区在线观看| 91影院在线观看| 久久99国产精品免费网站| 最新热久久免费视频| 欧美一区二区三区四区久久| 99久久精品情趣| 精品综合免费视频观看| 亚洲丝袜自拍清纯另类| 日韩精品一区二区在线| 在线观看国产日韩| 成人午夜免费电影| 美脚の诱脚舐め脚责91| 亚洲综合丁香婷婷六月香| 国产日韩欧美精品综合| 欧美一级搡bbbb搡bbbb| 91免费观看国产| 国产v日产∨综合v精品视频| 三级亚洲高清视频| 亚洲精品国产a| 国产精品美女视频| 精品久久一二三区| 欧美人狂配大交3d怪物一区 |