打印

求助!!!

[复制链接]
1573|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ruiwei0201|  楼主 | 2008-1-4 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的 是 keil c 
下面是我定义的函数

typedef void (*Func_ptr)(uchar s,uchar xdata *p1,uchar xdata *p2);

Func_ptr My_Func = (Func_ptr)0x98CC);

我要问的是为什么当我调用My_Func时,pc会跳到4998cc这个地址呢?

相关帖子

沙发
ayb_ice| | 2008-1-4 15:24 | 只看该作者

你把地址强制转换成了函数指针

还要问别人

使用特权

评论回复
板凳
dld2| | 2008-1-4 15:30 | 只看该作者

幽默

使用特权

评论回复
地板
ruiwei0201|  楼主 | 2008-1-4 15:36 | 只看该作者

多伦多

使用特权

评论回复
5
ruiwei0201|  楼主 | 2008-1-4 15:37 | 只看该作者

别笑

你们用过把函数直接下载到flash中,然后直接调用没?

使用特权

评论回复
6
ruiwei0201|  楼主 | 2008-1-4 15:41 | 只看该作者

2楼3楼

那我请教你们一下,如果0x98cc地址处存放着我要使用的函数,你们说该怎么调用?

使用特权

评论回复
7
dld2| | 2008-1-4 16:11 | 只看该作者

很不好意思

没看清楚就发言了。

一般在32位处理器上就是这麽用的。

keil在8位机是不是有一个code *这样的东西,专门定义在代码区的指针。
下面是我在网上看到的:
i = ((int(code*)(unsigned char, int))0xff00)(a,b);

使用特权

评论回复
8
ruiwei0201|  楼主 | 2008-1-4 16:18 | 只看该作者

dld2

没关系,我关心的是解决问题.我已经试过用这种方法了,跟我上面的用法是一样的结果...

使用特权

评论回复
9
ruiwei0201|  楼主 | 2008-1-4 16:21 | 只看该作者

更正8楼

我说错了,用i = ((int(code*)(unsigned char, int))0xff00)(a,b);
这种方法调用的话跳转的地址也是不正确的地址(9810).不知道为什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

149

帖子

0

粉丝