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