欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2357|回復: 6
收起左側

EEPROM存儲C語言 int數據類型讀取出錯

[復制鏈接]
ID:960619 發表于 2021-9-30 21:21 | 顯示全部樓層 |閱讀模式
EEPROM存儲int數據類型,分兩個char存入,讀取怎么都是65536;
int A=50;
char a,b;
a=A,b=A>>8;

IapEraseSector(0x0600);
IapProgramByte(0x0600,b);  
IapProgramByte(0x0600+1,a);               




b =IapReadByte(0x0600);
a=IapReadByte(0x0600+1);



A=b<<8|a;


這樣操作是哪里出了問題嗎

回復

使用道具 舉報

ID:624769 發表于 2021-9-30 22:56 | 顯示全部樓層
假定,你IAP函數都沒有問題,作如下修改

// A=b<<8|a;

A = b;
A <<= 8;
A += a;

回復

使用道具 舉報

ID:624769 發表于 2021-9-30 23:19 | 顯示全部樓層
// a=A,b=A>>8;
a = A;
b = A>>8;
回復

使用道具 舉報

ID:960619 發表于 2021-10-1 10:35 | 顯示全部樓層
本帖最后由 baobao125 于 2021-10-1 12:08 編輯
188610329 發表于 2021-9-30 23:19
// a=A,b=A>>8;
a = A;
b = A>>8;

A=b<<8|a;這里出問題了, a設置初始值0xe8,b初始0x03,把A=a;不知為何就變成了0xffe8;這樣一來A=b<<8|a  就成了0xffe8;
回復

使用道具 舉報

ID:57657 發表于 2021-10-1 12:32 | 顯示全部樓層
int最大65535,沒有65536
回復

使用道具 舉報

ID:960619 發表于 2021-10-1 18:43 | 顯示全部樓層
npn 發表于 2021-10-1 12:32
int最大65535,沒有65536

噢,也不是這里的問題。找了一下午找出的問題原因是定義的變量是char類型的,調試模式賦值時就成了int類型了。跟另一char類型 |出來的結果都是0xffff。不知道為什么。刪掉那個變量重新定義了就沒事了
回復

使用道具 舉報

ID:57657 發表于 2021-10-3 21:24 | 顯示全部樓層
baobao125 發表于 2021-10-1 18:43
噢,也不是這里的問題。找了一下午找出的問題原因是定義的變量是char類型的,調試模式賦值時就成了int類 ...

你這樣移位可以直接用union聯合體代替,不需要移位。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表