海阔天空9
发表于 2024-1-15 07:48:14
海阔天空9
发表于 2024-1-15 07:51:39
fshwen
发表于 2024-1-15 12:20:55
本帖最后由 fshwen 于 2024-1-15 13:26 编辑
海阔天空9 发表于 2024-1-15 07:48
按您图片上的设置,您应该是把开关拨到下方为1,拨到上方为0;---------我也注意到这个问题。8个拨码开关 ...
我做的那些二进制转换,完全是为了您操作方便;最左边的二进制是16进制直接转换来的,中间的二进制倒序是左边二进制的高低位顺序颠倒得来的,这样做的目的是因为您的手动编程器的P1-0在最左边P1-7在最右边;右边的二进制取反是中间的二进制数据取反得来,就是0的位置反过来为1,1反过来为0,这样做是因为您的拨码开关连接方式,我定义为拨到上方为1,下方为0,所以做了数据取反;但您目前按您自己的定义和实际情况,您定义为把开关拨到下方为1,上方为0,这刚好对应二进制倒序,所以只需按 二进制倒序 的数据写入即可。
至于为什么要按我给的数据写入,这就像一个幼儿园小朋友做1+1=2的数学题一样,在单片机的世界里,您现在就是幼儿园的小朋友,只需照着做就行,不需要问为什么,给您解释为什么您也是听不懂的,就像幼儿园的小朋友问1+1为什么等于2一样,无法解释明白。
所以您必须按照图上的数据写入才能在系统板上运行,而且是每个数据都正确且与地址对应;中间有一个数据有问题或者是有一个1变成0了还是0变成1都不行,数据对应的地址有错也不行;
所以您要想看到单片机自动运行的结果,您必须严格按照图中的数据写入,并验证没有错误。
如果您按照您自己的理解写入了您自己的数据,且装到系统板上运行,单片机不会给您结果,且有极大可能会把单片机永久性的搞废。
如果您按您自己的理解写入2051的数据单片机能自动运行且能达到您的预期,也没必要非要求您按我给的数据写入了。
补充,在早期的计算机编程中,是把二进制的程序在纸带上用打孔的方式操作的,然后把按程序打孔的纸带放到纸带阅读器里输入计算机。
bg8ux
发表于 2024-1-15 12:40:42
海阔天空9 发表于 2024-1-15 07:51
这12个字节才是2051单片机能读懂并执行的“程序”明白了吗??----不明白呀?难道只有这12个字节才能在 ...
所以才让您去读读计算机原理书,这12个字节是一小段2051的单片机程序,您现在的程度也不必理解程序怎么来的,就一字不差的写入2051后去看效果就行。
您后面花里胡哨的那些内容单片机看不懂,也不会执行,您所看见的LED变化只不过是把单片机当做存储器来用了。
真正的单片机程序是上电之后自动运行的,
您一直无法理解的问题“单片机按什么节奏输出”,这里我试着解释一下;
2051单片机最小系统一般采用12M的晶振,但是2051的运行速度没这么快,它内部有一个1/12的分频器,也就是说它内部的时钟频率是1M
大约就是每秒可以执行1百万条单周期指令,按这个速度输出点亮LED还是太快,人眼无法分辨的。
怎么解决呢?入门的程序一般是用延时程序,点亮P1.0,然后延时0.5秒,关闭P1.0,点亮P1.1,延时0.5秒,关闭P1.1,点亮P1.2……反复执行
就产生了流水灯的效果
amwbsrhk
发表于 2024-1-15 13:37:55
本帖最后由 amwbsrhk 于 2024-1-15 13:50 编辑
海阔天空9 发表于 2024-1-14 07:32
写入这12个字节不困难呀?这和我写入的其他流水灯数据有什么不一样吗?我还是不解我在手动烧写电路板(没 ...
知道写入这12字节已经不难了,这个数据和自定义的流水灯数据的区别在于进位脉冲和复位脉冲,其他的流水灯数据在现在的读出电路板上面出效果,需要在外接复位引脚不断的给复位脉冲才可以跳过后面没用到的地址,而单片机使用这12字节数据可以在有晶振电路上自行跳过没使用的两千多个地址,并且自行输出已设定好的效果
很抱歉前面随口一说利用旁门左道指引使用复位脚来实现这个功能,还是需要回到正常的单片机应用上面来
海阔天空9
发表于 2024-1-15 13:40:06
海阔天空9
发表于 2024-1-15 14:06:13
海阔天空9
发表于 2024-1-15 14:11:09
fshwen
发表于 2024-1-15 14:16:08
本帖最后由 fshwen 于 2024-1-15 15:50 编辑
海阔天空9 发表于 2024-1-15 13:40
您定义为把开关拨到下方为1,上方为0,这刚好对应二进制倒序,所以只需按 二进制倒序 的数据写入即可。 ...
您就按图中的 二进制倒序 的数据写入就行,8位数据中为1就拨到下位,0就拨到上位,写入就行;
二进制倒序的这一栏的数据与您的写入器拨码开关的顺序是一致的,从左到右一一对应;
您记不住最好先抄到纸上
更正应该是1拨到上位,0拨到下
海阔天空9
发表于 2024-1-15 14:23:43
fshwen
发表于 2024-1-15 14:24:52
海阔天空9 发表于 2024-1-15 14:11
如果您按您自己的理解写入2051的数据单片机能自动运行且能达到您的预期,也没必要非要求您按我给的数据 ...
您完全没有理解我的话,我的意思是说,您按您自己写入的数据是不能运行的,如果能运行我就没必要翻译出那些二进制了
海阔天空9
发表于 2024-1-15 14:53:38
fshwen
发表于 2024-1-15 15:47:03
海阔天空9 发表于 2024-1-15 14:53
哦,还是理解错了!那您解释一下您这12个地址的12个字节和P1口输出的数据有什么特殊的地方?不都是哪个个 ...
您说您把开关拨到上位端口是高电平,那就按照上为1下为0来写入就行了,按照实际的电路来,只要加在P1口的8位数据与图中的数据对应就行,这没什么复杂的;
其他的不好解释,其实这之前已经解释过很多次了,只是您看不懂
海阔天空9
发表于 2024-1-15 17:32:02
bg8ux
发表于 2024-1-15 22:29:45
海阔天空9 发表于 2024-1-15 17:32
您说您把开关拨到上位端口是高电平,---------------------我又确认了一次。写入时开关拨到上位就是P1 ...
你就按照这12个字节写一遍嘛,干嘛一根筋呢??都说多少次了,这12个字节才是单片机能执行的程序。