矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 海阔天空9

如何叫2051单片机最小系统认识手动编程的程序?

[复制链接]
     
发表于 2024-1-24 21:55:26 | 显示全部楼层
海阔天空9 发表于 2024-1-24 21:52
是用手动写入芯片的吗?芯片再插到最小系统就这个结果?这个是最明确的结果!

我用了 2051 编程器写入的。 然而这个编程器也是我自制的,算半个手动吧。

然后插入了面包板(最小系统),通电就是 87 楼的效果。
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 05:10:57 | 显示全部楼层
本帖最后由 t3486784401 于 2024-1-25 05:12 编辑

复习写了段 2051 的程序,带128级灰度+抗锯齿+像素插值的流水灯,2051 运行在 6MHz 晶振下,效果如图:

effx.gif

代码长度 2048 字节,直接占满了单片机全部空间;这种代码如果手敲,就是这样的 01:

2.png

实际上我用汇编写的,主程序大约 150 字节,剩下 1.75KB 全是波表。 波表使用正态分布函数插值生成:

eq.gif

也就是最亮的灯和旁边的亮度之间,按照 exp(-d^2) 规律衰减。附上固件供参考: 烧录固件 预览.zip (3.3 KB, 下载次数: 107)

之所以大家不推荐纯手动编程,就是这个原因。程序稍微大一点,根本就没可能手动成功写入。
别说这里的 2KB 了,就连主程序那 150 字节都不一定手敲的对。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-25 08:10:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 08:47:09 | 显示全部楼层
本帖最后由 abbey_tom 于 2024-1-25 08:51 编辑

“为什么那12个字节(在手动“编程”电路板写入的)到最小系统的效果只说P1-0口的状态?
其他P1-1到P1-7没有输出吗?”
这个就是那12个字节的所谓程序决定,
程序让单片机做什么,它就做什么。

没有让其他P1-1到P1-7输出,
它就自己输出,
不就乱套了么。

你看这位网友,不仅实现了流水灯,
注意看他的LED不是亮和不亮这么简单,
每颗LED都带有灰度控制,
这些都是由程序决定的。
而这些不用增加任何硬件,
还是那块板子,
写入不同的软件(程序代码),
就会有不同的执行结果。
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 08:58:30 来自手机 | 显示全部楼层
海阔天空9 发表于 2024-1-24 18:28
要玩单片机,语言是绕不开的弯儿。-------------------------所以要学外语,按照他的路径走,,,,,, ...

你做这个手动编程器也是一种规则,不按这个规则也是写不进的。机器语言也是一种规则,就是你输入的0110,只是你输入的是一堆乱码,单片机执行也只能乱来。mov a,b这个是汇编把那些无意义的数字0110变成看起来有意义的文字而已。C语言就更抽象一点把a,b这些对人无意义的语句变成a=b。人就容易理解了。你觉得1001比a=b好用是因为,你输入的是你想要这个灯亮它就这个灯亮,这很好玩,但我觉得不够我要的是它不断的闪,要得是它有人接近它就得亮,人走它就灭,要的是我按一下开关它就动一下然后停一下然后再一直动。它能这么做只能按规则来这个规则就是机器语言,2051有他的一套语言pic也有,6502也有stm也有,都是各自不通用的一堆数字,C语言a=b却能通行它们之间。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-25 09:10:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-25 09:16:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-25 09:31:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 10:11:18 | 显示全部楼层
本帖最后由 美人鱼999 于 2024-1-25 10:31 编辑

我一直不解的是:为什么那12个字节(在手动“编程”电路板写入的)到最小系统的效果只说P1-0口的状态?其他P1-1到P1-7没有输出吗?莫名其妙!?


就好比一个班级,你是第2组的组员(P1.0),第2组有8个人(P1)。现在老师命令你一个人(p1.0)做俯卧撑,那其他人在干嘛呢?因为上课时,老师喊了立正,然后老师命令你开始做。其他人,老师没有新命令。所以。其他人还是在立正。
你做俯卧撑就好比P1.0-----12脚在闪灯。其他人在立正---------P1.1--P1.7都是在复位后原始状态(高电平)。12个字节就是老师的命令-----命令你一个人做俯卧撑。

还有其他组呢?其他组,没有老师的新命令也还是在立正。上课立正是统一的---------------上电复位。

有特殊任务的除外。
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 10:17:06 | 显示全部楼层
海阔天空9 发表于 2024-1-25 09:16
没有让其他P1-1到P1-7输出------------没有叫他输出它就不存在了吗?P1-1到P1-7电平不是高就是低,还有别 ...

好吧,我又一次地输了。

“P1-1到P1-7电平不是高就是低,还有别的状态吗”
当然有,高阻状态听说过吗?
程序没有对P1-1到P1-7电平进行操作,
他就不会有变化,
始终维持开机时的状态。
学习过程,
要从简单到复杂,
你不懂的东西多了去了,
非要扯那些细小末节。

另外,活生生的例子摆在眼前,
刚才那个网友演示了
每个灯可以在亮和不亮之间有变化,
我问你,这是非高即低能够办到的吗?

那12个字节是另外的网友提供的,
只是作为程序代码的一个简单例子,
可以有千变万化的程序代码。

回复 支持 反对

使用道具 举报

发表于 2024-1-25 10:18:32 | 显示全部楼层
“你这句话比较理解了。“不按规则也是输出不了的”,是这个意思吧?”-----是这个意思,之前就说过多次了,你想要天猫精灵替你开灯,就不能喊“播放音乐”、“打开窗帘”之类的,你是故意理解不了的吗?

“没有叫他输出它就不存在了吗?”------之前坛友多次说过,8个位有256种组合,全部都有指令对应,但是51单片机指令并不是只针对2051,还有其它的系列,它们的引脚众多,功能繁多,针对P1口进行操作的指令是很少的,你烧写的12字节,里面就一个字节是让P1口进行输出的,其余的不是延时就是别的控制,对P1口完全没有影响,这个已经被精简的12个字节程序中,你随意改动一个字节,就不会让P1口的灯闪烁达不成自己想要的效果(有可能是让2051没有的P2口的某个位亮灯)。

“您为什么就不愿意说别的字节在最小系统P1口的反映?好像只有您那12个字节才可以的?”------单片机的程序是要求严谨的,你要天猫精灵替你开灯,却对天猫精灵说“开箱”,它会干什么?别一直想着绕过规则,至于为什么,上面已经说过了。

“手动编程的程序和2051最小系统的程序,不是在一种“语言”之内”------单片机设计就是为了控制用,而不是当着存储器用(掉电不丢失数据的存储器多的是);     并不存在你说的“2051最小系统的程序”这么一个说法,手动编程的程序,烧写进单片机的就是单片机能够识别的机器码,而现在基本上都是用C语言进行编写单片机的程序,也有人用早期的汇编语言,这两种语言都是为了方便阅读理解(机器码无法阅读理解,就好像说话声音的波形,你能够看波形知道说话的内容吗?),要烧写进单片机之前还得用电脑转换成二进制的机器码(汇编语言程序小的话可以人工翻译并且手动烧写进去),和你手动烧写的一个样,只是你非要将校验状态当着是单片机的运行状态,才会生出手动烧写的程序无法在最小系统上运行的错觉。

最后再说一句,想让单片机按自己的意愿运行,用单片机语言编写程序是必不可少绕不过去的,别想着着改变规则,因为单片机是别人设计的而不是你自己。如果你真的不愿意学习,就不要在这里废话连篇的盖楼了。
回复 支持 1 反对 0

使用道具 举报

     
发表于 2024-1-25 11:43:47 | 显示全部楼层
本帖最后由 pdshyh 于 2024-1-25 11:49 编辑
t3486784401 发表于 2024-1-25 05:10
复习写了段 2051 的程序,带128级灰度+抗锯齿+像素插值的流水灯,2051 运行在 6MHz 晶振下,效果如图:

...


辛苦了,佩服,对于有现成工具不用,倒退用手编写程序,费力不讨好,理解概念原理可以试试仅此而已意义不大。
centos7.png
原来用omv5.0一知半解,跟着B站视频学习linux收获不少,也只是皮毛。
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 11:58:42 | 显示全部楼层
培训贴..........
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 12:07:30 来自手机 | 显示全部楼层
海阔天空9 发表于 2024-1-25 09:10
你做这个手动编程器也是一种规则,不按这个规则也是写不进的。--------------你这句话比较理解了。“不按 ...

你理解的基本对,可是啊输出实在太容易你接个led上去只要1它就亮了。这个接led也算一种规则。但是总有例外,当你接了它不亮是不是很奇怪,按12字节写入了也不是你要看到的8个灯像流水样的亮灭,却只是1个灯的闪,它被机器语言这个规则控制着。现在这两套规则你融合不了理解不了。
回复 支持 反对

使用道具 举报

     
发表于 2024-1-25 12:09:42 来自手机 | 显示全部楼层
海阔天空9 发表于 2024-1-25 09:16
没有让其他P1-1到P1-7输出------------没有叫他输出它就不存在了吗?P1-1到P1-7电平不是高就是低,还有别 ...

除了高低电平它还真有其他状态,叫三态门,高低电平外还有个第三个状态高阻。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-27 08:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表