新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > C51語言應用編程的若干問題

C51語言應用編程的若干問題

作者: 時間:2012-07-04 來源:網(wǎng)絡 收藏
  在研制單片機應用系統(tǒng)時,是一種常用的軟件工具。它能直接操作硬件,指令的執(zhí)行速度快。但其指令系統(tǒng)的固有格式受硬件結(jié)構(gòu)的限制很大,且難于編寫與調(diào)試,可移植性也差。隨著單片機硬件性能的提高,其工作速度越來越快,因此在編寫單片機應用系統(tǒng)程序時,更著重于程序本身的編寫效率。而Franklin 交叉編譯器是專為80系列單片機設計的一種高效的C語言編譯器,使用它可以縮短開發(fā)周期,降低開發(fā)成本,而且開發(fā)出的系統(tǒng)易于維護,可靠性高,可移植性好,即使在代碼的使用效率上,也完全可以和相比,因此目前它已成為開發(fā)80系列單片機的流行工具。

1 c51語言程序設計的基本技巧

  C語言是一種高級程序設計語言,它提供了十分完備的規(guī)范化流程控制結(jié)構(gòu)。因此采用C51語言設計單片機應用系統(tǒng)程序時,首先要盡可能地采用結(jié)構(gòu)化的程序設計方法,這樣可使整個應用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護。對于一個較大的程序,可將整個程序按功能分成若干個模塊,不同的模塊完成不同的功能。對于不同的功能模塊,分別指定相應的入口參數(shù)和出口參數(shù),而經(jīng)常使用的一些程序最好編成函數(shù),這樣既不會引起整個程序管理的混亂,還可增強可讀性,移植性也好。

  在程序設計過程中,要充分利用C51語言的預處理命令。對于一些常用的常數(shù),如TRUE,F(xiàn)ALSE,PI以及各種特殊功能寄存器,或程序中一些重要的依據(jù)外界條件可變的常量,可采用宏定義"#define"或集中起來放在一個頭文件中進行定義,再采用文件包含命令"#include"將其加入到程序中去。這樣當需要修改某個參量時,只須修改相應的包含文件或宏定義,而不必對使用它們的每個程序文件都作修改,從而有利于文件的維護和更新?,F(xiàn)舉例說明如下:

  例1 對于不同的單片機晶振,程序取不同的延時時間,而且可根據(jù)外界條件的變化修改延時時間的長短。對于這樣的程序,可利用宏定義和條件編譯來實現(xiàn)。程序如下:

#define   flag 1
#ifdef   flag==1
  #define fosc 6M
  delay=10;
#elif   flag = = 0
#define  fosc  8M
  delay=12;
#else
#define  fosc  12M
  delay=20;
#endif
main()
{
for(I=0;Idelay;I++);
}

  這樣源程序不作任何修改就可適用于不同時鐘頻率的單片機系統(tǒng),并可根據(jù)情況的不同取不同的delay值,完成不同的目的。

2 C51語言與程序的混合編程

  C51編譯器能對C語言源程序進行高效率的編譯,生成高效簡潔的代碼,在絕大多數(shù)場合采用C語言編程即可完成預期的目的。但有時為了編程直觀或某些特殊地址的處理,還須采用一定的匯編語言編程。而在另一些場合,出于某種目的,匯編語言也可調(diào)用C語言。在這種混合編程中,關鍵是參數(shù)的傳遞和函數(shù)的返回值。它們必須有完整的約定,否則數(shù)據(jù)的交換就可能出錯。下面就以力源公司的10位串行A/D轉(zhuǎn)換器TLC1549 為例說明C語言程序與匯編語言程序的調(diào)用。

上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉