打印

问个程序的解释?

[复制链接]
1828|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ty118|  楼主 | 2007-12-31 12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个是周立功的PDIUSBD12的固件程序的一段,想问一下:在Outportb()的函数调用中的D12_COMMAND是什么意思,还有D12_DATA是什么意思,好象不是一个普通的传递把,在程序的其他地方找不到这样的定义>在下面的j<<=8;j+=b1;为什么要这样的计算呢?百思不不的其解.谢谢各位的解释!

相关帖子

沙发
computer00| | 2007-12-31 12:12 | 只看该作者

D12_COMMAND和D12_DATA是两个地址,这个你看看D12的数据手册

它有命令地址和数据地址。这两个应该是宏定义,搜索一下应该可以找出来。

j<<=8;  //j已经读到一字节了,并且是高字节,所以将它左移8位

j+=b1;  //然后j再加上后面的8位,合并成一个16位的。

使用特权

评论回复
板凳
ty118|  楼主 | 2007-12-31 14:39 | 只看该作者

回复computer00

 D12_COMMAND和D12_DATA是两个地址需要在程序的开始定义或者声明一吗?

使用特权

评论回复
地板
computer00| | 2007-12-31 15:25 | 只看该作者

是的。你去找找,肯定可以找得到他们的定义。

使用特权

评论回复
5
ty118|  楼主 | 2007-12-31 16:33 | 只看该作者

在帮个忙?

#define D12_COMMAND(*(unsigned char xdata *)0xff01);
#define D12_DATA    (*(unsigned char xdata *)0x7f02);
帮忙解释一下这个宏定义和括号内的星号是什么意思,没有见过这样的定义,

使用特权

评论回复
6
ty118|  楼主 | 2007-12-31 21:05 | 只看该作者

急呀!

大家帮忙看一下.谢谢拉!

使用特权

评论回复
7
computer00| | 2007-12-31 23:10 | 只看该作者

这是指针用法。后面的分号是错误的。

#define D12_COMMAND (*(unsigned char xdata *)0xff01)
#define D12_DATA    (*(unsigned char xdata *)0x7f02)

(unsigned char xdata *)0xff01 这个的意思是强制将0xff01转化为一个unsigned char xdata型的指针,
假设这个指针为p,然后*p就是使用这个指针了。

使用特权

评论回复
8
ty118|  楼主 | 2008-1-1 10:21 | 只看该作者

谢谢拉!

非常感谢你的解释!

使用特权

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

本版积分规则

69

主题

209

帖子

0

粉丝