當前位置:首頁 » 編程軟體 » 簡述C51的編譯模式

簡述C51的編譯模式

發布時間: 2023-02-09 22:12:47

『壹』 在C51語言中如何嵌入匯編語言

keil C 語言中嵌入匯編語言進行混合編程,方法如下:

1、在C 文件中要嵌入匯編代碼片以如下方式加入匯編代碼

#pragma ASM

; Assembler Code Here

#pragma ENDASM

2、在Project 窗口中包含匯編代碼的C 文件上右鍵,選擇「Options for ...」

4、編譯,即可生成目標代碼

實例:

#include<reg52.h>

#define uchar unsigned char

sbit LED1=P1^0;

//C 嵌入匯編常式

void delay_ms(void)

{

#pragma asm

MOV R0,#0FFH

MOV R1,#0FFH

D_LOOP1:

DJNZ R0,D_LOOP1

MOV R0,#0FFH

DJNZ R1,D_LOOP1

#pragma endasm

}

void main(void)

{

uchar i;

P1 = 0xFF;

while(1)

{

i++;

delay_ms();

if(i>=7)

{

LED1 =~LED1;

i=0;

}

}

}

『貳』 C51語言的混合編程

C51編譯器能對C語言源程序進行高效率的編譯,生成高效簡潔的代碼,在絕大多數場合採用C語言編程即可完成預期的目的。但有時為了編程直觀或某些特殊地址的處理,還須採用一定的匯編語言編程。而在另一些場合,出於某種目的,匯編語言也可調用C語言。在這種混合編程中,關鍵是參數的傳遞和函數的返回值。它們必須有完整的約定,否則數據的交換就可能出錯,例 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()即可。

『叄』 c51提供哪3種編譯模式

case 1(0x87): case 2(0x47): case 3(0x27): case 4(0x17): 這樣編譯是沒有問題 但是燒到板子上以後程序是否能達到需要的結果就不是很

熱點內容
鋪地板編程 發布:2024-05-16 21:07:36 瀏覽:458
蘋果手機緩存刪除 發布:2024-05-16 21:04:35 瀏覽:506
scratch編程電子書 發布:2024-05-16 21:02:54 瀏覽:227
wps加密文件忘記密碼 發布:2024-05-16 21:01:37 瀏覽:930
不義聯盟安卓版在哪裡下載 發布:2024-05-16 21:00:42 瀏覽:726
微信存儲空間不足怎麼辦 發布:2024-05-16 21:00:24 瀏覽:790
dh加密演算法 發布:2024-05-16 20:14:34 瀏覽:871
iosandroid測試 發布:2024-05-16 20:14:33 瀏覽:755
河源市微稅平台伺服器地址 發布:2024-05-16 20:11:19 瀏覽:150
資料庫刷數 發布:2024-05-16 19:59:06 瀏覽:365