lyonkon 发表于 2022-10-9 23:07 有这种的51单片机,好像是锦锐的,有一部分 RAM和ROM在地址上是重叠映射的,主要用来做 BOOTLOAD代码 |
回顾了楼主帖子,我觉得楼主是想做软驱,二十年前,插软驱的那种,PC机![]() |
lyonkon 发表于 2022-11-23 23:13 STC89C52 有两个版本。只有HD版本有EA
不过现在外面能够买到的版本多数是90C版本没有EA接脚的
|
angmall 发表于 2022-11-23 17:41 感谢,我从老哥图纸中学了不少东西。 51 EA引脚实机我测试了, 用stc89c52测试 EA引脚接高电平,执行片内程序 EA引脚接低电平,执行片内程序 EA引脚悬空,任然执行片内程序 开机过后接线。接了线再开机任然,没有任何变化 EA引脚弯出ic座 测试的,用两个芯片试过, 我从老cd机上拆了一块at89c51 用at89c51测试EA引脚没问题, |
你的74HC138连接不正确。
LCD1602读写地址是对的。 |
| 51单片机说"臣妾做不到啊!!!!!!!" |
Y_G_G 发表于 2022-10-13 13:09 回帖没看人,原来又是一位力图拯救过时元器件和原理的大侠,我还以为只是一时兴趣爱好想玩的呢,毕竟我也怀念之前用单片单板机输入机器码进行学习单片机的经过,也有重新打板(当然元件简化用新式的,比如用TM1650系列做显示和按键处理)“怀旧”的想法,自我陶醉一下 |
lyonkon 发表于 2022-10-13 12:27 我也是醉了,控制单片机EA引脚是这样的吗? “setb p3.0;单片机EA引脚” |
lyonkon 发表于 2022-10-13 08:21 错了,你还是没有理解我的说法,“该电路板插在外扩RAM上可读写”,已经可以随意编写机器语言进去了,然后控制引脚切换,就可以当做程序存储器运行程序了 |
lyonkon 发表于 2022-10-13 12:27 我竟然无言以对 再去看了一下你以前的帖子,才发现,你就是那个发明了三总线开发板的发明人 对不起,我错了,哪怕我上论坛只是打发时间,也不应该把时间浪费在这个帖子上 我只是一个执着于把前辈经验运用到实际中的人,我没什么上进心,也没有什么想要创新的思想 我只会运用已经存在的技术而已 |
Y_G_G 发表于 2022-10-13 10:47 org 0000h …… 主程序载入RAM程序从片内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字节 djnz r1 d1 setb p3.0;单片机EA引脚 至此单片机跳入外部RAM执行。 你在主程序当中加一条 movx a,1fh 那么用键盘在1fh地址输入你的数字。就可以了 |
lyonkon 发表于 2022-10-13 08:46 你运行过了?如果你运行了,我有硬件,你把你的代码发上来,我去运行看一下结果 顺便问一下,MOV P0,#015H 你要怎么输入这个命令,从哪里输入? |
| 楼主对51的RAM有一些概念的错误,35楼实现的仍然是使用外部RAM做加载程序的存储器,并不是使用51芯片内部的RAM,是不同的概念 |
angmall 发表于 2022-10-11 15:53 psen引脚我本来是放弃不用的,没想到老哥用的这么好。普林斯顿存储体系。 |
Y_G_G 发表于 2022-10-11 11:50 35楼的设计已经做到了,指令可以在RAM中执行。也不影响RAM存储数据。 |
angmall 发表于 2022-10-11 15:53 老哥时序玩的溜啊!我的设计是将p2.7引脚和red引脚接一个与门到RAM oe端。读写数据的时候,p2.7为高电平(地址最高位)。执行RAM中指令时,p2.7为低电平。缺点是数据地址,与指令地址是两套地址,容易记不住。我觉得你的设计更符合时序,用起来也省心。 |
hhdsdy 发表于 2022-10-13 01:19 你看到35楼的设计,你就会改变想法了。你说的思路是将RAM芯片加电池当ROM用。 |
lyonkon 发表于 2022-10-13 00:26 以前的武汉尚吉电子曾经出品过SCB-II-51或者说是SCB-2-51的单片单板机,你或许要的就是这种。 我那时从电子报中缝广告看到有学习单片机的书籍然后邮购,从此才对单片机感兴趣并学习的,实际上那上下两册的书籍就是该单片单板机的说明书,但是解说的很详细,并附有详细完整的程序,反正我那时就是靠着该书,没有老师没有同好交流,一个人自学单片机的,最后还组装了一套该单片单板机。 |
lyonkon 发表于 2022-10-9 23:07 还以为楼主有了这个想法,就能理解我的说法,没想到还是不懂。 不明白为什么会说缺乏通用性?6264外加小电池并稍作处理,做个小电路板,就能代替2764使用,存储器的座子用锁紧座代替,该电路板插在外扩RAM上可读写,插在外扩ROM上并将EA置零可运行程序。 嫌麻烦的,用地址区分,比如4000H开始的地址分配给它,用双刀双掷开关进行切换,一样可以读写以及运行程序,至于具体的,因为长久没接触,倒是忘了,但是绝对可行。 |
wwh2382 发表于 2022-10-11 15:33 我的目的的确是这样 |
|
你可以试试这个 PAULMON 调试器
PAULMON 使用 8051 中的内置 UART 来与用户沟通。通常,PC 计算机与终端程序、8051 汇编器一起使用
PAULMON 也旨在与 RAM 一起使用,并且 RAM 开头的默认位置是 2000(十六进制),在 EPROM 之后,虽然是 RAM 可以在 2000 - FFFF 范围内的任何地方使用。到 RAM 的读使能信号应该是 RD 和 PSEN 信号的逻辑或,以便读取 尝试外部代码存储器或程序存储器空格将从 RAM 中读取。 (使用与门做这些信号的逻辑或,因为它们 低电平有效!)显然的写使能 RAM 应连接到 8051 的 WR 引脚。 以这种方式连接 RAM 将允许在 PAULMON 中下载命令来编写你的程序进入 RAM (写入外部数据存储器 空间)。然后你可以运行你的程序,因为从外部程序存储空间读取尝试 将从 RAM 芯片中读取。 |
3.4 MB, 下载次数: 4
| 我理解的是,楼主想拿单片机当pc机用。坦率地说,你就死了这条心吧。计算机技术如今发展的已经很成熟了,其表现之一就是不同的技术有不同的定位 |
jjwangxu2008 发表于 2022-10-11 08:48 跑什么虚拟机 这是楼主单片机基础知识没学好,想当然的冒出一个想法 你说什么他都能找到一堆东西来反驳你,说得有理有据的 指令跟数据都分清 STM32把程序放在RAM中运行和他说的这个,完全是两回事 FPGA运行方式也是把程序放到RAM中运行的,但也跟他说的不是一回事 他就是想当然的有一个想法,然后想当然的觉得这个方法是可以 再然后就是在这个"他自己觉得可以的"前提下,问人家怎么做 |
正在学习51 发表于 2022-10-11 00:59 当键盘输入一条指令,存入内存。CPU要执行这条指令,51单片机在外接RAM的时候可以做到。我们讨论的是只用片内资源如何达到这个目的。并不是明知不可为而为。那样就失去了探索的意义了 |
正在学习51 发表于 2022-10-11 00:59 现在 单片机 可以用C++ 编程了 |
dalaoshi 发表于 2022-10-10 16:22 我也想做这个东西。 |
Y_G_G 发表于 2022-10-10 08:16 是不是 跑个虚拟机,然后就能实现 运行RAM指令了。 不知道这么理解对不对? |
|
“在51单片机片内取指令,无法从内存中读取,只能从程序存储器中读取。” 这个问题很好,但是看不懂 ![]() 单片机指令不是编译后一次写入么 ?编好的程序如何放在内存 ?而且还可以放在程序存储器 ? |
Y_G_G 发表于 2022-10-8 11:44 新手刚入驻求教, 我看楼主的意思是不从内存取从别的地方取吧,反通常操作再问行不行得通吧。本来要学单片编程的我学了C++,歪了一阵风中凌乱嘻嘻嘻.... 今天才知道单片的编程不能硬套电脑编程,有些是不通用的。但是分清楚了就较简单了信心满满再补一波单片编程 |
| 楼主没明白24楼的意思,应该是外挂一个RAM,用来存程序和执行程序,只是把一般外接的ROM改成了RAM |
dalaoshi 发表于 2022-10-10 16:22 外部程序要想执行,先要把程序加载到ram。但是51 系统指令只在rom中,ram中的只被当成数据。除非外部挂载普林斯顿体系存储器。楼上说有执行ram中指令的方法,我先看看官方手册 |
lyonkon 发表于 2022-10-10 11:35 这是能够实现的,你先写一个基本操作程序,里面包含很多基本要用到的功能,比如TIME,COM, PRINT, VOLT, SENT,LOAD,RUN,PLAY(用中文也可)等等,然后用一个主控程序等待输入,并显示在LCD上,等输入回车键后开始检查字串,如果是正确字串就开始执行相应的副程式,执行完毕后有回到等待输入程序,要载入的外部程序可以储存在SD卡,用LOAD命令加载在RAM, 让后跳到程序起始处执行,这样就把控制权交给加载的程序,程序执行完毕后把控制权再交回给主控程序,这样就做成了51的DOS,由于现代有了大容量非易失存储器SD卡的加持,也许会有新的用途。 |
| 这个方式现在好像没什么意义了,这个需求就类似早期一些设备商提供基本的功能,然后客户可以自己加载自己的功能,但现在基本都是一次性设计完全,这种功能没什么用了 |
lyonkon 发表于 2022-10-10 12:07 "开机之前RAM中没有程序,这个是不用担心的。可以像x86那样,开机将程序载人RAM,载完了之后,CPU跳转到RAM执行指令。这样,不论是加载的程序还是键盘输入的程序,都可以执行" 非常好,反正我学了几年的单片机,什么都看不明白,果然,我还是技术不到家 |
| 51单片机暂时做不到,因为是机制的原因,本身并不是ARM架构的关系,这跟底层架构是有关系的,建议学习下底层架构知识,就是那种纯汇编代码,了解PC指针,以及具体的寄存器,学习下就会明白 |
| 感觉楼主还是有误解了,看贴里对51试验箱的描述,应该是外挂了一个比较大的RAM,这个RAM可以作为RAM和ROM来使用 |
cnos 发表于 2022-10-10 09:00 apple 1 用的CPU与51CPU性能差不多,但是apple1不仅支持汇编,还支持b语言。我觉得51单片机是可以做到汇编语言输入,并且执行指令的,只是没有人做,我是想做一个玩玩 |