www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]在開發(fā)單片機(jī)程序時,有許多人依賴于仿真機(jī),一旦離開了仿真機(jī)開發(fā)程序時就感覺無從下手。其實對FLASH存貯器單片機(jī),不要仿真機(jī)也能方便快速地開發(fā)程序。具體可以從以下幾方

在開發(fā)單片機(jī)程序時,有許多人依賴于仿真機(jī),一旦離開了仿真機(jī)開發(fā)程序時就感覺無從下手。其實對FLASH存貯器單片機(jī),不要仿真機(jī)也能方便快速地開發(fā)程序。具體可以從以下幾方面入手:

一、盡量使用高級語言開發(fā)系統(tǒng)程序 您有沒有在寫匯編程序時,標(biāo)錯一個標(biāo)號而浪費您大把時間找錯或跳轉(zhuǎn)偏移量過大而不得不改動程序結(jié)構(gòu)的經(jīng)歷。其實您如果使用高級語言開發(fā)程序,就不會有這樣的痛苦。 在開發(fā)程序時,除了建立一個良好的開發(fā)文檔外,使用語言的選擇也很重要。有許多人認(rèn)為使用匯編寫程序比較精簡,而用高級語言開發(fā)會浪費很多程序空間,其實這是一種誤解。對一個有經(jīng)驗的,而且非常熟悉某種 單片機(jī) 的匯編高手而言,他是能寫出比高級語言更精簡的代碼。而對匯編不是很熟的開發(fā)者、或突然更換了一種新的單片機(jī),您能保證一定可以寫出比高級語言更簡練的代碼嗎? 高級語言的優(yōu)越性是匯編語言不能比的:

1、程序移植方便

2、程序的堅固性

3、對數(shù)學(xué)運算的支持

4、條理清晰的結(jié)構(gòu)化編程,程序的可維護(hù)性

5、開發(fā)周期短

現(xiàn)在的高級語言編譯器(如C編譯器)已可以產(chǎn)生代碼效率很高的機(jī)器代碼,因此建議大家能用高級語言實現(xiàn)的程序盡可能使用高級語言寫,在對速度和時序要求特嚴(yán)的場合可以采用混合編程的方法來解決。

二、更多的使用軟件模擬仿真環(huán)境 現(xiàn)在許多 單片機(jī) 都提供軟件模擬仿真環(huán)境,如AVR單片機(jī)就可以在ATMEL公司提供的AVR STUDIO開發(fā)平臺的模擬仿真環(huán)境中進(jìn)行軟件的模擬調(diào)試。BASCOM-AVR還提供了更加人性化和配合外部圖形界面(鍵盤、標(biāo)準(zhǔn)LCD顯示器等)的軟件模擬調(diào)試環(huán)境。 ATMEL的AVR STUDIO是一個開發(fā)AVR單片機(jī)的集成開發(fā)環(huán)境,其支持高級語言和匯編語言的源代碼級軟件模擬調(diào)試。在模擬仿真條件下調(diào)試算法、程序流程等可以說和硬件仿真機(jī)是沒有區(qū)別的;而調(diào)試延時程序、計算一段程序運行所花的時間等方面,可以說比硬件仿真器更方便,因為許多仿真機(jī)(如JTAG ICE)是無法提供程序運行時間等調(diào)試參數(shù)的。 另外,對I/O端口、定時器、UART、中斷響應(yīng)等,在AVR STUDIO中均可實現(xiàn)模擬仿真,用戶也可以采用軟件的單步運行、設(shè)置斷點等手段,分析內(nèi)存和查看AVR中所有的硬件資源的數(shù)據(jù)以及使用情況。 學(xué)會使用和以軟件模擬仿真為主、已硬件仿真配合的系統(tǒng)開發(fā)調(diào)試手段可以大大提高項目的開發(fā)效率,縮短開發(fā)周期。因為,一旦系統(tǒng)整體設(shè)計完成,硬件PCB板的設(shè)計和制作同軟件系統(tǒng)的開發(fā)可同時進(jìn)行。當(dāng)硬件系統(tǒng)板完成后,軟件總體的架構(gòu)也已經(jīng)調(diào)試完成,既可進(jìn)行實際的調(diào)試階段。

三、善用目標(biāo)板上的硬件資源 在許多系統(tǒng)目標(biāo)板上均有LED、數(shù)碼管、RS232等附件和接口,其實利用好這些附件接口,也能實現(xiàn)和完成程序的調(diào)試開發(fā)。 我們使用仿真器的目的是要觀察 單片機(jī) 內(nèi)部的狀態(tài)和數(shù)據(jù),利用這些附件和FLASH存貯器多次可擦寫的特點,完全可以觀察到單片機(jī)內(nèi)部的狀態(tài)。 AVR單片機(jī)是支持ISP的FLASH單片機(jī),開發(fā)時可以通過下載電纜將其和PC連成一個整體,在程序編譯完后立刻下載到目標(biāo)MCU中運行。在需要觀察單片機(jī)內(nèi)部狀態(tài)時,可以程序的適當(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)試器等一些超級終端來顯示數(shù)據(jù)?,F(xiàn)在大部分的開發(fā)環(huán)境本身就提供了超級終端,如ICC、CVAVR、BASC0M-AVR等。 由于單片機(jī)采用了支持ISP的Flash技術(shù),因此采用高級語言開發(fā)系統(tǒng)程序,更多的以軟件模擬仿真技術(shù),加上使用串口輸出調(diào)試數(shù)據(jù)的開發(fā)手段已成為開發(fā)單片機(jī)和嵌入式系統(tǒng)(如32位ARM的COMMAND調(diào)試手段等)的流行和高效的方法。

四、舉例

在開發(fā)AVR的I2C應(yīng)用例程時,使用串口輸出調(diào)試數(shù)據(jù)的方法介紹。

首先初始化UART。可以看出初始化UART只需要很少的幾行代碼,在完成程序調(diào)試后將可以將其刪除。如果你的系統(tǒng)程序本身就需要使用串口,那么初始化UART就沒有一行多余的代碼了。

void uart_init(void)

{

UCSRB=(1

UBRRH=(fosc/16/(baud+1))/256;

UCSRC=http://www.picavr.com/(1<}

然后我們可以寫一個putchar函數(shù),或直接使用標(biāo)準(zhǔn)輸入輸出庫中的putchar函數(shù)。

void putchar(unsigned char c)

{

while (!(UCSRA&(1

}

接下來只要在需要調(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ī)的超級終端軟件中,設(shè)置波特率、數(shù)據(jù)格式后打開串口就可以觀察TWSR寄存器的狀態(tài)值了。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉