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

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

?? smbus.c

?? JTAGICEmkII的硬件和軟件資料,可以和ATMEL原廠的比較一下
?? C
字號(hào):
/***************************************Copyright (c)*************************************
**
/*--------------文件信息------------------------------------------------------------------  
**文 件 名:SMBUS.C 
**創(chuàng) 建 人:王勝
**日    期:2007年2月4日  
**描    述:
**         本庫(kù)函數(shù)可實(shí)現(xiàn)I2C總線一次讀/寫多個(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     : 為讀/寫數(shù)據(jù)指針,當(dāng)為讀取時(shí),通過(guò)指針直接修改變量的值。
**         number  : 為每次讀/寫數(shù)據(jù)的字節(jié)數(shù)。
**
**         硬件使用信息:
**         SMBUS通信接口: SDA-->P0.6  SCL-->P0.7
**
*******************************************************************************************/

#include <c8051f020.h>

//與SMBUS操作有關(guān)變量定義
bit SM_BUSY;                       //SMB0忙標(biāo)志位.
unsigned char SMBMODE;             //SMB0讀寫控制字CHIP_SELECT+R/W.
unsigned char SMB_num;             //SMB0一次讀寫的字節(jié)數(shù)..
unsigned char start_adr;           //SMB0讀寫字節(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位純地址,不含讀寫位)                                      
            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;          // 確定寫數(shù)據(jù)大小
   while (SM_BUSY);         // 若SMBUS忙碌就等待
   SM_BUSY = 1;             // SM_BUSY是忙碌標(biāo)志位 
   SMBMODE=chip & 0xfe;
   start_adr=wordadr;       // 裝載寫字節(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位純地址,不含讀寫位)                                      
            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;          //確定寫數(shù)據(jù)大小
   while (SM_BUSY);           // 若SMBUS忙碌就等待
   SM_BUSY = 1;               // SM_BUSY是忙碌標(biāo)志位 
   SMBMODE = chip | 0x01;   
   start_adr = wordadr;       //裝載寫字節(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讀寫字節(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;   //如果為寫操作則將數(shù)據(jù)寫入SMB0DAT.
                 SMB_Dat++;		
				 SMB_num--;
              }
          }
		 else           //如果數(shù)據(jù)寫入完畢則發(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一区二区三区免费野_久草精品视频
久久久久久久久久久久久女国产乱| 亚洲妇女屁股眼交7| 精品久久久久久无| 日韩一区二区免费视频| 欧美一区二区三区在| 4438x亚洲最大成人网| 69av一区二区三区| 欧美高清dvd| 日韩一级黄色大片| 日韩欧美在线影院| 精品国产99国产精品| 精品久久久久久无| 国产欧美精品一区二区色综合朱莉 | 亚洲视频免费在线观看| 国产精品国产三级国产三级人妇| 欧美国产97人人爽人人喊| 国产精品色婷婷久久58| 国产精品久久久久影院老司| 日韩美女久久久| 亚洲一级片在线观看| 午夜精品123| 激情综合网最新| 成人中文字幕电影| 一本久久a久久精品亚洲 | 国产精品久久久久久亚洲伦| 中文字幕一区二区三| 亚洲精品成人悠悠色影视| 一区二区三区精品视频在线| 日韩精品免费视频人成| 国产一区二区影院| 91在线视频免费观看| 欧美日韩高清影院| 久久夜色精品国产噜噜av| 国产精品人人做人人爽人人添| 亚洲黄色录像片| 青青草97国产精品免费观看| 国产精品亚洲а∨天堂免在线| 91美女片黄在线| 3d成人h动漫网站入口| 久久先锋影音av鲁色资源网| 18成人在线观看| 日韩成人伦理电影在线观看| 国产乱人伦精品一区二区在线观看| 成人av资源在线| 4438x成人网最大色成网站| 欧美激情综合五月色丁香小说| 亚洲综合999| 黄色成人免费在线| 99国产精品一区| 欧美一区二区三区日韩| 国产精品美女久久久久久久| 亚洲aⅴ怡春院| 懂色av一区二区三区免费看| 欧美日韩视频在线第一区 | 久久久久久久久久久久久女国产乱| 中文字幕一区二区视频| 蜜臀99久久精品久久久久久软件| 成人性生交大片免费看视频在线| 欧美日韩精品免费| 国产精品久线在线观看| 日本午夜精品视频在线观看 | 欧美疯狂性受xxxxx喷水图片| 久久精品人人做人人综合| 亚洲国产一区二区视频| 国产.欧美.日韩| 宅男在线国产精品| 亚洲欧美经典视频| 国产不卡视频在线观看| 91精品国产综合久久久久久漫画| 亚洲天堂中文字幕| 国产精品一区二区在线播放| 777xxx欧美| 亚洲欧美国产三级| 国产精华液一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 一区视频在线播放| 精品一区二区免费| 欧美日韩精品专区| 一区二区三区91| 成人精品一区二区三区中文字幕| 日韩欧美视频一区| 首页综合国产亚洲丝袜| 欧美亚洲国产一卡| 亚洲激情av在线| 不卡av电影在线播放| 久久久亚洲国产美女国产盗摄| 日本aⅴ免费视频一区二区三区| 色婷婷国产精品| ...xxx性欧美| 成人精品国产免费网站| 久久精品一区二区三区av| 喷水一区二区三区| 欧美精品高清视频| 亚洲成人av福利| 欧美午夜精品一区| 一区二区三区视频在线看| 99久久精品国产导航| 国产无人区一区二区三区| 韩国av一区二区三区在线观看| 日韩一区二区三区视频| 美女视频黄久久| 91精品国产欧美一区二区| 午夜精品久久久久久久蜜桃app| 日本道精品一区二区三区| 亚洲欧美激情一区二区| 91官网在线免费观看| 亚洲美女偷拍久久| 日本韩国精品在线| 亚洲香蕉伊在人在线观| 欧美视频自拍偷拍| 视频一区视频二区中文字幕| 欧美另类z0zxhd电影| 日韩二区三区在线观看| 日韩视频中午一区| 精品一区二区三区免费毛片爱| 精品免费日韩av| 国产一区亚洲一区| 国产精品麻豆久久久| 91亚洲精品乱码久久久久久蜜桃| 亚洲欧洲综合另类在线| 欧美日韩激情在线| 日本成人中文字幕在线视频| 日韩欧美成人一区二区| 国产精品亚洲人在线观看| 中文字幕日本不卡| 欧美视频一区在线观看| 青青草一区二区三区| 国产性天天综合网| 91免费在线视频观看| 亚洲午夜免费电影| 日韩视频一区二区在线观看| 激情五月激情综合网| 国产精品动漫网站| 欧美日韩一卡二卡三卡| 蜜桃精品视频在线| 日本一区二区在线不卡| 91黄色免费网站| 青娱乐精品视频| 欧美韩日一区二区三区四区| 色婷婷av一区| 蜜臀av在线播放一区二区三区| 久久精品人人做| 色婷婷av一区| 久久精品国产99| 国产精品福利av| 日韩一区二区在线观看视频| 丁香啪啪综合成人亚洲小说| 一区二区三区免费看视频| 日韩三级伦理片妻子的秘密按摩| 成人午夜电影久久影院| 午夜电影网一区| 国产欧美一区视频| 欧美日韩三级一区| 国产福利精品一区| 性做久久久久久| 国产视频视频一区| 在线免费精品视频| 国产麻豆精品久久一二三| 一个色妞综合视频在线观看| 精品久久久久久无| 欧美性欧美巨大黑白大战| 国产麻豆成人精品| 亚洲福利一区二区三区| 国产农村妇女毛片精品久久麻豆 | 国产精品18久久久| 午夜精品久久久久久久99樱桃| 国产欧美日韩久久| 欧美一级理论片| 色婷婷久久99综合精品jk白丝| 韩国av一区二区三区四区| 亚洲一区二区视频在线| 国产婷婷精品av在线| 69堂国产成人免费视频| 97se狠狠狠综合亚洲狠狠| 激情文学综合网| 日韩激情在线观看| 一区二区三区免费网站| 国产精品狼人久久影院观看方式| 日韩一区二区三区视频在线观看| 91久久精品一区二区三| 国产99久久精品| 久88久久88久久久| 午夜欧美在线一二页| 自拍偷在线精品自拍偷无码专区| 精品国产免费人成电影在线观看四季| 欧美在线免费视屏| 99久久99久久综合| 国产高清精品在线| 精品亚洲国内自在自线福利| 日韩专区中文字幕一区二区| 亚洲精品福利视频网站| 国产精品国模大尺度视频| 国产偷v国产偷v亚洲高清| 久久综合九色综合欧美98| 在线不卡免费av| 欧美日韩精品一二三区| 欧美日韩一级大片网址| 色嗨嗨av一区二区三区| 91小视频在线| 色综合久久综合中文综合网|