單片機(jī)的一些開發(fā)實(shí)用技巧
函數(shù)名的轉(zhuǎn)換規(guī)律
主函數(shù)中的聲明 匯編符號(hào)名 說明
Void func(void) FUNC 無參數(shù)傳遞
Void func(char)_FUNC 帶寄存器參數(shù)傳遞
Void func(void)reentrant_?FUNC 重入函數(shù)包含棧內(nèi)參數(shù)傳遞
表1
接收參數(shù)寄存器
參數(shù)序號(hào)charintLong,float通用指針
1R7R6、R7R4~R7R1~R3
2R5R4、R5--
3R3R2、R3--
表2
返回值類型與寄存器對(duì)照
返回值類型寄存器說明
BitC(標(biāo)志位)由具體標(biāo)志位返回
Char/unsigned char/1_byte指針R7單字節(jié)由R7返回
Int/ unsigned int/2_byte指針R6、R7雙字節(jié)由R6、R7返回,高位在R6中,低位在R7中
Long/ unsigned longR4~R7四字節(jié)由R4~R7返回,高位在R4中,低位在R7中
FloatR4~R732bit IEEE格式,指數(shù)和符號(hào)位在R7中
通用指針R1~R3存儲(chǔ)類型在R3中,高位在R2,低位在R1
表3
下面通過兩個(gè)實(shí)例說明。
例4(無參數(shù)傳遞):
1.按照Keil的使用方法,建立工程文件并添加C51編寫的主程序test4.c(圖5)。
/*------------程序名test4.c------------*/
#include P 晶振頻率12.000MHz<>
/****************/
void delay(void);//延時(shí)函數(shù)聲明
/***************/
void main (void)//主函數(shù),其功能使P1.0交替輸出高、低電平的方波
{
while(1)
{P1_0=!P1_0;
delay();}
}
圖5
2.用匯編語言編制一段205μS精確延時(shí)程序ttest4.asm并添加到工程中(圖6)。UDELAY SEGMENT CODE
RSEG UDELAY
PUBLICDELAY
DELAY: MOV R0,#100
LOOP:
DJNZ R0,LOOP
RET
END
圖6
3.點(diǎn)擊Rebuild target(重建所有目標(biāo)文件)即可得到正確的編譯結(jié)果(圖7)。
圖7
例5(有參數(shù)傳遞):1.按照Keil的使用方法,建立工程文件并添加C51編寫的主程序test5.c(圖8)。
評(píng)論