在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2953|回复: 3

[求助] 51汇编与C全面周立功

[复制链接]
发表于 2013-12-10 14:32:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
书上系统时钟例程能看懂,但后面对该例程的优化看不明白了。怎么将下面这段代码与时钟系统的c程序连接起来呢?我试了好长时间,一直没成功。
CSEG AT 0400H
bcdmap: DB '0' ,'0'
DB '0' ,'1'
DB '0' ,'2'
...
DB '5' ,'7'
DB '5' ,'8'
DB '5' ,'9'
END
 楼主| 发表于 2013-12-11 15:46:52 | 显示全部楼层
原程序中是这样初始化二维数组的。但这样的数组无法定位表头的地址,地址由keil自动编译产生。
uchar code bcdmap[60][2]={
"00", "01","02", "03","04", "05","06", "07","08", "09","10", "11","12", "13","14",
"15","16", "17","18", "19","20", "21","22", "23","24", "25","26", "27","28", "29",
"30", "31","32", "33","34", "35","36", "37","38", "39","40", "41","42", "43","44",
"45","46", "47","48", "49","50", "51","52", "53","54", "55","56", "57","58", "59"};

下面这段汇编代码就能把表头地址定位在ROM区的0400H位置上,缩短主程序查询表格的指令周期。就是用这段汇编代码取代原程序中的C语言定义的方法。 但是不知道怎么把这小段汇编代码与C程序连接起来。
 楼主| 发表于 2013-12-11 15:48:54 | 显示全部楼层
自己写的a51文件,用下面这段代码能与C程序连接上吗? 编译后提示 *** WARNING L9: EMPTY SEGMENTS ENCOUNTERED
NAME    ?C_STARTUP

?C_C51STARTUP   SEGMENT   CODE
?STACK          SEGMENT   IDATA
                  RSEG    ?STACK
                  DS      1
                  EXTRN CODE (?C_START)
                  PUBLIC  ?C_STARTUP
      
                  CSEG    AT      0
?C_STARTUP:   
      CSEG    AT      0400H
bcdmap:
DB  '0' ,'0'
DB  '0' ,'1'
.......
DB  '5' ,'9'
LJMP    ?C_START
                  END
图片2.jpg
发表于 2015-11-23 22:03:41 | 显示全部楼层
51汇编与C全面周立功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 06:49 , Processed in 0.018287 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表