⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 关于在 keil c51 中嵌入汇编以及c51与a51间的相互调用[中国dsp网].htm

📁 该源码是本人经调试通过的UCOS2操作系统在51单片机上移植好的源代码
💻 HTM
📖 第 1 页 / 共 3 页
字号:
		break;
		case 5 :
		if(dd>=22){return('<img src=Skins/Default/birth/z3.gif alt=双子座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z2.gif alt=金牛座'+mm+'-'+dd+'>');}
		break;
		case 6 :
		if(dd>=22){return('<img src=Skins/Default/birth/z4.gif alt=巨蟹座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z3.gif alt=双子座'+mm+'-'+dd+'>');}
		break;
		case 7 :
		if(dd>=23){return('<img src=Skins/Default/birth/z5.gif alt=狮子座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z4.gif alt=巨蟹座'+mm+'-'+dd+'>');}
		break;
		case 8 :
		if(dd>=24){return('<img src=Skins/Default/birth/z6.gif alt=处女座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z5.gif alt=狮子座'+mm+'-'+dd+'>');}
		break;
		case 9 :
		if(dd>=24){return('<img src=Skins/Default/birth/z7.gif alt=天秤座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z6.gif alt=处女座'+mm+'-'+dd+'>');}
		break;
		case 10 :
		if(dd>=24){return('<img src=Skins/Default/birth/z8.gif alt=天蝎座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z7.gif alt=天秤座'+mm+'-'+dd+'>');}
		break;
		case 11 :
		if(dd>=23){return('<img src=Skins/Default/birth/z9.gif alt=射手座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z8.gif alt=天蝎座'+mm+'-'+dd+'>');}
		break;
		case 12 :
		if(dd>=22){return('<img src=Skins/Default/birth/z10.gif alt=魔羯座'+mm+'-'+dd+'>');}
		else{return('<img src=Skins/Default/birth/z9.gif alt=射手座'+mm+'-'+dd+'>');}
		break;
		default : return('');
}
	}else{return('');}
}
function MM_showHideLayers() { //v6.0

  var i,p,v,obj,args=MM_showHideLayers.arguments;
  obj=document.getElementById("MagicFace");
  for (i=0; i<(args.length-2); i+=3) if (obj) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function DispMagicEmot(MagicID,H,W){
	MagicFaceUrl = "Dv_plus/tools/magicface/swf/" + MagicID + ".swf";
	document.getElementById("MagicFace").innerHTML = '<OBJECT codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + W + '" height="' + H + '"><PARAM NAME=movie VALUE="'+ MagicFaceUrl +'"><param name=menu value=false><PARAM NAME=quality VALUE=high><PARAM NAME=play VALUE=false><param name="wmode" value="transparent"><embed src="' + MagicFaceUrl +'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="' + W + '" height="' + H + '"></embed>';
	document.getElementById("MagicFace").style.top = '250px';
	document.getElementById("MagicFace").style.left = '250px';
	document.getElementById("MagicFace").style.visibility = 'visible';
	MagicID += Math.random();
	setTimeout("MM_showHideLayers('MagicFace','','hidden')",5000);
	NowMeID = MagicID;
}
function LoadMagicEmot(MagicID,topicid){
var cookiesstr=readCookie('mofaface_'+ topicid);
if (cookiesstr ==null){
createCookie('mofaface_'+ topicid,MagicID,365)
DispMagicEmot(MagicID,350,500)
}
}
</SCRIPT>

<DIV class=main 
style="MARGIN-TOP: 4px; MARGIN-BOTTOM: 4px; LINE-HEIGHT: 28px; HEIGHT: 28px">
<DIV id=posttopic title=发表一个新帖子 
onclick="location.href='post.asp?action=new&amp;boardid=3'"></DIV>
<DIV id=postalipay title=发起一个用支付宝交易的交易贴,支付宝交易买卖都有保障,免手续费、安全、快捷! 
onclick="location.href='post.asp?action=new&amp;boardid=3&amp;stype=1'"></DIV>
<DIV id=postvote title=发起一个新投票 
onclick="location.href='post.asp?action=vote&amp;boardid=3'"></DIV>
<DIV id=repost title=回复贴子 
onclick="location.href='post.asp?action=re&amp;boardid=3&amp;id=500&amp;star=1&amp;page=1'"></DIV>
<DIV style="FLOAT: right">您是本帖的第 <B>65</B> 个阅读者 </DIV></DIV>
<DIV class=th>
<DIV style="FLOAT: right; TEXT-ALIGN: right"><A title=树形显示贴子 
style="FONT-WEIGHT: normal; MARGIN-RIGHT: 10px" 
href="http://www.chinadsp.cn/bbs/dispbbs.asp?BoardID=3&amp;replyID=1193&amp;id=500&amp;skin=1">树形</A> 
<A title=打印本贴内容 style="FONT-WEIGHT: normal; MARGIN-RIGHT: 10px" 
href="http://www.chinadsp.cn/bbs/TopicOther.asp?t=5&amp;BoardID=3&amp;id=500" 
target=_blank>打印</A> </DIV>
<DIV style="FLOAT: left; TEXT-INDENT: 10px; HEIGHT: 24px">
<DIV style="FLOAT: left">标题:</DIV>关于在 KEIL C51 
中嵌入汇编以及C51与A51间的相互调用</DIV></DIV><A name=1193></A>
<DIV class=postlary1>
<DIV class=postuserinfo>
<DIV 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; PADDING-TOP: 10px; HEIGHT: 30px">
<DIV 
style="FILTER: glow(color='#9898BA',strength='2'); FLOAT: left; WIDTH: 120px"><B><FONT 
color=#ff0000>wen_zl</FONT></B></DIV>
<DIV style="FLOAT: left; MARGIN: 3px; WIDTH: 23px; TEXT-INDENT: 0px"><IMG 
alt=帅哥哟,在线,有人找我吗? 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/Male.gif"> </DIV>
<DIV style="FLOAT: left; MARGIN: 5px; WIDTH: 15px; TEXT-INDENT: 0px">
<SCRIPT language=javascript type=text/javascript>document.write (astro('1983-07-29'));</SCRIPT>
</DIV></DIV>
<DIV><IMG height=100 alt="" 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/11_2006511334863897.jpg" 
width=100></DIV>
<DIV><IMG style="MARGIN: 5px 0px" 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/level20.gif"></DIV>
<DIV>头衔:店主</DIV>
<DIV>等级:管理员</DIV>
<DIV>文章:847</DIV>
<DIV>积分:7643</DIV>
<DIV>门派:无门无派</DIV>
<DIV>注册:2006年2月26日</DIV></DIV>
<DIV class=postie>
<DIV>
<DIV style="FLOAT: right">楼主</DIV>&nbsp;<A 
href="https://www.alipay.com/payto:wen_zl@163.com&amp;partner=2088002048522272" 
target=_blank><IMG alt=用支付宝给wen_zl付款或购买其商品,支付宝交易免手续费、安全、快捷! 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/alipay_s.gif" align=middle 
border=0></A> <A title=点击发送QQ消息给wen_zl 
href="http://wpa.qq.com/msgrd?V=1&amp;Uin=342665334&amp;Site=By Dvbbs&amp;Menu=yes" 
target=_blank><IMG height=16 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/qq1_online.gif" width=16 
align=middle border=0></A> QQ <A href="mailto:wen_zl@163.com"><IMG 
alt=点击这里发送电子邮件给wen_zl 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/email.gif" align=middle 
border=0></A> <A href="http://shop33496317.taobao.com/" target=_blank><IMG 
alt=访问wen_zl的主页 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/homepage.gif" align=middle 
border=0></A> </DIV>
<HR>

<DIV style="LINE-HEIGHT: 22px; HEIGHT: 22px">
<DIV style="FLOAT: left"><IMG alt=发贴心情 
src="关于在 KEIL C51 中嵌入汇编以及C51与A51间的相互调用[中国DSP网].files/face1.gif"></DIV><B>关于在 
KEIL C51 中嵌入汇编以及C51与A51间的相互调用</B></DIV>
<DIV 
style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" 
onload="this.style.overflowX='auto';">如何在 KEIL C51(v6.21) 中调用汇编函数的一个示例 
[ycong_kuang]<BR><BR>有关c51调用汇编的方法已经有很多帖子讲到,但是一般只讲要点,很少有对整个过程作详细描述,对于初学者是不够的,这里笔者<BR>通过一个简单例子对这个过程进行描述,希望能对初学者有所帮助。几年来,在这个论坛里笔者得到很多热心人指导,因此也希望<BR>藉此尽一点绵薄之力。<BR><BR>在这个例子里,阐述了编写c51程序调用汇编函数的一种方法,这个外部函数的入口参数是一个字符型变量和一个位变量,返回值是<BR>一个整型变量。例中,先用c51写出这个函数的主体,然后用SRC控制指令编译产生asm文件,进一步修改这个asm文件就得到我们所<BR>要的汇编函数。该方法让编译器自动完成各种段的安排,提高了汇编程序的编写效率。<BR><BR>step1. 
按写普通c51程序方法,建立工程,在里面导入main.c文件和CFUNC.c文件。<BR><BR>相关文件如下:<BR><FONT 
color=#00aa66>//main.c文件</FONT><BR>#include &lt; reg51.h &gt;<BR><BR>#define 
uchar unsigned char<BR>#define uint unsigned int<BR><BR>extern uint AFUNC(uchar 
v_achr,bit v_bflag);<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;bit 
BFLAG;<BR>&nbsp;&nbsp;&nbsp;&nbsp;uchar 
mav_chr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;uint&nbsp;&nbsp;&nbsp;&nbsp;mvintrslt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;mav_chr=0xd4; 
BFLAG=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;mvintrslt=AFUNC(mav_chr,BFLAG);<BR>}<BR><BR><FONT 
color=#00aa66>//CFUNC.c文件</FONT><BR><BR>#define uchar unsigned char<BR>#define 
uint unsigned int<BR><BR>uint AFUNC(uchar v_achr,bit 
v_bflag)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;uchar 
tmp_vchr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;uint&nbsp;&nbsp;tp_vint;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;tmp_vchr=v_achr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tp_vint=(uint)v_bflag;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 
tmp_vchr+(tp_vint&lt;&lt;8);<BR>}<BR><BR>step2. 在 Project 窗口中包含汇编代码的 C 
文件上右键,选择“Options for ...”,点击右边的“Generate Assembler 
SRC<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File”和“Assemble SRC 
File”,使检查框由灰色变成黑色(有效)状态;<BR><BR>step3. 根据选择的编译模式,把相应的库文件(如 Small 模式时,是 
Keil\C51\Lib\C51S.Lib)加入工程中,该文件必须作为工<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
程的最后文件;<BR><BR>step4. 
build这个工程后将会产生一个CFUNC.SRC的文件,将这个文件改名为CFUNC.A51(也可以通过编译选项直接产生CFUNC.A51文<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
件),然后在工程里去掉库文件(如C51S.Lib)和CFUNC.c,而将CFUNC.A51添加到工程里。<BR><BR><FONT 
color=#00aa66>//CFUNC.SRC文件如下<BR>.\CFUNC.SRC generated from: 
CFUNC.c</FONT><BR>NAME CFUNC<BR><BR>?PR?_AFUNC?CFUNC&nbsp;&nbsp;&nbsp;&nbsp; 
SEGMENT CODE<BR>?BI?_AFUNC?CFUNC&nbsp;&nbsp;&nbsp;&nbsp; SEGMENT BIT 
OVERLAYABLE<BR>&nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;&nbsp;&nbsp;&nbsp;?_AFUNC?BIT<BR>&nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;&nbsp;&nbsp;&nbsp;_AFUNC<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RSEG&nbsp;&nbsp;?BI?_AFUNC?CFUNC<BR>?_AFUNC?BIT:<BR>&nbsp;&nbsp;&nbsp;&nbsp;v_bflag?041:&nbsp;&nbsp; 
DBIT&nbsp;&nbsp; 1<BR><FONT color=#00aa66>; #define uchar unsigned char<BR>; 
#define uint unsigned int<BR>;<BR>; uint AFUNC(uchar v_achr,bit 
v_bflag)</FONT><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RSEG&nbsp;&nbsp;?PR?_AFUNC?CFUNC<BR>_AFUNC:<BR>&nbsp;&nbsp;&nbsp;&nbsp;USING&nbsp;&nbsp;&nbsp;&nbsp;0<BR><FONT 
color=#00aa66>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
SOURCE LINE # 5<BR>;---- Variable ''v_achr?040'' assigned to Register ''R7'' 
----<BR>; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
SOURCE LINE # 6<BR>;&nbsp;&nbsp;&nbsp;&nbsp; uchar 
tmp_vchr;<BR>;&nbsp;&nbsp;&nbsp;&nbsp; 
uint&nbsp;&nbsp;&nbsp;&nbsp;tp_vint;<BR>;<BR>;&nbsp;&nbsp;&nbsp;&nbsp; 
tmp_vchr=v_achr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
SOURCE LINE # 10<BR>;---- Variable ''tmp_vchr?042'' assigned to Register ''R5'' 
----</FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R5,AR7<BR><FONT 
color=#00aa66>;&nbsp;&nbsp;&nbsp;&nbsp; 
tp_vint=(uint)v_bflag;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
SOURCE LINE # 
11</FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C,v_bflag?041<BR>&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A<BR>&nbsp;&nbsp;&nbsp;&nbsp;RLC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A<BR><FONT 
color=#00aa66>;---- Variable ''tp_vint?043'' assigned to Register ''R6/R7'' 
----<BR>;&nbsp;&nbsp;&nbsp;&nbsp; return 
tmp_vchr+(tp_vint&lt;&lt;8);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
SOURCE LINE # 
12</FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R4,#00H<BR>&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A<BR>&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A,R5<BR>&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R7,A<BR>&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A,R4<BR>&nbsp;&nbsp;&nbsp;&nbsp;ADDC&nbsp;&nbsp;&nbsp;&nbsp; 
A,R6<BR>&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,A<BR><FONT 
color=#00aa66>; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
SOURCE LINE # 13</FONT><BR>?C0001:<BR>&nbsp;&nbsp;&nbsp;&nbsp;RET<BR><FONT 
color=#00aa66>; END OF 
_AFUNC</FONT><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;END<BR><BR>step5. 
检查main.c的“Generate Assembler SRC File”和“Assemble SRC 
File”是否有效,若是有效则点击使检查框变成无效状<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
态;再次build这个工程,到此你已经得到汇编函数的主体,修改函数里面的汇编代码就得到你所需的汇编函数了。<BR><BR>参考文献:<BR>&nbsp;&nbsp;1.徐爱钧,彭秀华。单片机高级语言C51windows环境编程与应用,电子工业出版社<BR>&nbsp;&nbsp;2.<A 
href="http://www.c51bbs.com/" 
target=_blank>http://www.c51bbs.com/</A>,&nbsp;&nbsp;C51编程:关于在 KEIL C51 
中直接嵌入汇编。。。帖子编号: 83838 
发表用户:Youth<BR>&nbsp;&nbsp;.................................................................................................................<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
keil中汇编函数调用c51函数 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -