找回密码
 注册
关于网站域名变更的通知
查看: 562|回复: 2
打印 上一主题 下一主题

如何实现c51和asm的混编

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-7 13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如何实现c51和asm的混编
. o3 D3 u# W, W! y" X* j) U
# O$ |  f/ G5 S
这是我在编程中积累的经验,希望对大家有用!
如何实现C51和汇编的混合编程
) {2 a. K/ q$ R/ u- r6 f/ V7 L(文中用到的编译器一律为keil), ~  H4 t; `! Z* O* F
1、首先来个范例,并从这个范例展开说明:
, u: n/ e) F, Z! [3 z............       //C51 Code here" c* Q5 \4 _. F9 K: @, y4 U
#pragma ASM
, r* _' c" S- D2 L* ?.............     //Here is the Assembler Code$ o7 _# \6 J5 _
#pragma ENDASM7 H* J8 U4 F: ^" ~
...........      //C51 Code here
2、看到范例,大家应该对实现C51和汇编的混合有个大概了解了,呵呵,
其实也就这么一回事。
# c! {0 z& Z2 X3 H2 x- a但是我们还必须要做一些前提工作,首先在Project窗口中包含汇编代码(
ASM)的C文件单击右键,选择“Options for ...”,然后点击“Generate
Assembler SRC File”和“Assemble SRC File”
3、根据选择的编译模式,把相应的库文件加入工程,应该注意的是,这个
文件必须作为该工程的最后一个文件
' P: o7 P- Z9 {
4、大家可以复制下面这个C51和汇编的混编代码练习一下,加深印象# q  T2 Y6 p5 |3 Z
#i nclude <reg51.h>. f) {# A( h7 r& D" O: f
void main(void)' C% _* @3 s. x3 V. l' T
{
2 ^5 t8 O' c- a2 e0 q8 M+ iP2=0x00;/ p7 w% ^5 l0 N4 I* `, M
#pragma asm& k- p+ z" h6 _$ g! G
      MOV R7,#104 o/ F& N, n/ C$ s, Q) R0 U6 y# [& z5 i
#pragma endasm
4 Z& z2 y8 C" P$ I3 u3 LP2=0xff;
8 w/ k5 o9 @" |. z  J, c; @* S$ s}
# ]0 W$ K" |/ B% f" w
, ?) ~: k1 ^3 O" k1 k! |: n- P5、上面的过程掌握了以后,我们再来看一下如何实现无参数传递的函数调2 D% X" `2 N2 d' H% X6 F

. v$ c, Y+ O* f- M7 w例如我们要调用一个延时函数delay()" T# }# J4 P" u0 O* ^4 x1 y
     //C51" P  D% h0 `& s: P, z2 I+ A
extern void delayms();   //声明( Z4 E/ X" e2 N8 a3 n6 V
int main()
. G8 n- a- w4 T  n{: P; N& F/ L# B, r+ ~
delayms();   //调用6 O/ ^% u# w5 v  g2 [# \# d+ I
}
( ^; k" L, Z4 @7 b& L; G) b0 f/ V. V
6、有参传递/ h# S: g. a+ ^/ h- K$ c
其实是一样的,就是在子函数中加了参数罢了% G) _/ P7 }9 Z3 q) j
例如:int delay(int minite,int second,……)//参数可以多个

# Y! w$ ]. n4 O+ n- z

该用户从未签到

2#
发表于 2018-12-7 13:58 | 只看该作者
不错 感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-28 21:07 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表