打印
[技术问答]

N76E003 flash模拟EEPROM官方包里的程序看不懂

[复制链接]
1569|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nj786c|  楼主 | 2019-3-3 23:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
UINT8 Read_APROM_BYTE(UINT16 code *u16_addr)
{
        UINT8 rdata;
        rdata = *u16_addr>>8;//没看明白为什么右移8
        return rdata;
}
没看明白为什么右移8?官方包的程序
沙发
二九结狐六体| | 2019-3-4 09:24 | 只看该作者
等大佬来啊吧!

使用特权

评论回复
板凳
jasontu| | 2019-3-4 10:22 | 只看该作者
主要編譯器將acc清除。

使用特权

评论回复
地板
奔跑的牛| | 2019-3-4 11:15 | 只看该作者
keil c51 是大端数据

使用特权

评论回复
5
天灵灵地灵灵| | 2019-3-4 19:17 | 只看该作者
看这个函数的返回值,以及要返回的内容。这种我就直接用库函数,一般不问缘由

使用特权

评论回复
6
nj786c|  楼主 | 2019-3-5 12:05 | 只看该作者
奔跑的牛 发表于 2019-3-4 11:15
keil c51 是大端数据

你意思应该是 *(u16_addr>>8),但是*的优先级比>>高啊!?

使用特权

评论回复
7
antusheng| | 2019-3-5 13:31 | 只看该作者
不知道这个优先级顺序。单独写个测试实施看。

使用特权

评论回复
8
nj786c|  楼主 | 2019-3-17 20:37 | 只看该作者
jasontu 发表于 2019-3-4 10:22
主要編譯器將acc清除。

从C语言的角度怎样理解呢?首先地址u16_addr中的内容是8位的,右移了8位,岂不是把地址中的内容变为ox00了吗?再送给rdata应该全部是零啊

使用特权

评论回复
9
nj786c|  楼主 | 2019-3-20 16:33 | 只看该作者
先感谢大家的支持,我想自己来结贴UINT16 code *u16_addr定义了指针变量指向的是16位整形,又因为C51是大端数据格式,所以右移8。谢谢大家。

使用特权

评论回复
10
不会打字| | 2020-8-6 14:58 | 只看该作者
nj786c 发表于 2019-3-20 16:33
先感谢大家的支持,我想自己来结贴UINT16 code *u16_addr定义了指针变量指向的是16位整形,又因为C51是大端 ...

大端数据格式是啥

使用特权

评论回复
评论
youhm 2020-10-16 15:03 回复TA
16位数据高低字节排列顺序,大端格式高字节在前 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

19

帖子

0

粉丝