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