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

QQ登錄

只需一步,快速開始

搜索
查看: 5041|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

24C04怎么用單片機(jī)程序存數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:95922 發(fā)表于 2017-5-12 21:44 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用24C04芯片,依照24C02教程的I2C寫法存數(shù)據(jù),比如數(shù)碼管顯示69696,這個(gè)數(shù)已經(jīng)超過無符號(hào)整形unsigned int的范圍65535,定義用unsigned long int無符號(hào)整形32位的,我不知道怎么拆這個(gè)32位的,拆4個(gè)8位的,還是拆分三個(gè)去存到24C04里面去.
網(wǎng)上找了一些32位拆4個(gè)8位的,編譯沒錯(cuò),仿真及單片機(jī)開發(fā)板上運(yùn)行就像死機(jī)了一樣.不知道是什么問題.
網(wǎng)上找的方法是這樣的.
        sec1=(uchar)(sec>>24&0xff);        
        sec2=(uchar)(sec>>16&0xff);
        sec3=(uchar)(sec>>8&0xff);
        sec4=(uchar)sec&0xff;

sec1~4是8位的,sec是32位的.
哪位大哥教一下怎么拆這個(gè)32位的,
麻煩給一個(gè)例程.非常感謝.
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:111634 發(fā)表于 2017-5-13 08:33 | 只看該作者
本帖最后由 zl2168 于 2017-5-13 15:51 編輯

給你個(gè)參考案例。實(shí)例49  讀寫AT24C02
Proteus仿真一下,確認(rèn)有效。
實(shí)例49 讀寫IIC AT24C02.rar (38.96 KB, 下載次數(shù): 34) 實(shí)例50 非零地址讀寫AT24C02.rar (39.09 KB, 下載次數(shù): 10)

以上摘自張志良編著《單片機(jī)實(shí)驗(yàn)實(shí)訓(xùn)100例》 ISBN 978-7-5124-1603-1,北航社出版.。書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復(fù)

使用道具 舉報(bào)

板凳
ID:155507 發(fā)表于 2017-5-13 09:54 | 只看該作者
是這樣的

  1.         sec4=(uchar)(sec & 0xff);      
  2.         sec3=(uchar)((sec >>8 )& 0xff);
  3.         sec2=(uchar)((sec >>16)& 0xff);
  4.         sec1=(uchar)((sec >>24)& 0xff);
復(fù)制代碼


8位到 整形32位的
sec1~4,sec是32位的.

  1. sec = ((sec4 << 0) & 0xFF) + ((sec3 << 8) & 0xFFFF) + ((sec2 << 16) & 0xFFFFFF) + ((sec1 << 24) & 0xFFFFFFFF);
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

地板
ID:123289 發(fā)表于 2017-5-13 12:59 | 只看該作者
最呆的辦法:存1234567890,你就存10次,一次存一位數(shù),10次靠近存;回讀時(shí)再讀10次,拼在一起,重新組成1234567890.
回復(fù)

使用道具 舉報(bào)

5#
ID:123289 發(fā)表于 2017-5-13 13:04 | 只看該作者
拆法,除以10,9次每次取余,剩余1次可免除直接取。
拼法,乘以10,9次每次相加,剩余1次可免乘直接加。
這是笨方法啊,懂了之后你改進(jìn)。
回復(fù)

使用道具 舉報(bào)

6#
ID:95922 發(fā)表于 2017-5-13 18:07 | 只看該作者
yzwzfyz 發(fā)表于 2017-5-13 13:04
拆法,除以10,9次每次取余,剩余1次可免除直接取。
拼法,乘以10,9次每次相加,剩余1次可免乘直接加。
...

不懂,需要請(qǐng)教師傅
或者寫一段代碼參考一下.
回復(fù)

使用道具 舉報(bào)

7#
ID:95922 發(fā)表于 2017-5-13 18:09 | 只看該作者

你拆的方法和我的一樣,昨晚試了一下,sec1=(uchar)(sec>>24&0xff);,這個(gè)拆不出來,顯示都是0.
回復(fù)

使用道具 舉報(bào)

8#
ID:95922 發(fā)表于 2017-5-13 18:11 | 只看該作者

合并我是這樣的,sec=(sec1<<24|sec2<<16|sec3<<8|sec4);
就是sec4沒拆出來,合并出來3萬多.
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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