痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 4737|回復: 15

AT24C02 記憶IC請教 組語問題

[複製鏈接]
發表於 2013-12-13 04:17:01 | 顯示全部樓層 |閱讀模式
本帖最後由 zuoso2006 於 2013-12-13 04:23 AM 編輯

小弟最近搞DS1820溫度IC 讀出數值後非常開心,也感謝板大細心教導

目前想要把所設定的數值能停電保持住,否則設定好的溫度關電後都要重新設定

目前遇到的問題是小弟有前人指導的C語言 是可以將AT24C02數值寫入也能讀出

想把他轉成組合語言,卻一直有問題所以上傳給各位大大看一下。

系統晶片 STC89C52RC
晶震:  12MHZ

目前狀況: 不知是讀的問題   還是寫的問題
                小弟的程序 其主要想把8位元程序寫入,接下來就是讀出
                好不容易可以讀出數值  但與寫入程序不合


搞了好幾天  白天上班都一直想 哀~ 也因小弟資質不好請各位大大指點指導一下謝謝



觀念問題:

    1.  STC89C52RC 不加任何晶片能做停電保持嗎???

    2.  在8051程式   指令SP  最大的作用是做什麼?(小弟組合語言中有 但是參考別人的 只知道殺掉後會有問題)








          AT24C02.rar (1.53 KB, 下載次數: 22)
發表於 2013-12-13 11:11:51 | 顯示全部樓層
STC大部分都有內建Flash.....至少有1K以上可以用......
印象中TC89C52RC也不例外....應該有2K的Flash....
但這些Flash都有壽命的限制....應該是10萬次吧....記得要用程式技巧分散寫...增加寫的次數..
 樓主| 發表於 2013-12-13 11:20:21 | 顯示全部樓層
本帖最後由 zuoso2006 於 2013-12-13 11:24 AM 編輯

感謝指導  有無範例 謝謝n_151|

flash 可以達到斷電記憶設定數值嗎
發表於 2013-12-13 11:59:56 | 顯示全部樓層
imcrazy 發表於 2013-12-13 11:11 AM static/image/common/back.gif
STC大部分都有內建Flash.....至少有1K以上可以用......
印象中TC89C52RC也不例外....應該有2K的Flash....
...

STC內建的EEPROM跟24C系列不太一樣,不一定能替代使用,STC內建EEPROM必須整個SECTOR抹除再寫入新資料,無法單獨更改某個BYTE,而24C系列則是單BYTE操作,寫入前也不必先抹除,使用上靈活很多。

最麻煩的是STC內建EEPROM SECTOR比內部RAM還要大,抹除前想將EEPROM讀到RAM暫存也辦不到,這實在非常可惜。

發表於 2013-12-13 12:16:04 | 顯示全部樓層
SP是指STACK POINT 這個應該是組語較根本的東西
組語里大概就是堆疊,指標,旗標,位元,中斷
C的話就是變數,指標,向量,傳出,遞回
恐怕要花點時間去了解一下sp,他是和mcu本身硬體是相關聯的
不然有時會程式寫了半天,但一直不穩定卻找不出問題在那的
如果24系列一時用不出來時,也可以考慮93系列,
當記憶量不大時,除程式較簡便外,有時覺得93反而方便一些

評分

1

查看全部評分

發表於 2013-12-13 12:32:39 | 顯示全部樓層
整個程式沒仔細看,但最後面的I2C_STOP副程式有問題,I2C STOP時序錯誤,STOP之後SDA、SCL都要為1才對。
發表於 2013-12-13 12:51:49 | 顯示全部樓層
legion 發表於 2013-12-13 12:16 PM static/image/common/back.gif
如果24系列一時用不出來時,也可以考慮93系列,
當記憶量不大時,除程式較簡便外,有時覺得93反而方便一些
...


早期也有使用24C系列失敗經驗,加上當時93C系列較便宜又普及,所以都用93C系列來設計產品。

這幾年比較有空,也因做時鐘需要用的I2C介面的DS3231,只好花點時間將I2C時序抓清楚,也將介面程式寫好,經多種產品長時間驗證,其實I2C也不會很困難,擴充彈性也很好,只要兩條I/O線就可以一直擴充下去,這部分是比93C系列好用的地方。

發表於 2013-12-13 13:27:33 | 顯示全部樓層
I2C本身就是以時序為基礎,只要介面程式寫好大概也都不會去更動
和93相比,24C系列主要也是以大容量為優勢,
而且現在24C和93相比,價錢都差不多,
在現在這個組件里,大概要保留的資料最多也只有十幾筆,
所以93也好24也好應該就看那個方便就用那個

一般24C在使用上一開始也都是會面對失敗,
但沒有93系列會有8BIT和16BIT的模式,
但遇到較大內容要存入時,也是不得不用24C來用
如果不是要存大筆資料時,有時是看使用者用那個比較方便
前幾年作個時鐘因為存的一些資料較大,本來用93C66結果不夠用
結果就換棵24C32來用就解決,端看那個方便而已,
發表於 2013-12-13 13:30:49 | 顯示全部樓層
ysc 發表於 2013-12-13 11:59 AM static/image/common/back.gif
STC內建的EEPROM跟24C系列不太一樣,不一定能替代使用,STC內建EEPROM必須整個SECTOR抹除再寫入新資料, ...

夠用了啦!!!
一般斷電要求記憶的通常只是幾個Byte而已.....MCU記憶體夠暫存啦...

另外抹寫後是1.....所以同一個sector可以分為好幾個小區塊寫資料.....其中一個byte當指標指到不同區塊一直重複寫...
ex.256 bytes為一個sector 分為32個區塊....每個區塊8bytes
第一個區塊當指標區塊......其餘31個區塊當資料區
第一個區塊某byte編碼11111110代表使用第一區塊 ......11111100代表使用第二區塊.......etc. 依此類推.....當然31區塊至少要用4bytes來當指標.....我只是舉例而以..


如果記憶體真的不夠用....那就是要用另一個Sector當swap了....
 樓主| 發表於 2013-12-13 16:13:44 | 顯示全部樓層
有沒有範例程式 給小弟入門一下 謝謝n_168|
發表於 2013-12-13 17:18:54 | 顯示全部樓層
zuoso2006 發表於 2013-12-13 04:13 PM static/image/common/back.gif
有沒有範例程式 給小弟入門一下 謝謝

將24C02規格書看熟再將介面程式建立起來,這樣永遠不會忘記。
發表於 2013-12-13 18:06:36 | 顯示全部樓層
zuoso2006 發表於 2013-12-13 04:13 PM static/image/common/back.gif
有沒有範例程式 給小弟入門一下 謝謝

如果你指的是STC flash讀寫範例....原廠手冊應該有吧!!
一開始不用搞的我講的那麼複雜啦!! 我那樣的用法是在分散寫的地方..減少抹除的次數...增加使用壽命...
比如說你要記憶溫度共兩個bytes.......那你就找一個sector裡面的前兩個byte寫入記憶就行了......要更改就直接整個sector抹除....再寫入新資料就可以了...
 樓主| 發表於 2013-12-17 16:55:18 | 顯示全部樓層
本帖最後由 zuoso2006 於 2013-12-17 05:36 PM 編輯

有沒有家教可以教我一下,n_167|
小弟住台南

搞的頭都暈了快爆了   stc89c52rc 內部 flash 都寫不進去 >< 也存不起來


原廠附的程式範例怎麼也搞不出來

EEPROM1.part2.rar (1.03 MB, 下載次數: 16) EEPROM1.part1.rar (1.43 MB, 下載次數: 12)
 樓主| 發表於 2013-12-18 03:16:49 | 顯示全部樓層
本帖最後由 zuoso2006 於 2013-12-18 03:18 AM 編輯

小弟 有將C語言的部分搞出來測試OK

不知有沒有好心人士可以將C轉成組合給小弟吸收

由於這幾天以睡眠不足所以懇求好心人士幫忙 謝謝

C語言.rar (610 Bytes, 下載次數: 7)
 樓主| 發表於 2013-12-20 01:33:06 | 顯示全部樓層
這下子 看來又要自求多福了  
8051組語難道 要在我人生中留下遺憾了嗎n_152|
發表於 2013-12-20 01:48:44 | 顯示全部樓層
zuoso2006 發表於 2013-12-20 01:33 AM static/image/common/back.gif
這下子 看來又要自求多福了  
8051組語難道 要在我人生中留下遺憾了嗎 ...

不會的,只要有心一定可以學好,51的結構與組合語言算是簡單的了。

建議找本51的書好好消化一番,也可參考書中範例,看人家組合語言是怎麼寫的,基本功練好了自然水到渠成。

I2C對初學者真是有點難度,建議從簡單一點的I/O程式開始練習,對51有初步了解之後再做難的,這樣才會得心應手。

加油吧......

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-11-22 11:07 PM , Processed in 0.138123 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.