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

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

?? smbus_master_f33x.c

?? 一些C8051f330的C程序
?? C
字號(hào):
//-----------------------------------------------------------------------------
//
// 文件名:SMBus_Master_F33x.c
//
// 編寫人:JS
//
// 編寫時(shí)間:2004/1/3
//
// 目標(biāo)器件: C8051F33x
//
// 編譯工具: Silicon Laboratories IDE
//
//-----------------------------------------------------------------------------
//程序描述:
//   C8051F330作為主器件,C8051F310作為從器件,定時(shí)器1為I2C時(shí)鐘源,定時(shí)器3為SCL低電平超時(shí)檢測(cè),
//此程序?yàn)閱巫止?jié)收發(fā).收發(fā)數(shù)據(jù)可以由用戶自己定義。

//-----------------------------------------------------------------------------
//頭文件包含
//-----------------------------------------------------------------------------
#include <c8051f330.h>

//-----------------------------------------------------------------------------
//常量定義
//-----------------------------------------------------------------------------
#define  SYSCLK         24500000             // 系統(tǒng)工作頻率
#define  SMB_FREQUENCY  50000                // SCL時(shí)鐘 
#define  WRITE          0x00                 // SMBus 寫命令
#define  READ           0x01                 // SMBus 讀命令

//-----------------------------------------------------------------------------
// 設(shè)備地址 (高7位)
//-----------------------------------------------------------------------------
#define  F310_SLAVE     0xf0                 //  從機(jī)設(shè)備地址

//-----------------------------------------------------------------------------
// 狀態(tài)向量(只有高4位)
//-----------------------------------------------------------------------------
#define  SMB_MTSTA      0xE0                 // 準(zhǔn)備發(fā)送
#define  SMB_MTDB       0xC0                 // 發(fā)送數(shù)據(jù)字節(jié)
#define  SMB_MRDB       0x80                 // 接收數(shù)據(jù)字節(jié)
//-----------------------------------------------------------------------------------
//全局變量定義
//----------------------------------------------------------------------------------
unsigned char SMB_DATA_IN;                   // 接收緩沖字節(jié)                                         
unsigned char SMB_DATA_OUT;                  // 發(fā)送緩沖字節(jié)
unsigned char TARGET;                        // 從機(jī)地址
bit SMB_BUSY;                                // 讀寫忙標(biāo)志位
bit SMB_RW;                                  // 讀寫標(biāo)志位
sbit LED = P1^3;                             // LED在P3.3口

//-----------------------------------------------------------------------------
//定時(shí)器3特殊功能寄存器定義
//-----------------------------------------------------------------------------

sfr16    TMR3RL   = 0x92;                   
sfr16    TMR3     = 0x94;                  

//------------------------------------------------------------------------------------
// 函數(shù)定義
//------------------------------------------------------------------------------------

void SMBus_Init (void);
void Timer1_Init (void);
void Timer3_Init (void);
void Port_Init (void);
void SMBus_ISR (void);
void Timer3_ISR (void);
void SMB_Write (void);
void SMB_Read (void);

//------------------------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------------------------

void main (void)
{
unsigned char i, error;                 
   PCA0MD &= ~0x40;                          // 禁止看門狗

   OSCICN |= 0x03;                           // 使用內(nèi)部振蕩器(24500000)
                                            
   Port_Init ();                             // 內(nèi)部交叉開關(guān)及I/O初始化

   Timer1_Init ();                           // 定時(shí)器1初始化,作為SMBus的時(shí)鐘源
                                         
   Timer3_Init ();                           // 定時(shí)器3初始化,作為SMBus SCL信號(hào)低電平
                                             // 超時(shí)檢測(cè)

   SMBus_Init ();                            // 初始化并使能SMBus

   EIE1 |= 1;                                // SMBus 中斷使能
   IE |= 0x20;                               // 定時(shí)器2中斷使能
   EA = 1;                                   // 總中斷使能

//------------------------初始化結(jié)束----------------------------------------

   i = 0;                                    // 數(shù)據(jù)發(fā)送計(jì)數(shù)
   error = 0;                                // 通訊失敗計(jì)數(shù)
   LED = 0;                                  // 關(guān)閉LED
   while (1)
   {
    for (i=0;i<255;i++)
        {      
         SMB_DATA_OUT = i;                   // 定義要發(fā)送的數(shù)據(jù)
         TARGET = F310_SLAVE;                // 從機(jī)地址
                                        
         SMB_Write();                      

    
         TARGET = F310_SLAVE;              
		                              
          SMB_Write();
         if(SMB_DATA_IN != SMB_DATA_OUT)    
            error++;                        
            LED = (!LED);                    // LED 狀態(tài)取反       
	  }
     }
                     
   }
//------------------------------------------------------------------------------------
// SMBus發(fā)送程序
//------------------------------------------------------------------------------------

void SMB_Write (void)
{
   while (SMB_BUSY);            
   SMB_BUSY = 1;               
   SMB_RW = 0;                      
   STA = 1;                               
}

//------------------------------------------------------------------------------------
// SMBus接收程序
//------------------------------------------------------------------------------------

void SMB_Read (void)
{
   while (SMB_BUSY);         
   SMB_BUSY = 1;                  
   SMB_RW = 1;                     
   STA = 1;                           
   while (SMB_BUSY);                   
}

//------------------------------------------------------------------------------------
// SMBus初始化
//------------------------------------------------------------------------------------

void SMBus_Init (void)
{
   SMB0CF = 0x5D;                                                                                                   
   SMB0CF |= 0x80;                          
}

//------------------------------------------------------------------------------------
// 定時(shí)器3初始化程序
//------------------------------------------------------------------------------------

void Timer3_Init (void)
{
   TMR3CN = 0x00;                            //  定時(shí)器3工作在16位自動(dòng)重裝入方式

   TMR3 = -(SYSCLK/12/40);                   // 定時(shí)器3配制為25ms溢出
   TMR3RL = -(SYSCLK/12/40);               
   CKCON &= ~0x40;                           // 定時(shí)器3時(shí)鐘源=SYSCLK/12
   TMR3 |= 0x04;                             //  使能定時(shí)器3
}

//------------------------------------------------------------------------------------
// 定時(shí)器1初始化
//------------------------------------------------------------------------------------

void Timer1_Init (void)
{
   CKCON &= ~0x0B;                           // 定時(shí)器1時(shí)鐘源 = SYSCLK / 12
   TMOD = 0x20;                              // 定時(shí)器1工作在8位自動(dòng)重裝入方式
   TH1 = -(SYSCLK/SMB_FREQUENCY/12/3);                                            
   TL1 = -(SYSCLK/SMB_FREQUENCY/12/3);                                           
   TR1 = 1;                                  // 定時(shí)器1使能
}

//-----------------------------------------------------------------------------------
// I/O口初始化
//-----------------------------------------------------------------------------------
void Port_Init (void)
{
   XBR0 = 0x04;                              //  SMBus 分配到P0.0、P0.1
   XBR1 = 0x40;                    
   P0MDIN = 0xFF;                         
   P0MDOUT = 0x00;                      
   P1MDOUT = 0xff; 
}

//------------------------------------------------------------------------------------
// SMBus中斷服務(wù)程序
//------------------------------------------------------------------------------------

void SMBus_ISR (void) interrupt 7
{
   bit FAIL;                                 // 通訊失敗標(biāo)志位
                                            
   bit ADDR_SEND;                            // 發(fā)送從機(jī)地址標(biāo)志位
                                             

   switch (SMB0CN & 0xF0)                    //  狀態(tài)向量
   {
                                     
     case SMB_MTSTA:                     
          SMB0DAT = TARGET;              
         SMB0DAT |= SMB_RW;                  // 裝入從機(jī)地址和讀寫位  
		 
		 STA = 0;                            // 清發(fā)送位
         ADDR_SEND = 1;                      //此時(shí)發(fā)送的是從機(jī)地址和讀寫位,置標(biāo)志位為1
         break;
//----------------------------------------------------------------------------
                                         // 主機(jī)發(fā)送:數(shù)據(jù)發(fā)送
      case SMB_MTDB:
         if (ACK)                            // 從機(jī)應(yīng)答信號(hào)?
         {
            if (ADDR_SEND)                   // 前一次發(fā)送的是否是從機(jī)地址
            {                            
               ADDR_SEND = 0;                //  如是從機(jī)地址,下一次將不再發(fā)送從機(jī)地址
               if (SMB_RW==WRITE)            // 前一次發(fā)送的命令是讀還是寫
               {
                  SMB0DAT = SMB_DATA_OUT;    // 前一次發(fā)送的命令如果是寫,就裝入要發(fā)送的數(shù)據(jù)
               }
               else {}                       // 如果這個(gè)命令是讀, 程序?qū)⒉粫?huì)寫SMB0DAT
                                             // (切換到接收模式)
            }
            else                             // 前一次發(fā)送的不是從機(jī)地址
            {                             
               STO = 1;                      // 置停止位為1
               SMB_BUSY = 0;                 // 設(shè)置SMBus總線空閑
            }
         }
         else                                // 如果接收到的是非應(yīng)答信號(hào),
         {
            FAIL = 1;                        // 就設(shè)置失敗標(biāo)志位,并退出中斷
                                             
         }
         break;

      // 主機(jī)接收:?jiǎn)巫止?jié)接收
      case SMB_MRDB:
         SMB_DATA_IN = SMB0DAT;              // 保存接收字節(jié)
         SMB_BUSY = 0;                       // 設(shè)置SMBus總線空閑
         ACK = 0;                            // 發(fā)送應(yīng)答信號(hào)
                                             

         STO = 1;                            // 發(fā)送停止位
         break;

      default:
         FAIL = 1;                         
         break;
   }

   if (FAIL)                                 // 是否有通訊失敗,
   {
      SMB0CN &= ~0x40;                       // 復(fù)位總線
      SMB0CN |= 0x40;
      SMB_BUSY = 0;                          // SMBus 總線空閑
   }

   SI=0;                                     // 清SMBus中斷為標(biāo)志位
}

//-----------------------------------------------------------------------------------
// 定時(shí)器3中斷服務(wù)程序 
//-----------------------------------------------------------------------------------
//
//定時(shí)器3中斷表示SMBus總線的SCL位號(hào)低電平超時(shí) 
// 這里將禁止和重新使能SMBus總線
//
void Timer3_ISR (void) interrupt 14
{
   SMB0CN &= ~0x40;                          // 禁止SMBus
   SMB0CN |= 0x40;                           // 重新使能SMBus
   TMR3CN &= ~0x80;                          // 清定時(shí)器3中斷標(biāo)志位 
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区精品视频| 国产成人综合亚洲91猫咪| 成人网页在线观看| 亚洲欧洲精品天堂一级| 国产黄色精品网站| 中文字幕欧美国产| av电影在线不卡| 一区二区三区精品| 欧美日韩精品电影| 日本亚洲视频在线| 欧美国产日本韩| 欧美专区亚洲专区| 免费观看成人av| 久久综合久久综合久久| 国产高清一区日本| **欧美大码日韩| 欧美日韩视频在线观看一区二区三区| 日韩成人午夜精品| 久久久久9999亚洲精品| www.性欧美| 丝瓜av网站精品一区二区| 精品福利一区二区三区| 成人av先锋影音| 日韩精品视频网站| 国产亚洲一区二区三区四区 | 日韩视频在线一区二区| 国产呦精品一区二区三区网站| 国产日韩欧美激情| 欧美三级韩国三级日本一级| 久久精品噜噜噜成人av农村| 中文乱码免费一区二区| 欧美日韩亚洲综合在线| 国产一区三区三区| 亚洲综合另类小说| 精品国产sm最大网站| 91官网在线免费观看| 九一九一国产精品| 伊人色综合久久天天| 欧美电影精品一区二区| 在线免费观看成人短视频| 国产在线观看免费一区| 亚洲小说春色综合另类电影| 精品捆绑美女sm三区| 色综合久久66| 国产成人综合在线观看| 免费成人在线影院| 一区二区三区国产精华| 国产亚洲欧美日韩日本| 欧美日本在线看| 97久久久精品综合88久久| 国产精品影视在线观看| 日韩激情视频网站| 一区二区三区成人| 中文幕一区二区三区久久蜜桃| 日韩欧美国产成人一区二区| 精品国产伦理网| 在线观看国产91| 成人国产精品免费观看动漫| 另类成人小视频在线| 亚洲综合在线视频| 国产免费观看久久| 久久久久久久综合狠狠综合| 555夜色666亚洲国产免| 在线视频中文字幕一区二区| 高清不卡一区二区| 国产大陆精品国产| 国产在线不卡一区| 国产麻豆精品theporn| 久久av资源站| 免费看欧美美女黄的网站| 亚洲电影视频在线| 亚洲成人自拍偷拍| 亚洲国产成人91porn| 夜夜揉揉日日人人青青一国产精品| 国产精品毛片a∨一区二区三区| 久久在线观看免费| 久久精品视频一区二区三区| 精品美女在线播放| 精品国产露脸精彩对白 | 成人一道本在线| 国产成人精品免费视频网站| 国产精品一线二线三线| 国产成人av资源| 成人亚洲一区二区一| 成人av动漫在线| 94-欧美-setu| 精品视频一区二区不卡| 欧美人妖巨大在线| 欧美va日韩va| 久久久亚洲精华液精华液精华液| 亚洲精品一区二区精华| 日本一二三四高清不卡| 综合久久国产九一剧情麻豆| 亚洲精品久久久蜜桃| 亚洲mv大片欧洲mv大片精品| 奇米色一区二区| 国模大尺度一区二区三区| 丁香啪啪综合成人亚洲小说| 色香色香欲天天天影视综合网| 在线欧美一区二区| 日韩欧美高清在线| 中文字幕成人av| 玉米视频成人免费看| 人人爽香蕉精品| 国产精品综合一区二区| 99久久777色| 6080亚洲精品一区二区| 久久久久高清精品| 亚洲欧美国产毛片在线| 日日摸夜夜添夜夜添精品视频| 精品一区二区免费看| av中文字幕亚洲| 欧美一区二区三区在| 国产三区在线成人av| 久久黄色级2电影| 99久久99久久精品国产片果冻| 欧美日本乱大交xxxxx| 国产日本一区二区| 婷婷久久综合九色综合绿巨人| 极品瑜伽女神91| 一本大道久久a久久精二百| 欧美一区二区视频在线观看2020| 日韩美女在线视频| 综合中文字幕亚洲| 伦理电影国产精品| 99国产精品久久久久久久久久久| 欧美日韩电影一区| 国产精品沙发午睡系列990531| 亚洲国产欧美一区二区三区丁香婷 | 国产精品亚洲а∨天堂免在线| 色成年激情久久综合| 日韩女优毛片在线| 亚洲午夜精品在线| 国产在线日韩欧美| 555www色欧美视频| 成人欧美一区二区三区黑人麻豆| 日韩av在线播放中文字幕| 麻豆极品一区二区三区| av电影一区二区| 久久综合成人精品亚洲另类欧美 | 亚洲国产成人91porn| 成人免费视频一区| 制服丝袜中文字幕一区| 亚洲精品久久久蜜桃| 老司机精品视频线观看86| 91免费精品国自产拍在线不卡| 精品国产乱子伦一区| 亚洲风情在线资源站| 一本大道久久a久久综合婷婷| 337p日本欧洲亚洲大胆精品 | 五月天亚洲婷婷| 色欧美片视频在线观看在线视频| 日韩精品一区二区三区在线| 精品国产人成亚洲区| 天涯成人国产亚洲精品一区av| 成人午夜激情影院| 国产三级一区二区| 国产在线精品一区二区不卡了 | 国产精品香蕉一区二区三区| 欧美日韩国产系列| 一区二区三区四区中文字幕| 国产高清无密码一区二区三区| ww亚洲ww在线观看国产| 午夜一区二区三区视频| 欧美视频中文字幕| 亚洲伊人色欲综合网| 91亚洲国产成人精品一区二区三| 欧美激情中文不卡| 国产精品资源站在线| 久久网站最新地址| 美女网站一区二区| 亚洲欧美区自拍先锋| 91蜜桃传媒精品久久久一区二区| 久久久精品国产免大香伊| 国产精品综合av一区二区国产馆| 欧美福利一区二区| 免费黄网站欧美| 91精品国产91久久久久久最新毛片| 亚洲成人免费在线观看| 在线影视一区二区三区| 午夜成人在线视频| 欧美三级视频在线| 蓝色福利精品导航| 日韩欧美一区在线观看| 国产剧情一区二区| 91蝌蚪porny| 舔着乳尖日韩一区| 久久综合av免费| 国产91精品露脸国语对白| 亚洲男人天堂av| 欧美视频精品在线观看| 老司机精品视频在线| 久久综合久久99| 色综合久久88色综合天天| 亚洲一区二区三区爽爽爽爽爽 | 国产欧美一区二区三区在线老狼| 国产专区欧美精品| 亚洲视频资源在线| 亚洲裸体xxx| 在线观看视频一区二区欧美日韩|