標(biāo)題: 對(duì)于51單片機(jī)內(nèi)存的困擾,求指教 [打印本頁(yè)]

作者: lyonkon    時(shí)間: 2022-10-1 19:21
標(biāo)題: 對(duì)于51單片機(jī)內(nèi)存的困擾,求指教
在51單片機(jī)片內(nèi)取指令,無(wú)法從內(nèi)存中讀取,只能從程序存儲(chǔ)器中讀取。那么,新輸入的指令單片機(jī)運(yùn)行的時(shí)候就無(wú)法接收。
1.如果CPU可以從片內(nèi)ram讀取指令,請(qǐng)大家不吝賜


作者: pdwdzz    時(shí)間: 2022-10-1 23:11
沒(méi)辦法,因?yàn)槟懿荒軓膬?nèi)存取指,得看PC指針能不能指向RAM。
作者: 188610329    時(shí)間: 2022-10-2 00:32
學(xué)匯編吧, 你就知道你要達(dá)到這個(gè)目的, 需要克服的問(wèn)題,  以及如何克服了。
另外,還要學(xué)一點(diǎn)  51  工作 原理。 學(xué)了這些,你就能明白 PC指針的 動(dòng)作基準(zhǔn)是什么了。
作者: 名字不是重點(diǎn)    時(shí)間: 2022-10-2 03:56
先要去了解一下,什么是指令以及ROM和RAM的區(qū)別。然后是PC指針。沒(méi)試過(guò),理論上貌似可以,但要變通。
作者: 624353765    時(shí)間: 2022-10-2 07:48
C51沒(méi)辦法實(shí)現(xiàn),ARM可以
作者: yzwzfyz    時(shí)間: 2022-10-8 10:59
傳統(tǒng)的51是可以外擴(kuò)程序存儲(chǔ)器的,你可以用RAM來(lái)做這個(gè)外擴(kuò)的部分。
作者: hhdsdy    時(shí)間: 2022-10-8 11:19
8051單片機(jī),EA置一,使用片內(nèi)存儲(chǔ)器的程序,EA置零,使用外部存儲(chǔ)器的程序
作者: Y_G_G    時(shí)間: 2022-10-8 11:44
C我會(huì),匯編我也會(huì),精通算不上,至少算是已經(jīng)入門(mén)了
但為什么我看不懂樓主的問(wèn)題

在51單片機(jī)片內(nèi)取指令,這句話(huà)什么意思?
無(wú)法從內(nèi)存中讀取,這又是什么意思?
只能從程序存儲(chǔ)器中讀取,那這個(gè)呢?
他是不是在描述8051的的總線(xiàn)結(jié)構(gòu)?
那么,新輸入的指令單片機(jī)運(yùn)行的時(shí)候就無(wú)法接收。?????
我用了幾年的匯編,難道,我連入門(mén)都算不上?
作者: lyonkon    時(shí)間: 2022-10-9 22:49
Y_G_G 發(fā)表于 2022-10-8 11:44
C我會(huì),匯編我也會(huì),精通算不上,至少算是已經(jīng)入門(mén)了
但為什么我看不懂樓主的問(wèn)題


通常51單片機(jī)是執(zhí)行ROM中的指令
現(xiàn)在是想讓單片機(jī)執(zhí)行片內(nèi)RAM中的指令,
作者: lyonkon    時(shí)間: 2022-10-9 23:07
yzwzfyz 發(fā)表于 2022-10-8 10:59
傳統(tǒng)的51是可以外擴(kuò)程序存儲(chǔ)器的,你可以用RAM來(lái)做這個(gè)外擴(kuò)的部分。

外置RAM當(dāng)ROM用,應(yīng)該是可以做到。就是分享程序缺乏通用性。我考慮過(guò)用自身端口,模擬外置程序存儲(chǔ)器,但是程序太繁雜了。
作者: angmall    時(shí)間: 2022-10-9 23:08
lyonkon 發(fā)表于 2022-10-9 22:49
通常51單片機(jī)是執(zhí)行ROM中的指令
現(xiàn)在是想讓單片機(jī)執(zhí)行片內(nèi)RAM中的指令,

你要去了解
哈佛結(jié)構(gòu)與馮·諾伊曼結(jié)構(gòu)區(qū)別

哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu)。
馮·諾伊曼結(jié)構(gòu),也稱(chēng)普林斯頓結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。

51單片機(jī)是哈佛結(jié)構(gòu),所以不能執(zhí)行片內(nèi)RAM中的指令。

作者: Hephaestus    時(shí)間: 2022-10-10 00:40
yzwzfyz 發(fā)表于 2022-10-8 10:59
傳統(tǒng)的51是可以外擴(kuò)程序存儲(chǔ)器的,你可以用RAM來(lái)做這個(gè)外擴(kuò)的部分。

扯淡。MOVC指令只能從程序存儲(chǔ)空間讀數(shù)據(jù),無(wú)法寫(xiě)數(shù)據(jù),你拿RAM做程序空間,硬件怎么接,軟件怎么寫(xiě)?
作者: Y_G_G    時(shí)間: 2022-10-10 08:16
lyonkon 發(fā)表于 2022-10-9 22:49
通常51單片機(jī)是執(zhí)行ROM中的指令
現(xiàn)在是想讓單片機(jī)執(zhí)行片內(nèi)RAM中的指令,

你只怕是對(duì)RAM有什么誤解吧
我不是計(jì)算機(jī)專(zhuān)業(yè)的,只能解讀51的RAM
51的RAM是易失的,掉電就沒(méi)了了,"任何RAM中存儲(chǔ)的信息在斷電后均會(huì)丟失,所以RAM是易失性存儲(chǔ)器。"這是百度的解釋,記住這句話(huà),記不住就抄20扁
RAM和ROM雖然名字上都夾帶著內(nèi)存,但它們是兩個(gè)東西,從設(shè)計(jì)的最初目的到實(shí)際使用,它們一直都是指向兩個(gè)不同的地方的
RAM是提高數(shù)據(jù)相關(guān)處理速度的,算是一個(gè)數(shù)據(jù)處理的中轉(zhuǎn)站,沒(méi)有DMA功能的單片機(jī),處理數(shù)據(jù)都要經(jīng)過(guò)RAM的,RAM放滿(mǎn)了,單片機(jī)就處理不了數(shù)據(jù)了
ROM就是存放數(shù)據(jù)的,就像家里的一個(gè)箱子,放滿(mǎn)了就放滿(mǎn)了,最多是再也放不下東西而已,單片機(jī)一樣的正常運(yùn)行
不要有著把指令放在RAM的想法,有了這個(gè)想法,并不是你有創(chuàng)新思想或者是腦洞大開(kāi),那是連51單片機(jī)的入門(mén)知識(shí)都沒(méi)有學(xué)好
作者: wufa1986    時(shí)間: 2022-10-10 08:21
架構(gòu)決定不可以這樣做,STM32可以運(yùn)行在RAM,就可以這樣做
作者: 188610329    時(shí)間: 2022-10-10 08:50
lyonkon 發(fā)表于 2022-10-9 22:49
通常51單片機(jī)是執(zhí)行ROM中的指令
現(xiàn)在是想讓單片機(jī)執(zhí)行片內(nèi)RAM中的指令,

首先,51單片機(jī)確實(shí)只能執(zhí)行rom中的指令,然后,你希望單片機(jī)執(zhí)行片內(nèi)ram的指令,是可以實(shí)現(xiàn)的,但是,不是直接執(zhí)行,而是用十幾條指令,去執(zhí)行一條在ram中的指令,具體執(zhí)行方法你可以參考stc的在線(xiàn)仿真用到的,單片機(jī)端的程序。你能看懂,基本就能實(shí)現(xiàn)你的目的,看不懂,說(shuō)明你的知識(shí)暫時(shí)還不支持你完成你的最終目標(biāo)。
作者: cnos    時(shí)間: 2022-10-10 09:00
這個(gè)不是說(shuō)不可以,只是有點(diǎn)麻煩了。
你去找找上古時(shí)期的
MCS-51試驗(yàn)箱
就有這種搞法,板子上是單片機(jī),通過(guò)鍵盤(pán)輸入?yún)R編指令,可以直接運(yùn)行
“CPU100%出借”  是我記得的一句說(shuō)明書(shū)里面最印象深刻的話(huà)。
作者: lyonkon    時(shí)間: 2022-10-10 11:35
cnos 發(fā)表于 2022-10-10 09:00
這個(gè)不是說(shuō)不可以,只是有點(diǎn)麻煩了。
你去找找上古時(shí)期的
MCS-51試驗(yàn)箱

我就是想實(shí)現(xiàn)這個(gè)功能,用鍵盤(pán)輸入程序,然后CPU執(zhí)行。
作者: lyonkon    時(shí)間: 2022-10-10 12:07
Y_G_G 發(fā)表于 2022-10-10 08:16
你只怕是對(duì)RAM有什么誤解吧
我不是計(jì)算機(jī)專(zhuān)業(yè)的,只能解讀51的RAM
51的RAM是易失的,掉電就沒(méi)了了,"任何R ...

開(kāi)機(jī)之前RAM中沒(méi)有程序,這個(gè)是不用擔(dān)心的?梢韵駒86那樣,開(kāi)機(jī)將程序載人RAM,載完了之后,CPU跳轉(zhuǎn)到RAM執(zhí)行指令。這樣,不論是加載的程序還是鍵盤(pán)輸入的程序,都可以執(zhí)行
作者: lyonkon    時(shí)間: 2022-10-10 12:24
cnos 發(fā)表于 2022-10-10 09:00
這個(gè)不是說(shuō)不可以,只是有點(diǎn)麻煩了。
你去找找上古時(shí)期的
MCS-51試驗(yàn)箱

apple 1 用的CPU與51CPU性能差不多,但是apple1不僅支持匯編,還支持b語(yǔ)言。我覺(jué)得51單片機(jī)是可以做到匯編語(yǔ)言輸入,并且執(zhí)行指令的,只是沒(méi)有人做,我是想做一個(gè)玩玩
作者: 人中狼    時(shí)間: 2022-10-10 12:42
感覺(jué)樓主還是有誤解了,看貼里對(duì)51試驗(yàn)箱的描述,應(yīng)該是外掛了一個(gè)比較大的RAM,這個(gè)RAM可以作為RAM和ROM來(lái)使用
作者: hongshi123    時(shí)間: 2022-10-10 13:35
51單片機(jī)暫時(shí)做不到,因?yàn)槭菣C(jī)制的原因,本身并不是ARM架構(gòu)的關(guān)系,這跟底層架構(gòu)是有關(guān)系的,建議學(xué)習(xí)下底層架構(gòu)知識(shí),就是那種純匯編代碼,了解PC指針,以及具體的寄存器,學(xué)習(xí)下就會(huì)明白
作者: Y_G_G    時(shí)間: 2022-10-10 14:08
lyonkon 發(fā)表于 2022-10-10 12:07
開(kāi)機(jī)之前RAM中沒(méi)有程序,這個(gè)是不用擔(dān)心的。可以像x86那樣,開(kāi)機(jī)將程序載人RAM,載完了之后,CPU跳轉(zhuǎn)到RA ...

"開(kāi)機(jī)之前RAM中沒(méi)有程序,這個(gè)是不用擔(dān)心的?梢韵駒86那樣,開(kāi)機(jī)將程序載人RAM,載完了之后,CPU跳轉(zhuǎn)到RAM執(zhí)行指令。這樣,不論是加載的程序還是鍵盤(pán)輸入的程序,都可以執(zhí)行"
非常好,反正我學(xué)了幾年的單片機(jī),什么都看不明白,果然,我還是技術(shù)不到家
作者: 人中狼    時(shí)間: 2022-10-10 15:43
這個(gè)方式現(xiàn)在好像沒(méi)什么意義了,這個(gè)需求就類(lèi)似早期一些設(shè)備商提供基本的功能,然后客戶(hù)可以自己加載自己的功能,但現(xiàn)在基本都是一次性設(shè)計(jì)完全,這種功能沒(méi)什么用了
作者: dalaoshi    時(shí)間: 2022-10-10 16:22
lyonkon 發(fā)表于 2022-10-10 11:35
我就是想實(shí)現(xiàn)這個(gè)功能,用鍵盤(pán)輸入程序,然后CPU執(zhí)行。

這是能夠?qū)崿F(xiàn)的,你先寫(xiě)一個(gè)基本操作程序,里面包含很多基本要用到的功能,比如TIME,COM, PRINT, VOLT, SENT,LOAD,RUN,PLAY(用中文也可)等等,然后用一個(gè)主控程序等待輸入,并顯示在LCD上,等輸入回車(chē)鍵后開(kāi)始檢查字串,如果是正確字串就開(kāi)始執(zhí)行相應(yīng)的副程式,執(zhí)行完畢后有回到等待輸入程序,要載入的外部程序可以?xún)?chǔ)存在SD卡,用LOAD命令加載在RAM, 讓后跳到程序起始處執(zhí)行,這樣就把控制權(quán)交給加載的程序,程序執(zhí)行完畢后把控制權(quán)再交回給主控程序,這樣就做成了51的DOS,由于現(xiàn)代有了大容量非易失存儲(chǔ)器SD卡的加持,也許會(huì)有新的用途。
作者: lyonkon    時(shí)間: 2022-10-10 22:47
dalaoshi 發(fā)表于 2022-10-10 16:22
這是能夠?qū)崿F(xiàn)的,你先寫(xiě)一個(gè)基本操作程序,里面包含很多基本要用到的功能,比如TIME,COM, PRINT, VOLT,  ...

外部程序要想執(zhí)行,先要把程序加載到ram。但是51 系統(tǒng)指令只在rom中,ram中的只被當(dāng)成數(shù)據(jù)。除非外部掛載普林斯頓體系存儲(chǔ)器。樓上說(shuō)有執(zhí)行ram中指令的方法,我先看看官方手冊(cè)

作者: 人中狼    時(shí)間: 2022-10-10 23:04
樓主沒(méi)明白24樓的意思,應(yīng)該是外掛一個(gè)RAM,用來(lái)存程序和執(zhí)行程序,只是把一般外接的ROM改成了RAM
作者: 正在學(xué)習(xí)51    時(shí)間: 2022-10-11 00:59
Y_G_G 發(fā)表于 2022-10-8 11:44
C我會(huì),匯編我也會(huì),精通算不上,至少算是已經(jīng)入門(mén)了
但為什么我看不懂樓主的問(wèn)題

新手剛?cè)腭v求教,我看樓主的意思是不從內(nèi)存取從別的地方取吧,反通常操作再問(wèn)行不行得通吧。
本來(lái)要學(xué)單片編程的我學(xué)了C++,歪了一陣風(fēng)中凌亂嘻嘻嘻....
今天才知道單片的編程不能硬套電腦編程,有些是不通用的。但是分清楚了就較簡(jiǎn)單了信心滿(mǎn)滿(mǎn)再補(bǔ)一波單片編程
作者: man1234567    時(shí)間: 2022-10-11 08:22
“在51單片機(jī)片內(nèi)取指令,無(wú)法從內(nèi)存中讀取,只能從程序存儲(chǔ)器中讀取。”
這個(gè)問(wèn)題很好,但是看不懂
單片機(jī)指令不是編譯后一次寫(xiě)入么 ?編好的程序如何放在內(nèi)存 ?而且還可以放在程序存儲(chǔ)器 ?
作者: jjwangxu2008    時(shí)間: 2022-10-11 08:48
Y_G_G 發(fā)表于 2022-10-10 08:16
你只怕是對(duì)RAM有什么誤解吧
我不是計(jì)算機(jī)專(zhuān)業(yè)的,只能解讀51的RAM
51的RAM是易失的,掉電就沒(méi)了了,"任何R ...

是不是 跑個(gè)虛擬機(jī),然后就能實(shí)現(xiàn) 運(yùn)行RAM指令了。 不知道這么理解對(duì)不對(duì)?
作者: jjwangxu2008    時(shí)間: 2022-10-11 08:53
dalaoshi 發(fā)表于 2022-10-10 16:22
這是能夠?qū)崿F(xiàn)的,你先寫(xiě)一個(gè)基本操作程序,里面包含很多基本要用到的功能,比如TIME,COM, PRINT, VOLT,  ...

我也想做這個(gè)東西。
作者: jjwangxu2008    時(shí)間: 2022-10-11 08:55
正在學(xué)習(xí)51 發(fā)表于 2022-10-11 00:59
新手剛?cè)腭v求教,我看樓主的意思是不從內(nèi)存取從別的地方取吧,反通常操作再問(wèn)行不行得通吧。
本來(lái) ...

現(xiàn)在 單片機(jī)  可以用C++ 編程了
作者: lyonkon    時(shí)間: 2022-10-11 09:24
正在學(xué)習(xí)51 發(fā)表于 2022-10-11 00:59
新手剛?cè)腭v求教,我看樓主的意思是不從內(nèi)存取從別的地方取吧,反通常操作再問(wèn)行不行得通吧。
本來(lái) ...

當(dāng)鍵盤(pán)輸入一條指令,存入內(nèi)存。CPU要執(zhí)行這條指令,51單片機(jī)在外接RAM的時(shí)候可以做到。我們討論的是只用片內(nèi)資源如何達(dá)到這個(gè)目的。并不是明知不可為而為。那樣就失去了探索的意義了
作者: Y_G_G    時(shí)間: 2022-10-11 11:50
jjwangxu2008 發(fā)表于 2022-10-11 08:48
是不是 跑個(gè)虛擬機(jī),然后就能實(shí)現(xiàn) 運(yùn)行RAM指令了。 不知道這么理解對(duì)不對(duì)?

跑什么虛擬機(jī)
這是樓主單片機(jī)基礎(chǔ)知識(shí)沒(méi)學(xué)好,想當(dāng)然的冒出一個(gè)想法
你說(shuō)什么他都能找到一堆東西來(lái)反駁你,說(shuō)得有理有據(jù)的
指令跟數(shù)據(jù)都分清
STM32把程序放在RAM中運(yùn)行和他說(shuō)的這個(gè),完全是兩回事
FPGA運(yùn)行方式也是把程序放到RAM中運(yùn)行的,但也跟他說(shuō)的不是一回事
他就是想當(dāng)然的有一個(gè)想法,然后想當(dāng)然的覺(jué)得這個(gè)方法是可以
再然后就是在這個(gè)"他自己覺(jué)得可以的"前提下,問(wèn)人家怎么做
作者: wwh2382    時(shí)間: 2022-10-11 15:33
我理解的是,樓主想拿單片機(jī)當(dāng)pc機(jī)用。坦率地說(shuō),你就死了這條心吧。計(jì)算機(jī)技術(shù)如今發(fā)展的已經(jīng)很成熟了,其表現(xiàn)之一就是不同的技術(shù)有不同的定位
作者: angmall    時(shí)間: 2022-10-11 15:53
你可以試試這個(gè)
PAULMON 調(diào)試器


PAULMON 使用 8051 中的內(nèi)置 UART 來(lái)與用戶(hù)溝通。通常,PC 計(jì)算機(jī)與終端程序、8051 匯編器一起使用


PAULMON 也旨在與 RAM 一起使用,并且 RAM 開(kāi)頭的默認(rèn)位置是 2000(十六進(jìn)制),在 EPROM 之后,雖然是 RAM
可以在 2000 - FFFF 范圍內(nèi)的任何地方使用。到 RAM 的讀使能信號(hào)應(yīng)該是 RD 和 PSEN 信號(hào)的邏輯或,以便讀取
嘗試外部代碼存儲(chǔ)器或程序存儲(chǔ)器空格將從 RAM 中讀取。 (使用與門(mén)做這些信號(hào)的邏輯或,因?yàn)樗鼈?br /> 低電平有效!)顯然的寫(xiě)使能 RAM 應(yīng)連接到 8051 的 WR 引腳。

以這種方式連接 RAM 將允許在 PAULMON 中下載命令來(lái)編寫(xiě)你的程序進(jìn)入 RAM (寫(xiě)入外部數(shù)據(jù)存儲(chǔ)器
空間)。然后你可以運(yùn)行你的程序,因?yàn)閺耐獠砍绦虼鎯?chǔ)空間讀取嘗試 將從 RAM 芯片中讀取。






PJRC.zip

3.4 MB, 下載次數(shù): 4


作者: lyonkon    時(shí)間: 2022-10-13 00:26
wwh2382 發(fā)表于 2022-10-11 15:33
我理解的是,樓主想拿單片機(jī)當(dāng)pc機(jī)用。坦率地說(shuō),你就死了這條心吧。計(jì)算機(jī)技術(shù)如今發(fā)展的已經(jīng)很成熟了,其 ...

我的目的的確是這樣
作者: hhdsdy    時(shí)間: 2022-10-13 01:19
lyonkon 發(fā)表于 2022-10-9 23:07
外置RAM當(dāng)ROM用,應(yīng)該是可以做到。就是分享程序缺乏通用性。我考慮過(guò)用自身端口,模擬外置程序存儲(chǔ)器,但 ...

還以為樓主有了這個(gè)想法,就能理解我的說(shuō)法,沒(méi)想到還是不懂。
不明白為什么會(huì)說(shuō)缺乏通用性?6264外加小電池并稍作處理,做個(gè)小電路板,就能代替2764使用,存儲(chǔ)器的座子用鎖緊座代替,該電路板插在外擴(kuò)RAM上可讀寫(xiě),插在外擴(kuò)ROM上并將EA置零可運(yùn)行程序。
嫌麻煩的,用地址區(qū)分,比如4000H開(kāi)始的地址分配給它,用雙刀雙擲開(kāi)關(guān)進(jìn)行切換,一樣可以讀寫(xiě)以及運(yùn)行程序,至于具體的,因?yàn)殚L(zhǎng)久沒(méi)接觸,倒是忘了,但是絕對(duì)可行。
作者: hhdsdy    時(shí)間: 2022-10-13 01:39
lyonkon 發(fā)表于 2022-10-13 00:26
我的目的的確是這樣

以前的武漢尚吉電子曾經(jīng)出品過(guò)SCB-II-51或者說(shuō)是SCB-2-51的單片單板機(jī),你或許要的就是這種。
我那時(shí)從電子報(bào)中縫廣告看到有學(xué)習(xí)單片機(jī)的書(shū)籍然后郵購(gòu),從此才對(duì)單片機(jī)感興趣并學(xué)習(xí)的,實(shí)際上那上下兩冊(cè)的書(shū)籍就是該單片單板機(jī)的說(shuō)明書(shū),但是解說(shuō)的很詳細(xì),并附有詳細(xì)完整的程序,反正我那時(shí)就是靠著該書(shū),沒(méi)有老師沒(méi)有同好交流,一個(gè)人自學(xué)單片機(jī)的,最后還組裝了一套該單片單板機(jī)。
作者: lyonkon    時(shí)間: 2022-10-13 08:21
hhdsdy 發(fā)表于 2022-10-13 01:19
還以為樓主有了這個(gè)想法,就能理解我的說(shuō)法,沒(méi)想到還是不懂。
不明白為什么會(huì)說(shuō)缺乏通用性?6264外加小 ...

你看到35樓的設(shè)計(jì),你就會(huì)改變想法了。你說(shuō)的思路是將RAM芯片加電池當(dāng)ROM用。
作者: lyonkon    時(shí)間: 2022-10-13 08:37
angmall 發(fā)表于 2022-10-11 15:53
你可以試試這個(gè)
PAULMON 調(diào)試器


老哥時(shí)序玩的溜。∥业脑O(shè)計(jì)是將p2.7引腳和red引腳接一個(gè)與門(mén)到RAM oe端。讀寫(xiě)數(shù)據(jù)的時(shí)候,p2.7為高電平(地址最高位)。執(zhí)行RAM中指令時(shí),p2.7為低電平。缺點(diǎn)是數(shù)據(jù)地址,與指令地址是兩套地址,容易記不住。我覺(jué)得你的設(shè)計(jì)更符合時(shí)序,用起來(lái)也省心。
作者: lyonkon    時(shí)間: 2022-10-13 08:46
Y_G_G 發(fā)表于 2022-10-11 11:50
跑什么虛擬機(jī)
這是樓主單片機(jī)基礎(chǔ)知識(shí)沒(méi)學(xué)好,想當(dāng)然的冒出一個(gè)想法
你說(shuō)什么他都能找到一堆東西來(lái)反駁 ...

35樓的設(shè)計(jì)已經(jīng)做到了,指令可以在RAM中執(zhí)行。也不影響RAM存儲(chǔ)數(shù)據(jù)。
作者: lyonkon    時(shí)間: 2022-10-13 09:00
angmall 發(fā)表于 2022-10-11 15:53
你可以試試這個(gè)
PAULMON 調(diào)試器


psen引腳我本來(lái)是放棄不用的,沒(méi)想到老哥用的這么好。普林斯頓存儲(chǔ)體系。
作者: 人中狼    時(shí)間: 2022-10-13 10:29
樓主對(duì)51的RAM有一些概念的錯(cuò)誤,35樓實(shí)現(xiàn)的仍然是使用外部RAM做加載程序的存儲(chǔ)器,并不是使用51芯片內(nèi)部的RAM,是不同的概念
作者: Y_G_G    時(shí)間: 2022-10-13 10:47
lyonkon 發(fā)表于 2022-10-13 08:46
35樓的設(shè)計(jì)已經(jīng)做到了,指令可以在RAM中執(zhí)行。也不影響RAM存儲(chǔ)數(shù)據(jù)。

你運(yùn)行過(guò)了?如果你運(yùn)行了,我有硬件,你把你的代碼發(fā)上來(lái),我去運(yùn)行看一下結(jié)果
順便問(wèn)一下,MOV P0,#015H
你要怎么輸入這個(gè)命令,從哪里輸入?
作者: lyonkon    時(shí)間: 2022-10-13 12:27
Y_G_G 發(fā)表于 2022-10-13 10:47
你運(yùn)行過(guò)了?如果你運(yùn)行了,我有硬件,你把你的代碼發(fā)上來(lái),我去運(yùn)行看一下結(jié)果
順便問(wèn)一下,MOV P0,#015H
...

org 0000h
……
主程序載入RAM程序從片內(nèi)rom載人片外ram
d1:
mov dph,#0000
mov dpl,#0000
movc a,@dptr
mov r0 ,#00h
movx @r0,a
Inc r0
Inc dptr
mov r1,#ffh//比如程序是128字節(jié)
djnz r1 d1
setb p3.0;單片機(jī)EA引腳
至此單片機(jī)跳入外部RAM執(zhí)行。
你在主程序當(dāng)中加一條
movx a,1fh
那么用鍵盤(pán)在1fh地址輸入你的數(shù)字。就可以了





作者: Y_G_G    時(shí)間: 2022-10-13 13:09
lyonkon 發(fā)表于 2022-10-13 12:27
org 0000h
……
主程序載入RAM程序從片內(nèi)rom載人片外ram

我竟然無(wú)言以對(duì)
再去看了一下你以前的帖子,才發(fā)現(xiàn),你就是那個(gè)發(fā)明了三總線(xiàn)開(kāi)發(fā)板的發(fā)明人
對(duì)不起,我錯(cuò)了,哪怕我上論壇只是打發(fā)時(shí)間,也不應(yīng)該把時(shí)間浪費(fèi)在這個(gè)帖子上
我只是一個(gè)執(zhí)著于把前輩經(jīng)驗(yàn)運(yùn)用到實(shí)際中的人,我沒(méi)什么上進(jìn)心,也沒(méi)有什么想要?jiǎng)?chuàng)新的思想
我只會(huì)運(yùn)用已經(jīng)存在的技術(shù)而已
作者: hhdsdy    時(shí)間: 2022-10-13 23:09
lyonkon 發(fā)表于 2022-10-13 08:21
你看到35樓的設(shè)計(jì),你就會(huì)改變想法了。你說(shuō)的思路是將RAM芯片加電池當(dāng)ROM用。

錯(cuò)了,你還是沒(méi)有理解我的說(shuō)法,“該電路板插在外擴(kuò)RAM上可讀寫(xiě)”,已經(jīng)可以隨意編寫(xiě)機(jī)器語(yǔ)言進(jìn)去了,然后控制引腳切換,就可以當(dāng)做程序存儲(chǔ)器運(yùn)行程序了
作者: hhdsdy    時(shí)間: 2022-10-13 23:11
lyonkon 發(fā)表于 2022-10-13 12:27
org 0000h
……
主程序載入RAM程序從片內(nèi)rom載人片外ram

我也是醉了,控制單片機(jī)EA引腳是這樣的嗎? “setb p3.0;單片機(jī)EA引腳”
作者: hhdsdy    時(shí)間: 2022-10-13 23:18
Y_G_G 發(fā)表于 2022-10-13 13:09
我竟然無(wú)言以對(duì)
再去看了一下你以前的帖子,才發(fā)現(xiàn),你就是那個(gè)發(fā)明了三總線(xiàn)開(kāi)發(fā)板的發(fā)明人
對(duì)不起,我錯(cuò) ...

回帖沒(méi)看人,原來(lái)又是一位力圖拯救過(guò)時(shí)元器件和原理的大俠,我還以為只是一時(shí)興趣愛(ài)好想玩的呢,畢竟我也懷念之前用單片單板機(jī)輸入機(jī)器碼進(jìn)行學(xué)習(xí)單片機(jī)的經(jīng)過(guò),也有重新打板(當(dāng)然元件簡(jiǎn)化用新式的,比如用TM1650系列做顯示和按鍵處理)“懷舊”的想法,自我陶醉一下
作者: lyonkon    時(shí)間: 2022-11-23 14:32
angmall 發(fā)表于 2022-10-11 15:53
你可以試試這個(gè)
PAULMON 調(diào)試器

51brod.zip (38.7 KB, 下載次數(shù): 3) ram62256讀寫(xiě)地址:0000h---7fffh,
lcd1602:寫(xiě)指令地址8000h---83ffh
           :寫(xiě)數(shù)據(jù)地址8400h---87ffh
           :讀狀態(tài)地址8bffh---8800h
           :讀數(shù)據(jù)地址8c00h---8fffh
請(qǐng)老哥斧正

作者: Longan.Wang    時(shí)間: 2022-11-23 17:24
51單片機(jī)說(shuō)"臣妾做不到。。。。。。。"
作者: angmall    時(shí)間: 2022-11-23 17:41
你的74HC138連接不正確。


LCD1602讀寫(xiě)地址是對(duì)的。






作者: lyonkon    時(shí)間: 2022-11-23 23:13
angmall 發(fā)表于 2022-11-23 17:41
你的74HC138連接不正確。

感謝,我從老哥圖紙中學(xué)了不少東西。
51 EA引腳實(shí)機(jī)我測(cè)試了,
用stc89c52測(cè)試
EA引腳接高電平,執(zhí)行片內(nèi)程序
EA引腳接低電平,執(zhí)行片內(nèi)程序
EA引腳懸空,任然執(zhí)行片內(nèi)程序
開(kāi)機(jī)過(guò)后接線(xiàn)。接了線(xiàn)再開(kāi)機(jī)任然,沒(méi)有任何變化
EA引腳彎出ic座 測(cè)試的,用兩個(gè)芯片試過(guò),
我從老cd機(jī)上拆了一塊at89c51
用at89c51測(cè)試EA引腳沒(méi)問(wèn)題,


作者: angmall    時(shí)間: 2022-11-24 15:44
lyonkon 發(fā)表于 2022-11-23 23:13
感謝,我從老哥圖紙中學(xué)了不少東西。
51 EA引腳實(shí)機(jī)我測(cè)試了,
用stc89c52測(cè)試

STC89C52 有兩個(gè)版本。只有HD版本有EA

不過(guò)現(xiàn)在外面能夠買(mǎi)到的版本多數(shù)是90C版本沒(méi)有EA接腳的












作者: 1261867136qq    時(shí)間: 2022-11-25 09:05
回顧了樓主帖子,我覺(jué)得樓主是想做軟驅(qū),二十年前,插軟驅(qū)的那種,PC機(jī)
作者: zhxzhx    時(shí)間: 2022-11-30 00:00
lyonkon 發(fā)表于 2022-10-9 23:07
外置RAM當(dāng)ROM用,應(yīng)該是可以做到。就是分享程序缺乏通用性。我考慮過(guò)用自身端口,模擬外置程序存儲(chǔ)器,但 ...

有這種的51單片機(jī),好像是錦銳的,有一部分 RAM和ROM在地址上是重疊映射的,主要用來(lái)做 BOOTLOAD代碼
作者: lyonkon    時(shí)間: 2022-12-7 11:58

                                  ORG        0000H
                  LJMP        FO
                                  ORG        0003H
                                  SJMP        MAIN
WRCMD:                                                                                   //寫(xiě)指令子程序
                                push        ACC                    
                  lcall        READ12864BF
                                             
                                  MOV        A,R3
                                  MOV        DPTR,#8000H                  //lcd寫(xiě)指令地址 8000H
                                  MOVX        @DPTR,A
                                  POP        ACC
                  RET
WRDAT:                                        //寫(xiě)數(shù)據(jù)子程序      
                         push        ACC         
                                  lcall        READ12864BF
                                         
                                  MOV        A,R4
                                  MOV        DPTR,#8400H                  //lcd寫(xiě)寫(xiě)數(shù)據(jù)地址        8400H
                                  MOVX        @DPTR,A
                                  POP        ACC               
                  RET
INIT:                                                                                  //lcd初始化程序
                MOV                R3,#0X38               
                LCALL        WRCMD
                MOV                R3,#0X38                     
                LCALL        WRCMD
                MOV                R3,#0X0c                       
                LCALL        WRCMD            
                MOV                R3,#0X06
                LCALL        WRCMD              
                MOV                R3,#0X01                       
                LCALL        WRCMD
                RET
MAIN:                                         //主程序                     
                                LCALL        INIT                              
                    D1:         
                                                                MOV          R3,#0x80        
                                LCALL        WRCMD
                                                                   MOV        R4,#0X35                           //5
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x81
                                                                LCALL        WRCMD
                                                            MOV        R4,#0X31                           //1
                                                                LCALL        WRDAT
                                                                   MOV         R3,#0x82
                                                                LCALL        WRCMD
                                                                MOV        R4,#0X48                           //H
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x83                                                                                                                                                                    
                                LCALL        WRCMD
                                                                   MOV        R4,#0X45                          //E
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x84            
                                                                LCALL   WRCMD
                                                                MOV        R4,#0X49                          //I
                                                                LCALL        WRDAT
                                                                MOV         R3,#0x85
                                                                LCALL        WRCMD
                                                                MOV        R4,#0X2E                          //.
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x86        
                                LCALL        WRCMD
                                                                   MOV        R4,#0X43                          //C
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x87
                                                                LCALL   WRCMD
                                                                MOV        R4,#0X4F                          //O
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x88
                                                                LCALL   WRCMD
                                                                MOV        R4,#0X4D                          //M
                                                                LCALL        WRDAT
                                                                MOV          R3,#0x89
                                                                LCALL   WRCMD        
                                                                MOV        A,#0X42
                                                                MOV        DPTR,#7FFFH
                                                                MOVX        @DPTR,A
                                                                MOV        A,#0X41
                                                                MOVX        A,@DPTR
                                                                MOV        R4,A
                                                                LCALL        WRDAT
                                                                SJMP        D1
READ12864BF:                                    //判斷忙子程序
                                         PUSH        ACC
READ12864BF1:                 MOV        DPTR,#8800H           //lcd讀指令地址          8800H
                                        MOVX        A,@DPTR         
                                        JB        ACC.7,READ12864BF1
                                        POP        ACC
                                    ret
FO:
MOV        DPTR,#0000H
MOV        R7,#03H
FO0:
MOV        A,#00
MOV        DPL,R7
MOVC        A,@A+DPTR
MOVX        @DPTR,A
INC        R7
CLR        P1.0                          ;EA引腳
CJNE        R7,#0XC9,FO0
LJMP        MAIN
RET
END       51.zip (78.11 KB, 下載次數(shù): 3)






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1