[技术问答]

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

[复制链接]
1454|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?官方包的程序
等大佬来啊吧!

使用特权

评论回复
jasontu| | 2019-3-4 10:22 | 显示全部楼层
主要編譯器將acc清除。
Capture.PNG

使用特权

评论回复
奔跑的牛| | 2019-3-4 11:15 | 显示全部楼层
keil c51 是大端数据

使用特权

评论回复
看这个函数的返回值,以及要返回的内容。这种我就直接用库函数,一般不问缘由

使用特权

评论回复
nj786c|  楼主 | 2019-3-5 12:05 | 显示全部楼层
奔跑的牛 发表于 2019-3-4 11:15
keil c51 是大端数据

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

使用特权

评论回复
antusheng| | 2019-3-5 13:31 | 显示全部楼层
不知道这个优先级顺序。单独写个测试实施看。

使用特权

评论回复
nj786c|  楼主 | 2019-3-17 20:37 | 显示全部楼层
jasontu 发表于 2019-3-4 10:22
主要編譯器將acc清除。

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

使用特权

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

使用特权

评论回复
不会打字| | 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

粉丝