欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c51匯編語(yǔ)言聲明函數(shù) 匯編語(yǔ)言聲明變量

單片機(jī)C語(yǔ)言編程,要使用C語(yǔ)言自帶的庫(kù)函數(shù),使用哪個(gè)宏包含命令?

使用#include調(diào)用庫(kù)函數(shù)。

目前成都創(chuàng)新互聯(lián)已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、三水網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

C51語(yǔ)言的編譯器中包含有豐富的庫(kù)函數(shù),使用庫(kù)函數(shù)可以大大簡(jiǎn)化用戶程序設(shè)計(jì)的工作量,提高編程效率。每個(gè)庫(kù)函數(shù)都在相應(yīng)的頭文件中給出了函數(shù)原型聲明,在使用時(shí),必須在源程序的開(kāi)始處使用預(yù)處理命令#include將有關(guān)的頭文件包含進(jìn)來(lái)。

C51庫(kù)函數(shù)中類(lèi)型的選擇考慮到了8051單片機(jī)的結(jié)構(gòu)特性,用戶在自己的應(yīng)用程序中應(yīng)盡可能地使用最小的數(shù)據(jù)類(lèi)型,以最大限度地發(fā)揮8051單片機(jī)的性能,同時(shí)可減少應(yīng)用程序的代碼長(zhǎng)度。

單片機(jī)c語(yǔ)言編程是基于C語(yǔ)言的單片機(jī)編程。單片機(jī)的C語(yǔ)言采用C51編譯器(簡(jiǎn)稱(chēng)C51)。由C51產(chǎn)生的目標(biāo)代碼短,運(yùn)行速度高,存儲(chǔ)空間小,符合C語(yǔ)言的ANSI標(biāo)準(zhǔn),生成的代碼遵循Intel目標(biāo)文件格式,而且可與A51匯編語(yǔ)言PL/M51語(yǔ)言目標(biāo)代碼混合使用。51單片機(jī)支持三種高級(jí)語(yǔ)言,即PL/M,C和BASIC。C語(yǔ)言是一種通用的程序設(shè)計(jì)語(yǔ)言,其代碼率高,數(shù)據(jù)類(lèi)型及運(yùn)算符豐富,并具有良好的程序結(jié)構(gòu),適用于各種應(yīng)用的程序設(shè)計(jì),是使用較廣的單片機(jī)編程語(yǔ)言。

51單片機(jī)的編程問(wèn)題?

1:C51編譯器如何區(qū)分位地址和字節(jié)地址

是靠預(yù)定義實(shí)現(xiàn)的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者聲明了P0端口地址位于0x80,后者說(shuō)明了P0端口的bit0,即P0.0位于位地址空間0x80處。這2個(gè)0x80具有完全不同的含義,靠關(guān)鍵字sfr和sbit來(lái)區(qū)別。這樣當(dāng)程序被編譯時(shí),編譯器會(huì)依此編譯成相應(yīng)的匯編語(yǔ)言。例如:

C51語(yǔ)句: P0 = 1;

P0聲明為sfr,因此編譯成:mov 80h,01h,將把0x01數(shù)據(jù)送入0x80單元,由于0x80單元物理上對(duì)應(yīng)P0端口,因此,P0.0腳將輸出高電平(其實(shí)是呈現(xiàn)高阻態(tài),P0口獨(dú)有的),其他.1-.7腳輸出低電平。

C51語(yǔ)句: P0_0 = 1;

P0_0聲明為sbit,因此編譯成:setb 80h,這將把位地址空間的0x80地址的bit的值置1。這個(gè)位正是P0口的bit0,執(zhí)行后,P0.0將輸出高阻態(tài)。而P0.1-.7不會(huì)變化。

2:C51為什么要嵌套匯編

51單片機(jī)一個(gè)顯著優(yōu)點(diǎn)就是指令執(zhí)行時(shí)間固定,因此可以適應(yīng)時(shí)序要求嚴(yán)格的場(chǎng)合。例如符合ISO7816協(xié)議的cpu卡的讀寫(xiě),對(duì)時(shí)序要求比較嚴(yán)格。其實(shí)就是用io腳做出來(lái)的同步半雙工串口。支持cpu卡的程序一般比較龐大,需要用c51來(lái)組織,但是由于c編譯的不確定性,必須把底層程序封裝成匯編語(yǔ)言模塊嵌入到工程中。這就帶來(lái)幾個(gè)問(wèn)題:如何聲明函數(shù)、參數(shù)如何傳遞等。限于篇幅,不能說(shuō)得很細(xì)。下面舉例:

匯編程序單獨(dú)保存一個(gè)文件,加入到工程中,函數(shù)如下:

_proc_a:

mov a, r7

inc a

mov r7, a

ret

用c語(yǔ)言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);

調(diào)用時(shí)形如: retvalue = proc_a(0x11);

說(shuō)明:

a:匯編程序如果帶參數(shù),則需要在匯編程序前多加一個(gè)下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。

b:函數(shù)的形參中第一參數(shù)用R7傳遞,函數(shù)返回值用R7返回,這是C51的通用規(guī)范。其他參數(shù)都有相應(yīng)規(guī)定。函數(shù)可以返回一個(gè)位,用psw的c位返回。c:上面的語(yǔ)句,執(zhí)行順序是把0x11給R7,然后跳轉(zhuǎn)子程序,子程序?qū)⑺?后送回。

d:函數(shù)跳轉(zhuǎn)到匯編程序時(shí),本區(qū)的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調(diào)用后是否要恢復(fù)這些常規(guī)資源。上例中,A的值被函數(shù)使用了,編程者不必恢復(fù)調(diào)用前的值。

怎樣在單片機(jī)C代碼中加入?yún)R編延時(shí)子程序?

(1)、C51語(yǔ)言中調(diào)用匯編語(yǔ)言程序;

C51語(yǔ)言調(diào)用匯編語(yǔ)言程序要注意以下幾點(diǎn):

1:在文件欄選中File Group和C51程序原文件,在配置文件選項(xiàng)中激活“產(chǎn)生匯編(SRC)文件,“編譯(SRC)文件”和“創(chuàng)建工程(目標(biāo))時(shí)包含”三個(gè)選項(xiàng)。

2:根據(jù)選擇的編譯模式,把相應(yīng)的庫(kù)文件(如SMALL模式,庫(kù)文件為KEIL\C51\LIB\C51S.LIB)加入工程中。

3:在C51語(yǔ)言中必須聲明需要調(diào)用的函數(shù)為外部函數(shù)。extern void DELAY(void);

4:在匯編語(yǔ)言程序中必須聲明被調(diào)用子程序?yàn)楣沧映绦颍诒徽{(diào)用的文件中還需要聲明此文件是可從新定位的。

PUBLIC DELAY,DEL

DELAYY SEGMENT CODE

RSEG DELAYY

實(shí)例如下:

C51語(yǔ)言文件:

#include "reg51.h"

extern void DELAY(void);

extern void DEL(void);

void main(void)

{

P1=0x00;

DELAY();

DEL();

P1=0xff;

}

匯編語(yǔ)言文件:

PUBLIC DELAY,DEL

DELAYY SEGMENT CODE

RSEG DELAYY

DELAY: MOV R2,#3H

DJNZ R2,$

RET

DEL: MOV R3,#03H

DJNZ R3,$

RET

END

(2)、C51語(yǔ)言中嵌入?yún)R編程序;

在C51語(yǔ)言中嵌套使用匯編語(yǔ)言編寫(xiě)程序要注意以下的幾個(gè)問(wèn)題:

1:在文件欄選中File Group和C51程序原文件,在配置文件選項(xiàng)中激活“產(chǎn)生匯編(SRC)文件,“編譯(SRC)文件”和“創(chuàng)建工程(目標(biāo))時(shí)包含”三個(gè)選項(xiàng)。

2:根據(jù)選擇的編譯模式,把相應(yīng)的庫(kù)文件(如SMALL模式,庫(kù)文件為KEIL\C51\LIB\C51S.LIB)加入工程中。

3:用#pragma asm,和#pragma endasm語(yǔ)句包含嵌入的匯編語(yǔ)言程序。

實(shí)例如下:

#include "reg51.h"

void delay(void);

void main(void)

{

void delay(void);

P1=0x00;

#pragma asm

MOV R3,#08H

DJNZ R3,$

#pragma endasm

P1=0xff;

}

void delay(void)

{

#pragma asm

MOV R4,#08H

DJNZ R4,$

#pragma endasm

}

當(dāng)前標(biāo)題:c51匯編語(yǔ)言聲明函數(shù) 匯編語(yǔ)言聲明變量
鏈接URL:http://chinadenli.net/article16/doedddg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT網(wǎng)站制作網(wǎng)頁(yè)設(shè)計(jì)公司App開(kāi)發(fā)移動(dòng)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管