<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC程序優(yōu)化

          PIC程序優(yōu)化

          作者: 時間:2016-11-13 來源:網(wǎng)絡 收藏
          程序優(yōu)化中的幾點

          賦值語句是非常占用空間的,一個普通的給外部變量的賦值語句可能需要20到40個字節(jié)的代碼空間。如果程序中有大量的賦值語句,會占用許多程序空間。優(yōu)化時可以針對有規(guī)律的賦值語句使用函數(shù)方式,以及使用memcpy方式。

          本文引用地址:http://www.ex-cimer.com/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ōu)化的地方就盡量自己動手了。

          還有就是不同的編譯器的優(yōu)化是不同的,需要嘗試一下不同的程序表達方式,經(jīng)過比較才能得到一個比較好的方式。

          Keil串口調試技巧

          Keil C51整合了目前功能最強的C51編譯器和最好的IDE調試環(huán)境。在新版本的Keil中,增加了很多功能,其中之一就是串口仿真。就是說無須實際的硬件,利用計算機的串口就可以完全進行串口仿真。

          使用到的調試命令:

          ASSIGN將計算機的串口設置為單片機的串口
          語法:ASSIGN channel < inreg > outreg
          例如:ASSIGN COM1 < SIN > SOUT
          上面的括號不能少。

          MODE設置串口的參數(shù)(波特率、數(shù)據(jù)位、停止位等)
          語法:MODE COMx, baudrate, parity, databits, stopbits
          例如:MODE COM2, 19200, 0, 8, 1

          實際軟件調試時,先在Keil中完成程序的編寫,然后進入軟件仿真狀態(tài),并用一根自制的串口線將計算機的兩個串口環(huán)接起來(注意2與3要交叉,5可以接也可以不接)。這里需要計算機上至少要有兩個串口,一個是仿真單片機用,另外一個是通信調試用,不然就需要兩臺計算機了。在仿真狀態(tài)下,使用上面的兩個命令設置好串口的參數(shù)(每次都輸入?yún)?shù)會比較麻煩,這時可以在仿真參數(shù)中設置好配置文件)。在計算機中使用任何串口調試軟件與Keil進行通信,可以在Keil中設置斷點,實際結果與硬件仿真器的效果一樣,還更加簡單方便。

          更多的用法可以參考Keil的幫助文件DBG51.CHM

          負數(shù)的問題- -

          在PICC18中,如果傳輸一個負數(shù)X時,用X/256和X%256分別取高低位時,高位會出現(xiàn)問題,會被加一。

          這個問題需要這樣解決:先將X傳遞到一個無符號的整數(shù),然后在分別取高低位,就不會出現(xiàn)問題了。



          關鍵詞: PIC程序優(yōu)

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();