痞酷網_PIGOO

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

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

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

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

謝謝!
樓主: antlu

求助: STC89C52 12T 與STC15F204EA 1T 對 LCM1602

  [複製鏈接]
 樓主| 發表於 2013-3-25 23:23:02 | 顯示全部樓層
進度報告
報告 LEGION大:
使用V4版 好不容易把波形顯示出來了,V2 和 V4 還需要再了解!! 目前無法中文 無法把STC MCU加進資料庫去!!
UV4進度A.gif

 樓主| 發表於 2013-3-29 23:34:04 | 顯示全部樓層
legion 發表於 2013-3-20 08:08 PM static/image/common/back.gif
V3或v4在功能上都有相當大的改善,
不過可惜的是這個要加上硬體的ICE時,你會發現效果會更大
尤其在硬體直 ...

報告進度二
1Tclk.png

今天把 1T的MCU相關的 頭文字檔 都變了!! 可是仍然還是1個 _nop()_ 1uS,不知道 KEIL 的邏輯分析儀 的依據為何? 為何 1T  12T MCU都跑的一樣的波形,...變化震盪頻率會改變邏輯分析儀時間變化!!


發表於 2013-3-30 20:38:33 | 顯示全部樓層
antlu大
現在還在天天工作中,連放假都沒有,為錢死大概也不能有什麼怨言的
平常都是在使用簡易的ICE,1T或12T的就沒太去注意KEIL本身的時間部份
因為在使用ICE時是不會使用KEIL的軟體模擬功能的
這個問題這兩天我找個時間看一下,
應該不會是KEIL認為像STC這類的小廠開發的1TMCU並非他支援的吧
畢竟在安裝原始KEIL時,STC也沒在原始的程序里,
這個我看一下再回答你了,
不過一般使用硬體ICE的人大都會使用其他輔助計算工具
像這個雖是簡體但還蠻方便的,不知有沒有使用過,就免的1T或12T之類的計算了
mcuelfV12.rar (552.18 KB, 下載次數: 8)
 樓主| 發表於 2013-4-1 00:41:54 | 顯示全部樓層
本帖最後由 antlu 於 2013-4-1 01:18 AM 編輯
legion 發表於 2013-3-30 08:38 PM static/image/common/back.gif
antlu大
現在還在天天工作中,連放假都沒有,為錢死大概也不能有什麼怨言的
平常都是在使用簡易的ICE,1T或12T ...


LEGION大:
  抱歉現在才回應!! 這個 單片機小精靈 需要註冊才能用 C 語言功能,我再看看如何註冊!! 目前兩個問題 1.網路畫面亂碼 (使用 IE 瀏覽器已經解決) 2.沒有大陸的銀行帳號..
發表於 2013-4-1 09:25:25 | 顯示全部樓層
antlu 發表於 2013-4-1 12:41 AM static/image/common/back.gif
LEGION大:
  抱歉現在才回應!! 這個 單片機小精靈 需要註冊才能用 C 語言功能,我再看看如何註冊!! 目前兩 ...

單片機小精靈,
這個,阿乾兄,
我的隨身碟找找看,你可能會看到寶喔!

另外:
http://bbs.mydigit.cn/read.php?tid=474392
http://bbs.mydigit.cn/read.php?tid=320508

還有,要支付寶的話,我可以幫忙!
 樓主| 發表於 2013-4-1 17:17:47 | 顯示全部樓層
fatzeros 發表於 2013-4-1 09:25 AM static/image/common/back.gif
單片機小精靈,
這個,阿乾兄,
我的隨身碟找找看,你可能會看到寶喔!

FATZEROS大:
    你的寶庫比我的寶山"寶庫"豐富太多了!! 單片機小精靈一時間找不到ㄟ!! 倒是 發現 1T 與 12T 的DS1302 C 與研程式 差異只有一點點, 我會找時間試看看!!
   
   當務之急!! UV4 裡面 邏輯分析儀功能 1T 12T 的差別澄清!!
發表於 2013-4-1 20:40:46 | 顯示全部樓層
antlu 發表於 2013-4-1 05:17 PM static/image/common/back.gif
FATZEROS大:
    你的寶庫比我的寶山"寶庫"豐富太多了!! 單片機小精靈一時間找不到ㄟ!! 倒是 發現 1T 與  ...

我也是的啦!
同一支程式,
都是透由serial輸出,
都是stc系列的,
89c52rc就ok,
但是15F204ea就是不行,
真是怪奇,
難道是有什麼特殊的寫法嗎?
可能,我們都要把datasheet再好好的看一看才行。
發表於 2013-4-1 21:01:59 | 顯示全部樓層
antlu 發表於 2013-4-1 12:41 AM static/image/common/back.gif
LEGION大:
  抱歉現在才回應!! 這個 單片機小精靈 需要註冊才能用 C 語言功能,我再看看如何註冊!! 目前兩 ...

在上面的那個小精靈是註冊版的,所以C也能使用
不過那是舊版的,但以實用的功能卜來說是沒太多差別的
要先掛上NTLEA來掛載使用就沒有亂碼了
至於試了一下,發現KEIL在軟體模擬上STC的1T和12T在時間軸上都是以12T為基準
這應該是KEIL本身沒去考慮STC的1T-MCU在執行時間週期上的計數問題
死怕這段就要以外部輔助程式來計算了
在DELAY,串列,計數定時及中斷這部份都會依1T或12T及條件自行生成C的片斷,
這個部份能給不少幫助的,至於STC的15F204ea看來有時間也買個幾東來試試
 樓主| 發表於 2013-4-1 23:24:53 | 顯示全部樓層
legion 發表於 2013-4-1 09:01 PM static/image/common/back.gif
在上面的那個小精靈是註冊版的,所以C也能使用
不過那是舊版的,但以實用的功能卜來說是沒太多差別的
要先 ...

legion大:
    剛剛我確認了 你附上的 檔案需要"註冊" 才能跑出C 程式
MCUELF.GIF

使用 IE 就不會出現亂碼!! 用 GOOGLE 會出現亂碼!! 開檔的時候要使用 簡體模式打開 就不會亂碼!!
很奇怪它就是 要我"註冊" 右上角有提示!!

發表於 2013-4-2 00:47:52 | 顯示全部樓層
antlu 發表於 2013-4-1 11:24 PM static/image/common/back.gif
legion大:
    剛剛我確認了 你附上的 檔案需要"註冊" 才能跑出C 程式

嗯,看了一下,我換成另一個檔案,
這個我有先試一下是ok的
MCUtoolV12.rar (589.54 KB, 下載次數: 5)
 樓主| 發表於 2013-4-2 11:55:48 | 顯示全部樓層
legion 發表於 2013-4-2 12:47 AM static/image/common/back.gif
嗯,看了一下,我換成另一個檔案,
這個我有先試一下是ok的

LEGION大:
   OK了!! 感謝!!
 樓主| 發表於 2013-4-3 11:20:43 | 顯示全部樓層
legion 發表於 2013-4-2 12:47 AM static/image/common/back.gif
嗯,看了一下,我換成另一個檔案,
這個我有先試一下是ok的

new1T.gif
報告進度:
   1T vs 12T

0.25uS vs 4uS  寫入命令
RS_CLR;
RW_CLR;
EN_SET;
DataPort= com;
EN_CLR;


1.25uS  vs 10uS 寫入資料
EN_SET;
DataPort=Data;
sdelay();
_nop_();
EN_CLR;




void sdelay(void)
//confirm of delay routine timing
{
        _nop_();
        _nop_();
}
發表於 2013-4-3 12:15:29 | 顯示全部樓層
antlu 發表於 2013-4-3 11:20 AM static/image/common/back.gif
報告進度:
   1T vs 12T

一時沒有想太多,沒想到STC的1T和普通的1T不太一樣,
有的指令並非真的以1T在跑,應該說比一般1T的MCU還慢了一點
找了個V1.3的OK版,上面就有特別針對STC的1T來作運算
antlu大可能你要換這個版本來用比較合適
mcuefV1.3-OK.rar (998.05 KB, 下載次數: 8)
發表於 2013-4-3 12:52:45 | 顯示全部樓層
本帖最後由 ysc 於 2013-4-3 12:58 PM 編輯
legion 發表於 2013-4-3 12:15 PM static/image/common/back.gif
一時沒有想太多,沒想到STC的1T和普通的1T不太一樣,
有的指令並非真的以1T在跑,應該說比一般1T的MCU還慢了 ...


前些日子看了一下STC15F204EA data sheet,
內部功能有些地方似乎有「補丁」的感覺,
所以一直不敢用上去,data sheet編排也不是很順暢。

還有那塊內建EEPROM似乎有點雞筋,只能整塊抹除,
不能單獨1個BYTE改內容,當資料儲存區很不方便。
很類似EPROM,只能由1寫入0,0無法寫成1,所以
寫入前要先抹除,而抹除要整塊,即使只要要改變某個Byte,
也要整塊抹除再全部寫入,那豈不是要拿內部RAM來當BUFFER?
但內部RAM又比EEPROM小.....呵呵~~設計這樣的EEPROM要怎麼用?
發表於 2013-4-3 14:06:32 | 顯示全部樓層
本帖最後由 imcrazy 於 2013-4-3 02:11 PM 編輯
ysc 發表於 2013-4-3 12:52 PM static/image/common/back.gif
前些日子看了一下STC15F204EA data sheet,
內部功能有些地方似乎有「補丁」的感覺,
所以一直不敢用上去 ...


其實他本來就不算是可別清除的EEPROM呀....
它實際上就是Flash而已.....很多MCU都是這樣呀.......如果用EEPROM比較佔空間....能給的bytes數都不多...
很多MCU都可以自己規劃多少K Bytes要當程式空間......多少K Bytes要當資料Flash.....甚至有的MCU都不分...你隨時都寫任何位址資料(這種就可以有自己的bootloader,隨時在線更新韌體)....可惜STC大部分型號都將容量定死了...不讓使用者自己規劃.....

至於如果記憶體不夠的話.......一般都是用搬移的來改變內容.......也就是用2個page的flash來實做.....這樣就沒有記憶體容量的問題.......但flash清除的次數耗損嚴重.....
發表於 2013-4-3 14:30:18 | 顯示全部樓層
本帖最後由 ysc 於 2013-4-3 03:56 PM 編輯
imcrazy 發表於 2013-4-3 02:06 PM static/image/common/back.gif
其實他本來就不算是可別清除的EEPROM呀....
它實際上就是Flash而已.....很多MCU都是這樣呀.......如果用E ...


感謝您的解說,EEPROM是STC原廠說的:

EEP.jpg

這麼一來,1K BYTE空間也只能當512 BYTE來用,一個sector當儲存區,
另一個sector當buffer,為了改變儲存區某個Byte,要先將buffer erase,
然後將儲存區copy到buffer,然後將儲存區erase,再將要寫入的byte寫到
儲存區,接著將buffer區copy回儲存區,還要記得剛剛改變那個byte位址
要跳過不能copy.....感覺很麻煩也很可惜......

發表於 2013-4-3 15:03:10 | 顯示全部樓層
本帖最後由 imcrazy 於 2013-4-3 03:11 PM 編輯
ysc 發表於 2013-4-3 02:30 PM static/image/common/back.gif
感謝您的解說,EEPROM是STC原廠說的:


我知道呀...
只是....你會發現STC的Manual真的很特別.....寫手冊的手法跟別人不太一樣...還順便打廣告......

大陸也有很多人說那個姚工很愛唬爛

它的晶片好像都是找別人的.....以前也是包打票說不能解密.......結果燒錄bootloader出大包...任何人只要透過UART一下子就破解了.............後來又有什unique id之類的包不能破.......後來又有改.......

有一代晶片似乎也蠻像台灣Megawin 笙泉的51.....


------------------------------------------------------------------------------------------
我提的那方式是用一個page當temp啦......所以只浪費一個page啦......但這個暫存page要如何平均耗損也要想一下....不然falsh是有抹寫次數問題的....
STC也有晶片提供32k或更多的資料flash呀.....
STC15F2K32S2..................STC15F2K16S2.................

發表於 2013-4-3 15:08:17 | 顯示全部樓層
imcrazy 發表於 2013-4-3 03:03 PM static/image/common/back.gif
我知道呀...
只是....你會發現STC的Manual真的很特別.....寫手冊的手法跟別人不太一樣...還順便打廣告... ...

沒錯,STC的MANUAL寫得很亂,看起來有點痛苦......
還看過在技術手冊裡寫什麼感謝INTEL是單晶片始祖!
發表於 2013-4-3 15:17:47 | 顯示全部樓層
本帖最後由 ysc 於 2013-4-3 03:18 PM 編輯
imcrazy 發表於 2013-4-3 03:03 PM static/image/common/back.gif
我提的那方式是用一個page當temp啦......所以只浪費一個page啦......但這個暫存page要如何平均耗損也要想一下....不然falsh是有抹寫次數問題的......

但這顆1 page = 1 sector = 512 Byte,全部1024 Byte分成2個sector,一次erase就是512Byte......
發表於 2013-4-3 15:53:46 | 顯示全部樓層
本帖最後由 ysc 於 2013-4-3 03:56 PM 編輯
imcrazy 發表於 2013-4-3 03:03 PM static/image/common/back.gif
我知道呀...
只是....你會發現STC的Manual真的很特別.....寫手冊的手法跟別人不太一樣...還順便打廣告... ...


EEP2.jpg

感覺上這種建議很瞎......內部RAM才256 Byte,EEPROM每個sector 512 Byte,
即使內部RAM全部用來當Buffer也不夠,事實上也不能全部拿來當Buffer.....

評分

1

查看全部評分

發表於 2013-4-3 17:23:50 | 顯示全部樓層
ysc 發表於 2013-4-3 03:53 PM static/image/common/back.gif
感覺上這種建議很瞎......內部RAM才256 Byte,EEPROM每個sector 512 Byte,
即使內部RAM全部用來當Buff ...

它只是抄以前的Manual吧......未必針對這型號....

因為STC應該有xdata 大於512 bytes的型號....這種就可以先讀到RAM裡面.....不過會不會擦寫時斷電...那資料就沒了....不過機率應該不大吧

若有時需要儲存紀錄的資料有時可能也只有幾個bytes而已.....先讀到RAM亦可吧..
 樓主| 發表於 2013-4-3 17:53:51 | 顯示全部樓層
legion 發表於 2013-4-3 12:15 PM static/image/common/back.gif
一時沒有想太多,沒想到STC的1T和普通的1T不太一樣,
有的指令並非真的以1T在跑,應該說比一般1T的MCU還慢了 ...

LEGION大:
   晚上來了解!!
 樓主| 發表於 2013-4-3 17:59:22 | 顯示全部樓層
legion 發表於 2013-4-3 12:15 PM static/image/common/back.gif
一時沒有想太多,沒想到STC的1T和普通的1T不太一樣,
有的指令並非真的以1T在跑,應該說比一般1T的MCU還慢了 ...

LEGION大:
    這個有病毒!!
發表於 2013-4-3 18:18:37 | 顯示全部樓層
imcrazy 發表於 2013-4-3 05:23 PM static/image/common/back.gif
它只是抄以前的Manual吧......未必針對這型號....

因為STC應該有xdata 大於512 bytes的型號....這種就可 ...

但這Manual寫得很清楚,寫入前要先抹除,一次抹除就是512 Byte,
也強調要先將資料讀到RAM保存之後再寫回。
比較好笑的是,建議儘量減少使用Byte數,備份時比較不會麻煩,
也說如果只使用1 Byte就是真正的EEPROM!
 樓主| 發表於 2013-4-4 09:38:43 | 顯示全部樓層
ysc 發表於 2013-4-3 06:18 PM static/image/common/back.gif
但這Manual寫得很清楚,寫入前要先抹除,一次抹除就是512 Byte,
也強調要先將資料讀到RAM保存之後再寫回 ...

YSC大:
  記得在作 跑馬燈的時候都有 變數 CODE 的設定,把一堆要顯示的值放在CODE的地方然後再把他拿出來"顯示",我猜想 CODE 也佔記憶體空間,假如太多了會影響到程式的撰寫,是否 這個MCU 用的個 EEPROM 來存放整批的字型...資料反正根本幾乎不會改變,於是就先一次"寫好",你也知道 STC 的製造商也想多擠一下空間給大家,所以沒辦法擠出 24C02這樣的空間整批的也算"聊勝於無"!!
發表於 2013-4-4 11:17:40 | 顯示全部樓層
antlu 發表於 2013-4-4 09:38 AM static/image/common/back.gif
YSC大:
  記得在作 跑馬燈的時候都有 變數 CODE 的設定,把一堆要顯示的值放在CODE的地方然後再把他拿出來 ...

也只能朝這方向使用囉,但燒錄程式時,不知是否可以一併將固定資料燒錄到EEPROM?
若還要程式自行從ROM區搬移到EEPROM那就沒意義了。
發表於 2013-4-4 13:32:36 | 顯示全部樓層
ysc 發表於 2013-4-3 06:18 PM static/image/common/back.gif
但這Manual寫得很清楚,寫入前要先抹除,一次抹除就是512 Byte,
也強調要先將資料讀到RAM保存之後再寫回 ...

一般來說....會用到內部EEPROM的byte數本來就不會很多....
大都只用來記住使用者的設定值,斷電後仍可恢復記憶讀取......比如以電視為例...用它紀錄住最後使用音量大小,使用頻道,...etc....這時就可以省去外加一顆24Cxx的EEPROM...........

真正需要大量空間時...那一定是外加一顆EEPROM或是FLASH了...
發表於 2013-4-5 15:01:41 | 顯示全部樓層
原來STC的MCU有這種問題喔,真是有給他瞎。這樣不就是跟Flash一樣嗎?該不會內部是用Flash但是卻說是EEPROM吧?

如果是這種限制,是我的話會把兩個EEPROM區當一個使用,每次要改的時候把資料從一區Copy到另一區去。這樣應該就不需要RAM了。應該也可避免Copy到一半斷電的問題。
發表於 2013-4-5 17:06:06 | 顯示全部樓層
robotai 發表於 2013-4-5 03:01 PM static/image/common/back.gif
原來STC的MCU有這種問題喔,真是有給他瞎。這樣不就是跟Flash一樣嗎?該不會內部是用Flash但是卻說是EEPROM ...

問題是出在每個sector (page)太大,若每個sector 16 byte就很好處理了。

用過的一些Flash晶片,都有內含RAM Buffer,RAM Buffer跟page一樣大,
讀寫都經由內建RAM Buffer,不必用到單晶片內部RAM,快速又方便。
發表於 2013-4-5 17:33:29 | 顯示全部樓層
確實,不過不管Page大小,以這種限制的話,是我會這樣用,

1. 在每個Page的最後一位元用來計數,數字大的表示是現在有效的資料。
2. 每次資料改的時候,把另一Page清空,再一個Byte一個Byte Copy到新的Page,有要改的資料Copy時則使用新的資料。
3. 最後在新Page的最後一Byte加1,表示資料是最新的。

這樣有兩個好處,
1. Copy資料,不管Page多大,只需幾個Byte 的 RAM空間就夠。
2. 這樣萬一 Copy 中途斷電的話,由於最後一的位元還沒有改,所以重上電後原來Page的資料可以正常使用,資料不會壞。

不過Page太大時,Copy資料需要些時間,這倒是有可能會有其他影響。
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

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

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

GMT+8, 2024-12-23 09:48 PM , Processed in 0.102575 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.