<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > C51語(yǔ)言應用編程的若干問(wèn)題

C51語(yǔ)言應用編程的若干問(wèn)題

作者: 時(shí)間:2012-07-04 來(lái)源:網(wǎng)絡(luò ) 收藏


  在以上程序中,函數的返回值為一無(wú)符號整型數,根據調用規則,返回值的高位必須在R6中,低位在R7中,這樣才可保證數據的傳遞不出錯。另外,在調用過(guò)程中,必須注意寄存器的入棧。這樣在以后用到A/D轉換時(shí),在C語(yǔ)言中調用子程序AD()即可?!?BR>
3 中斷處理過(guò)程

  編譯器支持在C源程序中直接開(kāi)發(fā)中斷過(guò)程,因此減輕了使用的繁瑣工作,提高了開(kāi)發(fā)效率。中斷服務(wù)函數的完整語(yǔ)法如下:

  void 函數名(void)[模式]
 ?。墼偃耄輎nterrupt n [using r]

  其中n(0~31)代表中斷號。編譯器允許32個(gè)中斷,具體使用哪個(gè)中斷由80C51系列的芯片決定。r(0~3)代表第r組寄存器。在調用中斷函數時(shí),要求中斷過(guò)程調用的函數所使用的寄存器組必須與其相同。"再入"用于說(shuō)明中斷處理函數有無(wú)"再入"能力。C51編譯器及其對C語(yǔ)言的擴充允許編程者對中斷所有方面的控制和寄存器組的使用。這種支持能使編程者創(chuàng )建高效的中斷服務(wù)程序,用戶(hù)只須在C語(yǔ)言下關(guān)心中斷和必要的寄存器組切換操作。

  例3 設單片機的fosc=12MHz,要求用T0的方式1編程,在P1.0腳輸出周期為2ms的方波。

  用C語(yǔ)言編寫(xiě)的中斷服務(wù)程序如下:

#include reg51.h>
sbit P1_0=P1^0;
void timer0(void)interrupt 1 using 1 {
   /*T0中斷服務(wù)程序入口*/
P1_0=!P1_0;
TH0=-(1000/256);   /*計數初值重裝*/
TL0=-(1000%256);
}
void main(void)
{
TMOD=0x01;   /*T0工作在定時(shí)器方式1*/
P1_0=0;
TH0=-(1000/256);   /*預置計數初值*/
TL0=-(1000%256);
EA=1;      /*CPU開(kāi)中斷*/
ET0=1;      /*T0開(kāi)中斷*/
TR0=1;      /*啟動(dòng)T0*/
do{}while(1);
}

 在編寫(xiě)中斷服務(wù)程序時(shí)必須注意不能進(jìn)行參數傳遞,不能有返回值。

4 結論

  C51編譯器不但可以縮短單片機控制系統的開(kāi)發(fā)周期,而且易于調試和維護。此外,C51語(yǔ)言還有許多強大的功能,如提供豐富的庫函數供用戶(hù)直接調用,完整的編譯控制指令為程序調試提供必要的符號信息等等??傊?,C51語(yǔ)言是廣大單片機開(kāi)發(fā)人員的強有力的工具。


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>