找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
12
返回列表 發(fā)新帖
樓主: lyonkon
打印 上一主題 下一主題
收起左側(cè)

對于51單片機(jī)內(nèi)存的困擾,求指教

  [復(fù)制鏈接]
41#
ID:73992 發(fā)表于 2022-10-13 08:46 來自觸屏版 | 只看該作者
Y_G_G 發(fā)表于 2022-10-11 11:50
跑什么虛擬機(jī)
這是樓主單片機(jī)基礎(chǔ)知識沒學(xué)好,想當(dāng)然的冒出一個想法
你說什么他都能找到一堆東西來反駁 ...

35樓的設(shè)計已經(jīng)做到了,指令可以在RAM中執(zhí)行。也不影響RAM存儲數(shù)據(jù)。
回復(fù)

使用道具 舉報

42#
ID:73992 發(fā)表于 2022-10-13 09:00 來自觸屏版 | 只看該作者
angmall 發(fā)表于 2022-10-11 15:53
你可以試試這個
PAULMON 調(diào)試器


psen引腳我本來是放棄不用的,沒想到老哥用的這么好。普林斯頓存儲體系。
回復(fù)

使用道具 舉報

43#
ID:384109 發(fā)表于 2022-10-13 10:29 | 只看該作者
樓主對51的RAM有一些概念的錯誤,35樓實(shí)現(xiàn)的仍然是使用外部RAM做加載程序的存儲器,并不是使用51芯片內(nèi)部的RAM,是不同的概念
回復(fù)

使用道具 舉報

44#
ID:401564 發(fā)表于 2022-10-13 10:47 | 只看該作者
lyonkon 發(fā)表于 2022-10-13 08:46
35樓的設(shè)計已經(jīng)做到了,指令可以在RAM中執(zhí)行。也不影響RAM存儲數(shù)據(jù)。

你運(yùn)行過了?如果你運(yùn)行了,我有硬件,你把你的代碼發(fā)上來,我去運(yùn)行看一下結(jié)果
順便問一下,MOV P0,#015H
你要怎么輸入這個命令,從哪里輸入?
回復(fù)

使用道具 舉報

45#
ID:73992 發(fā)表于 2022-10-13 12:27 來自觸屏版 | 只看該作者
Y_G_G 發(fā)表于 2022-10-13 10:47
你運(yùn)行過了?如果你運(yùn)行了,我有硬件,你把你的代碼發(fā)上來,我去運(yùn)行看一下結(jié)果
順便問一下,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
那么用鍵盤在1fh地址輸入你的數(shù)字。就可以了




回復(fù)

使用道具 舉報

46#
ID:401564 發(fā)表于 2022-10-13 13:09 | 只看該作者
lyonkon 發(fā)表于 2022-10-13 12:27
org 0000h
……
主程序載入RAM程序從片內(nèi)rom載人片外ram

我竟然無言以對
再去看了一下你以前的帖子,才發(fā)現(xiàn),你就是那個發(fā)明了三總線開發(fā)板的發(fā)明人
對不起,我錯了,哪怕我上論壇只是打發(fā)時間,也不應(yīng)該把時間浪費(fèi)在這個帖子上
我只是一個執(zhí)著于把前輩經(jīng)驗(yàn)運(yùn)用到實(shí)際中的人,我沒什么上進(jìn)心,也沒有什么想要創(chuàng)新的思想
我只會運(yùn)用已經(jīng)存在的技術(shù)而已
回復(fù)

使用道具 舉報

47#
ID:88256 發(fā)表于 2022-10-13 23:09 | 只看該作者
lyonkon 發(fā)表于 2022-10-13 08:21
你看到35樓的設(shè)計,你就會改變想法了。你說的思路是將RAM芯片加電池當(dāng)ROM用。

錯了,你還是沒有理解我的說法,“該電路板插在外擴(kuò)RAM上可讀寫”,已經(jīng)可以隨意編寫機(jī)器語言進(jìn)去了,然后控制引腳切換,就可以當(dāng)做程序存儲器運(yùn)行程序了
回復(fù)

使用道具 舉報

48#
ID:88256 發(fā)表于 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引腳”
回復(fù)

使用道具 舉報

49#
ID:88256 發(fā)表于 2022-10-13 23:18 | 只看該作者
Y_G_G 發(fā)表于 2022-10-13 13:09
我竟然無言以對
再去看了一下你以前的帖子,才發(fā)現(xiàn),你就是那個發(fā)明了三總線開發(fā)板的發(fā)明人
對不起,我錯 ...

回帖沒看人,原來又是一位力圖拯救過時元器件和原理的大俠,我還以為只是一時興趣愛好想玩的呢,畢竟我也懷念之前用單片單板機(jī)輸入機(jī)器碼進(jìn)行學(xué)習(xí)單片機(jī)的經(jīng)過,也有重新打板(當(dāng)然元件簡化用新式的,比如用TM1650系列做顯示和按鍵處理)“懷舊”的想法,自我陶醉一下
回復(fù)

使用道具 舉報

50#
ID:73992 發(fā)表于 2022-11-23 14:32 | 只看該作者
angmall 發(fā)表于 2022-10-11 15:53
你可以試試這個
PAULMON 調(diào)試器

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

使用道具 舉報

51#
ID:77589 發(fā)表于 2022-11-23 17:24 | 只看該作者
51單片機(jī)說"臣妾做不到。。。。。。!"
回復(fù)

使用道具 舉報

52#
ID:155507 發(fā)表于 2022-11-23 17:41 | 只看該作者
你的74HC138連接不正確。


LCD1602讀寫地址是對的。





回復(fù)

使用道具 舉報

53#
ID:73992 發(fā)表于 2022-11-23 23:13 | 只看該作者
angmall 發(fā)表于 2022-11-23 17:41
你的74HC138連接不正確。

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

回復(fù)

使用道具 舉報

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

STC89C52 有兩個版本。只有HD版本有EA

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











回復(fù)

使用道具 舉報

55#
ID:308903 發(fā)表于 2022-11-25 09:05 | 只看該作者
回顧了樓主帖子,我覺得樓主是想做軟驅(qū),二十年前,插軟驅(qū)的那種,PC機(jī)
回復(fù)

使用道具 舉報

56#
ID:378108 發(fā)表于 2022-11-30 00:00 | 只看該作者
lyonkon 發(fā)表于 2022-10-9 23:07
外置RAM當(dāng)ROM用,應(yīng)該是可以做到。就是分享程序缺乏通用性。我考慮過用自身端口,模擬外置程序存儲器,但 ...

有這種的51單片機(jī),好像是錦銳的,有一部分 RAM和ROM在地址上是重疊映射的,主要用來做 BOOTLOAD代碼
回復(fù)

使用道具 舉報

57#
ID:73992 發(fā)表于 2022-12-7 11:58 | 只看該作者

                                  ORG        0000H
                  LJMP        FO
                                  ORG        0003H
                                  SJMP        MAIN
WRCMD:                                                                                   //寫指令子程序
                                push        ACC                    
                  lcall        READ12864BF
                                             
                                  MOV        A,R3
                                  MOV        DPTR,#8000H                  //lcd寫指令地址 8000H
                                  MOVX        @DPTR,A
                                  POP        ACC
                  RET
WRDAT:                                        //寫數(shù)據(jù)子程序      
                         push        ACC         
                                  lcall        READ12864BF
                                         
                                  MOV        A,R4
                                  MOV        DPTR,#8400H                  //lcd寫寫數(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)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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