沒(méi)有仿真器的條件下如何開(kāi)發(fā)AVR
在開(kāi)發(fā)單片機程序時(shí),有許多人依賴(lài)于仿真機,一旦離開(kāi)了仿真機開(kāi)發(fā)程序時(shí)就感覺(jué)無(wú)從下手。其實(shí)對FLASH存貯器單片機,不要仿真機也能方便快速地 開(kāi)發(fā)程序。具體可以從以下幾方面入手:
一、編譯工具
您有沒(méi)有在寫(xiě)匯編程序時(shí),標錯一個(gè)標號而浪費您大把時(shí)間找錯或跳轉偏移量過(guò)大而不得不改動(dòng)程序結構的經(jīng)歷。其實(shí)您如果使用高級語(yǔ)言開(kāi)發(fā)程序,就不會(huì )有這樣的痛苦。
在開(kāi)發(fā)程序時(shí),除了建立一個(gè)良好的開(kāi)發(fā)文檔外,編譯工具的選擇也很重要。有許多人認為使用匯編寫(xiě)程序比較精簡(jiǎn),而用高級語(yǔ)言開(kāi)發(fā)會(huì )浪費很多程序空間,其實(shí)這是一種誤解。對一個(gè)熟悉某種單片機的匯編高手而言,他能寫(xiě)出比高級語(yǔ)言更精簡(jiǎn)的代碼。而對匯編不是很熟的開(kāi)發(fā)者、或突然更換了一種新的單片機,您能保證一定可以寫(xiě)出比高級語(yǔ)言更簡(jiǎn)練的代碼嗎?高級語(yǔ)言的優(yōu)越性是匯編語(yǔ)言不能比的:
1、程序移植方便
2、程序的堅固性
3、對數學(xué)運算的支持
4、條理清晰的結構化編程,程序的可維護性。
現在的高級語(yǔ)言編譯器(如C編譯器)已可以產(chǎn)生代碼效率很高的機器代碼,因此建議大家能用高級語(yǔ)言實(shí)現的程序盡可能使用高級語(yǔ)言寫(xiě),在對速度和時(shí)序要求特嚴的場(chǎng)合可以采用混合編程的方法來(lái)解決。
二、善用模擬仿真環(huán)境
現在許多單片機都提供模擬仿真環(huán)境,如AVR單片機提供AVRSTUDIO模擬仿真環(huán)境。ATMEL的AVRSTUDIO是一個(gè)開(kāi)發(fā)AVR單片機的集成開(kāi)發(fā)環(huán)境,其支持高級語(yǔ)言和匯編語(yǔ)言的源代碼級模擬調試。在模擬仿真條件下調試算法、程序流程等可以說(shuō)和硬件仿真機是沒(méi)有區別的;而調試延時(shí)程序、計算一段程序運行所花的時(shí)間等方面,可以說(shuō)比硬件仿真機更方便,因為許多仿真機(如JTAG ICE)是無(wú)法提供程序運行時(shí)間等調試參數的。另外,對I/O端口、定時(shí)器、UART、中斷等,在A(yíng)VRSTUDIO中均可實(shí)現模擬仿真,用戶(hù)也可以分析內存的使用情況。
三、善用目標板上的硬件資源
在許多目標板上均有LED、數碼管、RS232等附件,其實(shí)利用好這些附件就能完成程序的開(kāi)發(fā)。
我們使用仿真機的目的是要觀(guān)察單片機內部的狀態(tài),而利用這些附件和FLASH存貯器多次可擦寫(xiě)的特點(diǎn),完全可以觀(guān)察到單片機內部的狀態(tài)。AVR單片機是支持ISP的FLASH單片機,開(kāi)發(fā)時(shí)可以通過(guò)下載電纜將其和PC連成一個(gè)整體,在程序編譯完后立刻下載到目標MCU 中運行。這些在需要觀(guān)察內部狀態(tài)時(shí),可以程序的適當位置加入少部分代碼,讓MCU 的內部狀態(tài)通過(guò)LED、數碼管等顯示出來(lái),在有RS232通信的應用中,甚至可以直接將內部狀態(tài)送到PC機,在PC機上可以用串口調試器等一些超級終端來(lái)顯示數據。有許多高級語(yǔ)言開(kāi)發(fā)環(huán)境本身就提供了超級終端。
評論