婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

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

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2013/3/4

研制單片機應用系統時,匯編語言是一種常用的軟件工具。它能直接操作硬件,指令的執行速度快。但其指令系統的固有格式受硬件結構的限制很大,且難于編寫與調試,可移植性也差。隨著單片機硬件性能的提高,其工作速度越來越快,因此在編寫單片機應用系統程序時,更著重于程序本身的編寫效率。而Franklin C51交叉編譯器是專為80C51系列單片機設計的一種高效的C語言編譯器,使用它可以縮短開發周期,降低開發成本,而且開發出的系統易于維護,可靠性高,可移植性好,即使在代碼的使用效率上,也完全可以和匯編語言相比,因此目前它已成為開發80C51系列單片機的流行工具。
1 C51語言程序設計的基本技巧
  C語言是一種高級程序設計語言,它提供了十分完備的規范化流程控制結構。因此采用C51語言設計單片機應用系統程序時,首先要盡可能地采用結構化的程序設計方法,這樣可使整個應用系統程序結構清晰,易于調試和維護。對于一個較大的程序,可將整個程序按功能分成若干個模塊,不同的模塊完成不同的功能。對于不同的功能模塊,分別指定相應的入口參數和出口參數,而經常使用的一些程序最好編成函數,這樣既不會引起整個程序管理的混亂,還可增強可讀性,移植性也好。
  在程序設計過程中,要充分利用C51語言的預處理命令。對于一些常用的常數,如TRUE,FALSE,PI以及各種特殊功能寄存器,或程序中一些重要的依據外界條件可變的常量,可采用宏定義"#define"或集中起來放在一個頭文件中進行定義,再采用文件包含命令"#include"將其加入到程序中去。這樣當需要修改某個參量時,只須修改相應的包含文件或宏定義,而不必對使用它們的每個程序文件都作修改,從而有利于文件的維護和更新。現舉例說明如下:
  例1 對于不同的單片機晶振,程序取不同的延時時間,而且可根據外界條件的變化修改延時時間的長短。對于這樣的程序,可利用宏定義和條件編譯來實現。程序如下:
#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;I

2 C51語言與匯編語言程序的混合編程
  C51編譯器能對C語言源程序進行高效率的編譯,生成高效簡潔的代碼,在絕大多數場合采用C語言編程即可完成預期的目的。但有時為了編程直觀或某些特殊地址的處理,還須采用一定的匯編語言編程。而在另一些場合,出于某種目的,匯編語言也可調用C語言。在這種混合編程中,關鍵是參數的傳遞和函數的返回值。它們必須有完整的約定,否則數據的交換就可能出錯。下面就以力源公司的10位串行A/D轉換器TLC1549 為例說明C語言程序與匯編語言程序的調用。 
圖1 TLC1549管腳圖
  1549的管腳圖和時序圖分別如圖1和圖2所示,假定DATA OUT接P1.0,

接P1.1,CLOCK接P1.2。
1549的具體特性請查閱有關資料。

例2 C語言程序與匯編語言程序的調用,其子程序如下:
PUBLIC AD   ;入口地址
SEG_AD SEGMENT CODE ;程序段 
RSEG SEG_AD
USING 0
  AD: MOV R6,#00
MOV R7,#00
SETB P1.1
ACALL DELAY
CLR P1.1
ACALL DELAY
MOV R0,#10
  RR0: SETB P1.2
NOP
CLR P1.2
DJNZ R0,RR0
ACALL DELAY
MOV 30H,R6   ;A/D轉換的高
        ;兩位保存在R6中
ACALL CIR
MOV R6,30H
SETB P1.2
NOP
CLR P1.2
MOV 30H,R6
ACALL CIR
MOV R6,30H
MOV R0,#8   ;A/D轉換的低
       ;8位保存在R7中
  RR2: SETB P1.2
NOP
CLR P1.2
MOV 30H,R7
ACALL CIR
MOV R7,30H
DJNZ R0,RR2
RET
  CIR: CLR C
MOV C,P1.0
MOV A,30H
RLC A
MOV 30H,A
RET
END
  在以上程序中,函數的返回值為一無符號整型數,根據調用規則,返回值的高位必須在R6中,低位在R7中,這樣才可保證數據的傳遞不出錯。另外,在調用過程中,必須注意寄存器的入棧。這樣在以后用到A/D轉換時,在C語言中調用匯編語言子程序AD()即可。 
3 C51中斷處理過程
  C51編譯器支持在C源程序中直接開發中斷過程,因此減輕了使用匯編語言的繁瑣工作,提高了開發效率。中斷服務函數的完整語法如下:
  void 函數名(void)[模式]
  [再入]interrupt n [using r]
  其中n(0~31)代表中斷號。C51編譯器允許32個中斷,具體使用哪個中斷由80C51系列的芯片決定。r(0~3)代表第r組寄存器。在調用中斷函數時,要求中斷過程調用的函數所使用的寄存器組必須與其相同。"再入"用于說明中斷處理函數有無"再入"能力。C51編譯器及其對C語言的擴充允許編程者對中斷所有方面的控制和寄存器組的使用。這種支持能使編程者創建高效的中斷服務程序,用戶只須在C語言下關心中斷和必要的寄存器組切換操作。
  例3 設單片機的fosc=12MHz,要求用T0的方式1編程,在P1.0腳輸出周期為2ms的方波。
  用C語言編寫的中斷服務程序如下:
#include
sbit P1_0=P1^0;
void timer0(void)interrupt 1 using 1 {
   /*T0中斷服務程序入口*/
P1_0=!P1_0;
TH0=-(1000/256);   /*計數初值重裝*/
TL0=-(1000%256);
}
void main(void)
{
TMOD=0x01;   /*T0工作在定時器方式1*/
P1_0=0;
TH0=-(1000/256);   /*預置計數初值*/

TL0=-(1000%256);
EA=1;      /*CPU開中斷*/
ET0=1;      /*T0開中斷*/
TR0=1;      /*啟動T0*/
do{}while(1);
}
 在編寫中斷服務程序時必須注意不能進行參數傳遞,不能有返回值。
4 結論
  C51編譯器不但可以縮短單片機控制系統的開發周期,而且易于調試和維護。此外,C51語言還有許多強大的功能,如提供豐富的庫函數供用戶直接調用,完整的編譯控制指令為程序調試提供必要的符號信息等等。總之,C51語言是廣大單片機開發人員的強有力的工具。

Tags:C51語言,編程,問題  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 亚洲午夜激情影院| 成人污网站在线观看| 日韩黄色短视频| 成人手机在线播放| 国内精品国产三级国产aⅴ久| 日本欧美黄色片| 内射国产内射夫妻免费频道| 99在线免费视频观看| www.欧美黄色| 131美女爱做视频| 草草视频在线免费观看| 免费拍拍拍网站| www国产精品内射老熟女| 久久国产精品视频在线观看| av日韩一区二区三区| www.av片| 成人羞羞国产免费网站| 一级黄色香蕉视频| www.cao超碰| 中国一级黄色录像| 妞干网在线视频观看| 久久久久久久久久久视频| 日韩欧美视频网站| 日韩大片一区二区| 99亚洲精品视频| 欧美日韩不卡在线视频| 欧美 日本 亚洲| 在线看的黄色网址| 欧美爱爱视频网站| 免费看日本毛片| 亚洲a级黄色片| 久久99久久99精品| 男人添女人下面免费视频| 精品亚洲视频在线| 成 年 人 黄 色 大 片大 全| 50路60路老熟妇啪啪| www.色就是色.com| 激情六月丁香婷婷| 国产日韩第一页| 国产一级不卡毛片| 亚洲区成人777777精品| 最近免费中文字幕中文高清百度| 亚洲视频一二三四| 日本www在线视频| 日本一区二区免费高清视频| 午夜免费精品视频| 国产精品自拍合集| 亚洲精品中文字幕乱码无线| 91好吊色国产欧美日韩在线| 污污的网站免费| av网站在线观看不卡| 亚洲啊啊啊啊啊| 三级性生活视频| 久久久国产欧美| 黄色一级视频片| 国产欧美日韩小视频| 青娱乐国产精品视频| 成人午夜激情av| 成人精品小视频| 精品国产免费av| 超碰成人免费在线| 成年丰满熟妇午夜免费视频| 久久久久xxxx| av在线免费看片| 三级av免费看| 做a视频在线观看| 超碰在线免费av| 婷婷中文字幕在线观看| 色噜噜狠狠一区二区| 国产成人黄色网址| 狠狠躁狠狠躁视频专区| 精品久久久久久中文字幕2017| 国产无限制自拍| xxxx18hd亚洲hd捆绑| 国产3p露脸普通话对白| 男女视频网站在线观看| 国产精品999视频| 日本精品一区在线观看| 99热成人精品热久久66| 午夜在线观看av| 一区二区三区日韩视频| 日本一道在线观看| 熟女少妇在线视频播放| 人妻内射一区二区在线视频 | 青青青在线视频播放| 男女视频网站在线观看| 日韩免费毛片视频| 99日在线视频| 久久亚洲国产成人精品无码区| 国产www免费| 日本xxxxxxx免费视频| 污视频网站观看| 国产精品无码电影在线观看| 91九色丨porny丨国产jk| 妓院一钑片免看黄大片| 在线观看免费视频污| 久久这里只有精品18| 男女爽爽爽视频| 真实国产乱子伦对白视频| 日本少妇高潮喷水视频| 一区二区三区四区毛片| 日韩五码在线观看| 999这里有精品| 欧洲精品一区二区三区久久| 我要看一级黄色大片| 成人午夜视频免费观看| 日日碰狠狠躁久久躁婷婷| 日本黄色福利视频| 国产91在线视频观看| 日本福利视频导航| 亚洲精品自拍网| 免费观看美女裸体网站| 亚洲精品中文字幕乱码无线| 国产极品粉嫩福利姬萌白酱| 老司机av福利| 涩涩网站在线看| 任你操这里只有精品| 国产一二三在线视频| 中文字幕在线中文| 999久久久精品视频| 免费大片在线观看| 蜜臀av无码一区二区三区| 日韩精品第1页| 国产美女视频免费看| av在线无限看| 丰满少妇在线观看| 性欧美极品xxxx欧美一区二区| 成人毛片一区二区| 国产 日韩 亚洲 欧美| 国产一二三区在线播放| 国产又粗又长又爽视频| 日韩中文在线字幕| 男人天堂网站在线| 日韩成人三级视频| 日韩成人三级视频| 欧美视频在线观看视频| 久艹在线免费观看| 欧美激情视频免费看| 日韩视频免费播放| 91视频 -- 69xx| 久久久久久久少妇| 欧美三级午夜理伦三级富婆| 手机在线成人免费视频| 亚欧精品在线视频| 免费的av在线| 欧美深夜福利视频| 少妇激情一区二区三区| 91人人澡人人爽人人精品| 免费看污污网站| 日本丰满大乳奶| 免费一级特黄毛片| 久久精品视频91| 亚洲综合123| 国产aaa免费视频| 国产成人av影视| 欧美日韩一区二区三区电影| 波多野结衣av一区二区全免费观看| 国产av人人夜夜澡人人爽麻豆| 黄色免费视频大全| 国内自拍第二页| 久久手机在线视频| 欧美男女交配视频| 久久久久久av无码免费网站下载| 男人天堂av片| 在线观看免费视频污| 成人在线观看你懂的| 91插插插插插插插插| 久久久久久久9| 手机视频在线观看| 国产乱子伦精品无码专区| 欧美国产亚洲一区| 中文字幕第一页亚洲| 韩国一区二区av| 国产手机免费视频| 九九九九九伊人| 日韩欧美xxxx| 国产精品久久..4399| 不卡中文字幕在线观看| 中国丰满人妻videoshd| 免费成人进口网站| 国产一级片自拍| 日韩人妻精品无码一区二区三区| 国产高清av片| 性chinese极品按摩| 国产最新免费视频| 男人天堂av片| 国产日产欧美一区二区| 国产三级生活片| 激情视频免费网站| 亚洲精品高清无码视频| 一二三四视频社区在线| www婷婷av久久久影片| 最新视频 - x88av| 一区二区三区一级片| 日韩a一级欧美一级| 亚洲涩涩在线观看| 亚洲成人手机在线观看| 国产美女视频免费看| 午夜福利123| 成人短视频在线看|