再问个关于keilC中内嵌汇编的问题

luoliushui 2009-12-21 07:28:17
下面的程序编译通过,也没警告,想问下能这么引用内嵌汇编的延时函数吗delay(5);我吧RET注释掉了,不然只执行一次就退出来了???

#include<at89x51.h>
#define uint unsigned int
#define uchar unsigned char

void delay(uchar a)
{
uchar num=a;
do
{
#pragma asm

DELAY882: ;1.085x ((202x4)+5)=882
MOV R7,#202
DELAY882_A:
NOP
NOP
DJNZ R7,DELAY882_A
//RET
#pragma endasm
}
while(num--);
}
void main()
{
delay(5);
}

...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangtang331 2009-12-26
  • 打赏
  • 举报
回复
帮顶!
lbing7 2009-12-21
  • 打赏
  • 举报
回复
可以,在编译的时候把生成汇编源文件那个选项勾上

另外,在链接库里加入你相应到的汇编的连接模式LIB
luoliushui 2009-12-21
  • 打赏
  • 举报
回复
谢谢了,我只是想看看能不能那样子调用内嵌汇编的延时函数而已,主函数只是方便看,实际不会那样子的,谢了
宇帆 2009-12-21
  • 打赏
  • 举报
回复
不要那个RET 看看这篇文章吧
http://hi.baidu.com/mikenoodle/blog/item/a9d1a30fc5a28fe7ab645786.html
空影 2009-12-21
  • 打赏
  • 举报
回复
你的main函数里不是 个死循环,当然是执行一次就退出了,可以改为
void main()
{ while(1)
delay(5);
}

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧