IAR环境下 C语言中怎么嵌入汇编写延时程序?

Python012

IAR环境下 C语言中怎么嵌入汇编写延时程序?,第1张

(1)、C51语言中调用汇编语言程序

C51语言调用汇编语言程序要注意以下几点:

1:在文件栏选中File Group和C51程序原文件,在配置文件选项中激活“产生汇编(SRC)文件,“编译(SRC)文件”和“创建工程(目标)时包含”三个选项。

2:根据选择的编译模式,把相应的库文件(如SMALL模式,库文件为KEIL\C51\LIB\C51S.LIB)加入工程中。

3:在C51语言中必须声明需要调用的函数为外部函数。extern void DELAY(void)

4:在汇编语言程序中必须声明被调用子程序为公共子程序,在被调用的文件中还需要声明此文件是可从新定位的。

PUBLIC DELAY,DEL

DELAYY SEGMENT CODE

RSEGDELAYY

实例如下:

C51语言文件:

#include "reg51.h"

extern void DELAY(void)

extern void DEL(void)

void main(void)

{

P1=0x00

DELAY()

DEL()

P1=0xff

}

汇编语言文件:

PUBLIC DELAY,DEL

DELAYY SEGMENT CODE

RSEGDELAYY

DELAY: MOV R2,#3H

DJNZR2,$

RET

DEL:MOV R3,#03H

DJNZR3,$

RET

END

(2)、C51语言中嵌入汇编程序;

在C51语言中嵌套使用汇编语言编写程序要注意以下的几个问题:

1:在文件栏选中File Group和C51程序原文件,在配置文件选项中激活“产生汇编(SRC)文件,“编译(SRC)文件”和“创建工程(目标)时包含”三个选项。

2:根据选择的编译模式,把相应的库文件(如SMALL模式,库文件为KEIL\C51\LIB\C51S.LIB)加入工程中。

3:用#pragma asm,和#pragma endasm语句包含嵌入的汇编语言程序。

实例如下:

#include "reg51.h"

void delay(void)

void main(void)

{

void delay(void)

P1=0x00

#pragma asm

MOV R3,#08H

DJNZR3,$

#pragma endasm

P1=0xff

}

void delay(void)

{

#pragma asm

MOV R4,#08H

DJNZR4,$

#pragma endasm

}

你可以使用软件仿真。

菜单栏选择Project,找到options,打开,也可以直接使用快捷键Alt+F7打开,在弹出的窗口中的左侧找到“Debugger”选中,再在右边的的窗口中的Setup中找到Driver,下拉选项框选择第一个Simulator,接着单击OK即可。

设置完以上步骤后,make编译一下(快捷键F7)。点击下载并仿真(download and debug)快捷键(Ctrl+D),就进入仿真界面了,按下快捷键F5,就可以运行代码。

提示,软件仿真与硬件仿真有一定的差异,尤其是涉及到硬件变化的,可能软件运行效果与实际运行效果相差很大,在真正的项目中很少有用软件仿真的,软件仿真就仅限于程序代码的调试,看看运算结果什么的是否符合预期。