機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
沒有仿真器avr單片機(jī)的開發(fā)方法
沒有仿真器avr單片機(jī)的開發(fā)方法
 更新時(shí)間:2009-11-19 15:23:24  點(diǎn)擊數(shù):0
【字體: 字體顏色
對(duì)FLASH存貯器單片機(jī),不要仿真機(jī)也能方便快速地開發(fā)程序。具體可以從以下幾方面入手:
一、盡量使用高級(jí)語(yǔ)言開發(fā)系統(tǒng)程序 您有沒有在寫匯編程序時(shí),標(biāo)錯(cuò)一個(gè)標(biāo)號(hào)而浪費(fèi)您大把時(shí)間找錯(cuò)或跳轉(zhuǎn)偏移量過大而不得不改動(dòng)程序結(jié)構(gòu)的經(jīng)歷。其實(shí)您如果使用高級(jí)語(yǔ)言開發(fā)程序,就不會(huì)有這樣的痛苦。 在開發(fā)程序時(shí),除了建立一個(gè)良好的開發(fā)文檔外,使用語(yǔ)言的選擇也很重要。有許多人認(rèn)為使用匯編寫程序比較精簡(jiǎn),而用高級(jí)語(yǔ)言開發(fā)會(huì)浪費(fèi)很多程序空間,其實(shí)這是一種誤解。對(duì)一個(gè)有經(jīng)驗(yàn)的,而且非常熟悉某種單片機(jī)的匯編高手而言,他是能寫出比高級(jí)語(yǔ)言更精簡(jiǎn)的代碼。而對(duì)匯編不是很熟的開發(fā)者、或突然更換了一種新的單片機(jī),您能保證一定可以寫出比高級(jí)語(yǔ)言更簡(jiǎn)練的代碼嗎? 高級(jí)語(yǔ)言的優(yōu)越性是匯編語(yǔ)言不能比的:
1、程序移植方便
2、程序的堅(jiān)固性
3、對(duì)數(shù)學(xué)運(yùn)算的支持
4、條理清晰的結(jié)構(gòu)化編程,程序的可維護(hù)性
5、開發(fā)周期短
現(xiàn)在的高級(jí)語(yǔ)言編譯器(如C編譯器)已可以產(chǎn)生代碼效率很高的機(jī)器代碼,因此建議大家能用高級(jí)語(yǔ)言實(shí)現(xiàn)的程序盡可能使用高級(jí)語(yǔ)言寫,在對(duì)速度和時(shí)序要求特嚴(yán)的場(chǎng)合可以采用混合編程的方法來解決。
二、更多的使用軟件模擬仿真環(huán)境 現(xiàn)在許多單片機(jī)都提供軟件模擬仿真環(huán)境,如AVR單片機(jī)就可以在ATMEL公司提供的AVR STUDIO開發(fā)平臺(tái)的模擬仿真環(huán)境中進(jìn)行軟件的模擬調(diào)試。BASCOM-AVR還提供了更加人性化和配合外部圖形界面(鍵盤、標(biāo)準(zhǔn)LCD顯示器等)的軟件模擬調(diào)試環(huán)境。 ATMEL的AVR STUDIO是一個(gè)開發(fā)AVR單片機(jī)的集成開發(fā)環(huán)境,其支持高級(jí)語(yǔ)言和匯編語(yǔ)言的源代碼級(jí)軟件模擬調(diào)試。在模擬仿真條件下調(diào)試算法、程序流程等可以說和硬件仿真機(jī)是沒有區(qū)別的;而調(diào)試延時(shí)程序、計(jì)算一段程序運(yùn)行所花的時(shí)間等方面,可以說比硬件仿真器更方便,因?yàn)樵S多仿真機(jī)(如JTAG ICE)是無法提供程序運(yùn)行時(shí)間等調(diào)試參數(shù)的。 另外,對(duì)I/O端口、定時(shí)器、UART、中斷響應(yīng)等,在AVR STUDIO中均可實(shí)現(xiàn)模擬仿真,用戶也可以采用軟件的單步運(yùn)行、設(shè)置斷點(diǎn)等手段,分析內(nèi)存和查看AVR中所有的硬件資源的數(shù)據(jù)以及使用情況。 學(xué)會(huì)使用和以軟件模擬仿真為主、已硬件仿真配合的系統(tǒng)開發(fā)調(diào)試手段可以大大提高項(xiàng)目的開發(fā)效率,縮短開發(fā)周期。因?yàn),一旦系統(tǒng)整體設(shè)計(jì)完成,硬件PCB板的設(shè)計(jì)和制作同軟件系統(tǒng)的開發(fā)可同時(shí)進(jìn)行。當(dāng)硬件系統(tǒng)板完成后,軟件總體的架構(gòu)也已經(jīng)調(diào)試完成,既可進(jìn)行實(shí)際的調(diào)試階段。
三、善用目標(biāo)板上的硬件資源 在許多系統(tǒng)目標(biāo)板上均有LED、數(shù)碼管、RS232等附件和接口,其實(shí)利用好這些附件接口,也能實(shí)現(xiàn)和完成程序的調(diào)試開發(fā)。 我們使用仿真器的目的是要觀察單片機(jī)內(nèi)部的狀態(tài)和數(shù)據(jù),利用這些附件和FLASH存貯器多次可擦寫的特點(diǎn),完全可以觀察到單片機(jī)內(nèi)部的狀態(tài)。 AVR單片機(jī)是支持ISP的FLASH單片機(jī),開發(fā)時(shí)可以通過下載電纜將其和PC連成一個(gè)整體,在程序編譯完后立刻下載到目標(biāo)MCU中運(yùn)行。在需要觀察單片機(jī)內(nèi)部狀態(tài)時(shí),可以程序的適當(dāng)位置加入少部分代碼,把MCU的內(nèi)部狀態(tài)和數(shù)據(jù)通過LED、數(shù)碼管等顯示出來。在有RS232通信接口的應(yīng)用中,可以直接將需要觀察的MCU內(nèi)部狀態(tài)送到PC機(jī),在PC機(jī)上用串口調(diào)試器等一些超級(jí)終端來顯示數(shù)據(jù),F(xiàn)在大部分的開發(fā)環(huán)境本身就提供了超級(jí)終端,如ICC、CVAVR、BASC0M-AVR等。 由于單片機(jī)采用了支持ISP的Flash技術(shù),因此采用高級(jí)語(yǔ)言開發(fā)系統(tǒng)程序,更多的以軟件模擬仿真技術(shù),加上使用串口輸出調(diào)試數(shù)據(jù)的開發(fā)手段已成為開發(fā)單片機(jī)和嵌入式系統(tǒng)(如32位ARM的COMMAND調(diào)試手段等)的流行和高效的方法。
四、舉例
在開發(fā)AVR的I2C應(yīng)用例程時(shí),使用串口輸出調(diào)試數(shù)據(jù)的方法介紹。
首先初始化UART?梢钥闯龀跏蓟疷ART只需要很少的幾行代碼,在完成程序調(diào)試后將可以將其刪除。如果你的系統(tǒng)程序本身就需要使用串口,那么初始化UART就沒有一行多余的代碼了。
void uart_init(void)
{
UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
UBRRL=(fosc/16/(baud+1))%256;
UBRRH=(fosc/16/(baud+1))/256;
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
然后我們可以寫一個(gè)putchar函數(shù),或直接使用標(biāo)準(zhǔn)輸入輸出庫(kù)中的putchar函數(shù)。
void putchar(unsigned char c)
{
while (!(UCSRA&(1<<UDRE)));
UDR=c;
}
接下來只要在需要調(diào)試的程序部分調(diào)用putchar函數(shù)就可以將一些需要查看的
MCU中硬件資源的數(shù)據(jù)和狀態(tài)送PC機(jī)顯示了。如要觀察I2C中斷程序中TWSR寄存器的值,只要在I2C中斷程序中插入兩行代碼就可以了:
#pragma interrupt_handler TWI_ISR:iv_TWI
void TWI_ISR(void)
{
unsigned char temp = TestAck();
putchar(temp);
switch (temp);//調(diào)試完后,本行改為switch(TestAck()),
//刪除上面兩行就可以了。
{
case SR_SLA_ACK:
{
fill_rece();
TWI_STATE=TWI_RD;
Twi_ACK();
Break;
}
. . .
}
}
在PC機(jī)的超級(jí)終端軟件中,設(shè)置波特率、數(shù)據(jù)格式后打開串口就可以觀察TWSR寄存器的狀態(tài)值了
  • 上一篇: AVR單片機(jī)ISP下載線設(shè)計(jì)
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1