最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

at128上的ads1100的通訊程序,請(qǐng)高手指點(diǎn)

作者:ljhtj 欄目:單片機(jī)
AT128.html">AT128上的ADS1100.html">ADS1100的通訊程序,請(qǐng)高手指點(diǎn)
//ICC-AVR application builder : 97-1-1 1:35:57
// Target : M128
// CRYSTAL: 8.0000Mhz

#include <iom128v.h>
#include <macros.h>
/****************************
**編譯器類型及版本:ICCAVR 6.26
**芯片類型ECU ATMEGA128L    AD  ADS1100
**硬件接口說(shuō)明:
AD的管腳定義   AT128    ADS1100                
                SCL      SCL
                SDA      SDA

*********************************/

ad(void)
{        

   unsigned int i,j;
  // 發(fā)出START信號(hào)
  TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);    
  // 等待TWINT置位,TWINT置位表示START信號(hào)已發(fā)出
   while(!(TWCR & (1<<TWINT)))
        ;
   //檢驗(yàn)TWI狀態(tài)寄存器,屏蔽預(yù)分頻位,如果狀態(tài)字不是START轉(zhuǎn)出錯(cuò)處理
   if((TWSR & 0xf8) != 0x08)  
   ERROR();
    //將deviceadd裝入TWDR寄存器
    TWDR =0x90;//deviceadd;
    //TWINT清零,啟動(dòng)發(fā)送地址               
    TWCR = (1<<TWINT)|(1<<TWEN);     
    //等待TWINT置位,TWINT置位表示deviceadd信號(hào)已發(fā)出,及收到應(yīng)答信號(hào)ACK/NACK
    while (!(TWCR & (1<<TWINT)))    
    ;
   //檢驗(yàn)TWI 狀態(tài)寄存器,屏蔽預(yù)分頻位,如果狀態(tài)字不是MT_SLA_ACK 轉(zhuǎn)出錯(cuò)處理     
   if ((TWSR & 0xf8)!=0x18)
   ERROR();   
   //裝入數(shù)據(jù)到TWDR 寄存器, TWINT 清零,啟動(dòng)發(fā)送數(shù)據(jù)
   TWDR = 0x9c;
   i=TWDR;   
   TWCR = (1<<TWINT)|(1<<TWEN);
   //等待 TWINT 置位, TWINT 置位表示總線數(shù)據(jù) DATA 已發(fā)送,及收到應(yīng)答信號(hào)ACK/NACK  
   while (!(TWCR & (1<<TWINT)))
    ;
   //檢驗(yàn)TWI 狀態(tài)寄存器,屏蔽預(yù)分頻器,如果狀態(tài)字不是MT_DATA_ACK 轉(zhuǎn)出錯(cuò)處理
   if ((TWSR&0xF8)!=0x28)
   ERROR();
   //發(fā)送STOP 信號(hào)
   TWCR =(1<<TWINT)|(1<<TWEN)|(1<<TWSTO);  

   
   TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
   while(!(TWCR & (1<<TWINT)))
          ;   
   if ((TWSR & 0xf8) != 0x08)
   ERROR();
   //wait;
   TWDR =0x91;//deviceaddw;
   TWCR = (1<<TWINT)|(1<<TWEN);
   while (!(TWCR & (1<<TWINT)))
     ;   
   if ((TWSR&0xf8)!=0x40)
   ERROR();
   TWCR = (1<<TWINT|(1<<TWEA)|(1<<TWEN));//裝入數(shù)據(jù)到TWDR 寄存器, TWINT 清零,啟動(dòng)發(fā)送數(shù)據(jù)
   i=0;
   i=TWDR;   
   while (!(TWCR & (1<<TWINT)))
    ;
   //等待 TWINT 置位, TWINT 置位表示總線數(shù)據(jù) DATA 已發(fā)送,及收到應(yīng)答信號(hào)ACK/NACK
   if ((TWSR&0xf8)!=0x50) //0x58
   ERROR();//檢驗(yàn)TWI 狀態(tài)寄存器,屏蔽預(yù)分頻器,如果狀態(tài)字不是MT_DATA_ACK 轉(zhuǎn)出錯(cuò)處理
   TWCR = (1<<TWINT)|(1<<TWEN);//裝入數(shù)據(jù)到TWDR 寄存器, TWINT 清零,啟動(dòng)發(fā)送數(shù)據(jù)
   j=0;
   j=TWDR;
   while (!(TWCR & (1<<TWINT)))
    ;
   //等待 TWINT 置位, TWINT 置位表示總線數(shù)據(jù) DATA 已發(fā)送,及收到應(yīng)答信號(hào)ACK/NACK
   if ((TWSR&0xf8)!=0x58) //0x58
   ERROR();//檢驗(yàn)TWI 狀態(tài)寄存器,屏蔽預(yù)分頻器,如果狀態(tài)字不是MT_DATA_ACK 轉(zhuǎn)出錯(cuò)處理
   TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);  
   i=(i<<8);
   j=i+j;
   return j;//發(fā)送STOP 信號(hào)  
  }



void ERROR(void)
{
for(;;)
;
}

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)問(wèn)在M32/128中使用RTOS~~大家都用那種的阿?
請(qǐng)教關(guān)于EEPROM的壽命問(wèn)題。▽(shí)驗(yàn)完成。。。
AVR mega48 USART0的通訊問(wèn)題
有關(guān)AVR庫(kù)函數(shù)的使用
請(qǐng)問(wèn)那位做過(guò)AVR程序的網(wǎng)絡(luò)在線更新?
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào)