找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2470|回復(fù): 9
收起左側(cè)

單片機(jī)C語(yǔ)言怎樣分解變量?

[復(fù)制鏈接]
ID:965189 發(fā)表于 2022-7-6 22:10 | 顯示全部樓層 |閱讀模式
以前這樣可以的
uint bnm;                //16位變量
uchar bnmh,bnml;   //變量的高8位,低8位
void main()
{
   bnmh=bnm/256;
   bnml=bnm%256;
   bnm=bnmh*256+bnml;
   IapErase(0x0400);             //扇區(qū)擦除
   IapProgram(0x0400,bnmh);    //保存高8位
   IapProgram(0x0401,bnml);    //保存低8位
}
以前STC15F單片機(jī)保存后讀出的數(shù)正!,F(xiàn)在用STC8G2K64S4,保存讀出不正常了。頻率提高了,發(fā)現(xiàn)要調(diào)整的地方都調(diào)了。其它功能正常,就這個(gè)16位變量結(jié)果不對(duì)。
各位還有其它方法嗎?
回復(fù)

使用道具 舉報(bào)

ID:1036305 發(fā)表于 2022-7-7 08:52 | 顯示全部樓層
可能是類型轉(zhuǎn)換的問(wèn)題,試試這樣寫:

bnmh=(uchar)(bnm>>8 &0XFF);
bnml=(uchar)(bnm%256 & 0xFF);
回復(fù)

使用道具 舉報(bào)

ID:814525 發(fā)表于 2022-7-7 08:59 | 顯示全部樓層
STC8G2K64S4的EEPROM為IAP類型,應(yīng)該是存儲(chǔ)地址不對(duì)
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-7-7 09:31 | 顯示全部樓層
顯然是兩個(gè)單片機(jī)的IapProgram()不一樣導(dǎo)致的。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-7-7 09:56 | 顯示全部樓層
STC8G2K64S4是IAP型,沒有固定EEPROM地址,使用前需要把EEPROM地址定位到用戶程序結(jié)束后一個(gè)扇區(qū)和最后一個(gè)扇區(qū)之間的任意扇區(qū)。代碼示例:
        IapErase(0xA800);             //扇區(qū)擦除
        IapProgram(0xA800,bnm>>8);    //保存高8位
        IapProgram(0xA800+1,bnm);    //保存低8位
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-7-7 10:00 | 顯示全部樓層
如果是你的代碼曾經(jīng)在STC15F上成功過(guò),那問(wèn)題點(diǎn)就不是出在變量分解上,而是出現(xiàn)EEPROM的函數(shù)上
回復(fù)

使用道具 舉報(bào)

ID:965189 發(fā)表于 2022-7-7 11:35 | 顯示全部樓層
wulin 發(fā)表于 2022-7-7 09:56
STC8G2K64S4是IAP型,沒有固定EEPROM地址,使用前需要把EEPROM地址定位到用戶程序結(jié)束后一個(gè)扇區(qū)和最后一個(gè) ...

按你和各位大俠的提示,我改變目標(biāo)地址后可以存取了。還有一個(gè)問(wèn)題請(qǐng)教大俠,你寫的分解很簡(jiǎn)潔,讀出來(lái)后怎樣組合呢?請(qǐng)給個(gè)示例學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

ID:195496 發(fā)表于 2022-7-7 11:57 | 顯示全部樓層
分解變量用聯(lián)合,不過(guò)每種平臺(tái)要確認(rèn)大小端問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-7-7 13:49 | 顯示全部樓層
君工創(chuàng) 發(fā)表于 2022-7-7 11:35
按你和各位大俠的提示,我改變目標(biāo)地址后可以存取了。還有一個(gè)問(wèn)題請(qǐng)教大俠,你寫的分解很簡(jiǎn)潔,讀出來(lái)后 ...

      bnm=IapReadByte(0xA800)<<8 | IapReadByte(0xA800+1);
回復(fù)

使用道具 舉報(bào)

ID:965189 發(fā)表于 2022-7-7 14:02 | 顯示全部樓層
wulin 發(fā)表于 2022-7-7 13:49
bnm=IapReadByte(0xA800)

非常多謝大俠指教。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表