PIC程序優(yōu)化
賦值語句是非常占用空間的,一個普通的給外部變量的賦值語句可能需要20到40個字節(jié)的代碼空間。如果程序中有大量的賦值語句,會占用許多程序空間。優(yōu)化時可以針對有規(guī)律的賦值語句使用函數(shù)方式,以及使用memcpy方式。
本文引用地址:http://m.butianyuan.cn/article/201611/316239.htm在作比較時,將if (x<(y+1))修改為if (x<=y)會節(jié)約不少。
循環(huán)中,在C51時for(x=0;x<10;x++)比for(x=10;x>0;x--)要多一個字節(jié);在PICC18中則相反。
充分利用指針,可以提高程序的效率,但是要注意不能濫用。
適當?shù)娜哂啻a是需要的,不要把它們刪除了。
注意程序的寫法
在單片機程序中,代碼的表達方式,或者叫寫法也是很重要的,一個不好的寫法可能會造成空間的浪費和效率的降低。而一個好的寫法會減少代碼的大小。不要依賴于編譯器的優(yōu)化功能,很多時候,優(yōu)化是沒有預(yù)期的那樣好的效果,可以手工優(yōu)化的地方就盡量自己動手了。
還有就是不同的編譯器的優(yōu)化是不同的,需要嘗試一下不同的程序表達方式,經(jīng)過比較才能得到一個比較好的方式。
Keil串口調(diào)試技巧
Keil C51整合了目前功能最強的C51編譯器和最好的IDE調(diào)試環(huán)境。在新版本的Keil中,增加了很多功能,其中之一就是串口仿真。就是說無須實際的硬件,利用計算機的串口就可以完全進行串口仿真。
使用到的調(diào)試命令:
ASSIGN將計算機的串口設(shè)置為單片機的串口
語法:ASSIGN channel < inreg > outreg
例如:ASSIGN COM1 < SIN > SOUT
上面的括號不能少。
MODE設(shè)置串口的參數(shù)(波特率、數(shù)據(jù)位、停止位等)
語法:MODE COMx, baudrate, parity, databits, stopbits
例如:MODE COM2, 19200, 0, 8, 1
實際軟件調(diào)試時,先在Keil中完成程序的編寫,然后進入軟件仿真狀態(tài),并用一根自制的串口線將計算機的兩個串口環(huán)接起來(注意2與3要交叉,5可以接也可以不接)。這里需要計算機上至少要有兩個串口,一個是仿真單片機用,另外一個是通信調(diào)試用,不然就需要兩臺計算機了。在仿真狀態(tài)下,使用上面的兩個命令設(shè)置好串口的參數(shù)(每次都輸入?yún)?shù)會比較麻煩,這時可以在仿真參數(shù)中設(shè)置好配置文件)。在計算機中使用任何串口調(diào)試軟件與Keil進行通信,可以在Keil中設(shè)置斷點,實際結(jié)果與硬件仿真器的效果一樣,還更加簡單方便。
更多的用法可以參考Keil的幫助文件DBG51.CHM
負數(shù)的問題- -
在PICC18中,如果傳輸一個負數(shù)X時,用X/256和X%256分別取高低位時,高位會出現(xiàn)問題,會被加一。
這個問題需要這樣解決:先將X傳遞到一個無符號的整數(shù),然后在分別取高低位,就不會出現(xiàn)問題了。
評論