矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 海阔天空9

这个20脚芯片是不是89C2051?

[复制链接]
     
发表于 2024-1-13 13:12:20 | 显示全部楼层
本帖最后由 fshwen 于 2024-1-13 13:20 编辑
海阔天空9 发表于 2024-1-13 10:23
但这里的程序需要真正的单片机程序,不是您写6116的那种程序。------------您能不能详细解释这句话,我向 ...


这样看的懂吗?
其实只要下载一份指令与机器码说明对照表,对着查就能看懂这些二进制的作用;也可以对着表直接用二进制来编程
无标题8.jpg
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 13:20:35 | 显示全部楼层
fshwen 发表于 2024-1-13 13:12
这样看的懂吗?
其实只要下载一份指令与机器码说明对照表,对着查就能看懂这些二进制的作用;

不懂。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

     
发表于 2024-1-13 13:54:44 | 显示全部楼层
本帖最后由 fshwen 于 2024-1-13 14:11 编辑
海阔天空9 发表于 2024-1-13 13:20
不懂。。。。。。。。。。。。。。


您有没注意图片中间的二进制部分?大部分都是写了1和0的,代表这部分是固定的,固定的这部分就代表单片机相应的控制操作,就是指令的主体,后面变化的才需要编程序的人来定义;
也就是固定的部分在编程时照抄就行,后面的参数才需要人来定义;
比如第一个字节的8位是0111 1101对着表查就是0111 1RRR,这条指令是两个字节的(两个8位的指令,由指令和数据组成的一条完整的指令),这8位的前5位照抄就行,而后面的3位,需要人给它定义,在指令表上这3位RRR是代表选择哪个寄存器,从0~7共8组寄存器二进制就是0~111,在程序中设置了101也就是第5组寄存器,01111101,11111111这条指令的功能就是把后面的8位数据11111111放到单片机内的第5个寄存器中;你可以这样认为,除单字节指令只有8位指令外,多字节的指令在8位指令本身后面必须有指令操作的数据,只要有一点对不上,单片机就不能正常工作

如果您想在程序上做修改,也必须遵守这些指令的格式定义,比如我想把01111101,11111111这条指令做些修改,可以改成01111100,10101010;这时,指令的操作就是把10101010送到单片机内的第4组寄存器中。

您可能会疑惑我是怎么知道的,我当然也是查指令表才知道的,东西做出来不就是为了方便人们使用的吗,所以都会有相应的说明,只要您有心,就能做到。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 14:08:48 | 显示全部楼层
fshwen 发表于 2024-1-13 13:54
您有没注意图片中间的二进制部分?大部分都是写了1和0的,代表这部分是固定的,固定的这部分就代表单片机 ...

您别费心了,我像听天书一样!就最后一句话有体会:具体就是各有关脚的电平设置,差一点也不行!归根结底就是电路图怎么接,有关脚设置0接1,接下来就是操作顺序。
另外一个问题就是单片机的晶振频率一般是几个M,我这电路没有晶振但须外接地址脉冲并且从晶振的输出脚接入,本身晶振和外接地址脉冲有无相似之处?只是频率低了作用是差不多的?频率相差如此悬殊是不是就涉及到单片机的运算功能了?
回复 支持 反对

使用道具 举报

     
发表于 2024-1-13 14:22:24 | 显示全部楼层
本帖最后由 fshwen 于 2024-1-13 14:37 编辑
海阔天空9 发表于 2024-1-13 14:08
您别费心了,我像听天书一样!就最后一句话有体会:具体就是各有关脚的电平设置,差一点也不行!归根结底 ...


您有用过38译码器吗?只需要三个输入端就可以控制选择8个输出,比如74HC138

外接时钟在单片机的应用中也是不少的,但都是在晶体达不到精度要求或者是多单片机有时钟同步之类的要求上才用外接时钟;
单片机的晶体电路不光是为了提供地址用的,主要是给内部的逻辑电路提供统一的逻辑时序,使芯片内部的各种操作不产生混乱,而且单片机内的存储器地址不是一直变化的,有时候需要暂停等待,有时候需要直接变为另外的地址,这个过程并不是一直保持累计增加,有可能有时会直接跳转到开始地址,这些在单片机上都是很灵活的
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 14:34:33 | 显示全部楼层
本帖最后由 海阔天空9 于 2024-1-13 14:36 编辑
fshwen 发表于 2024-1-13 14:22
您有用过38译码器吗?只需要三个输入端就可以控制选择8个输出,比如74HC138


LS138译码器好像用用过“3-8线译码器”3个二进位数输出8个状态,还有4-16译码器,,,,,记得弄过60进制,60秒进位一分
回复 支持 反对

使用道具 举报

     
发表于 2024-1-13 15:01:47 | 显示全部楼层
海阔天空9 发表于 2024-1-13 14:34
LS138译码器好像用用过“3-8线译码器”3个二进位数输出8个状态,还有4-16译码器,,,,,记得弄过60进 ...

寄存器可以理解为只能存一个8位数据的存储芯片,8个寄存器就是8个芯片,用38译码器来选择8个芯片中的一个并保存数据,直接用程序中的3位二进制来选择。
其实您现在就站在门外,离入门就差一步,编程器也已经弄好,系统板也有现成的,就差写个真正的单片机程序放到系统板上运行了,没有一次比这更接近入门的了,试试又何妨呢?
运行之后再自己改改程序,看会有什么效果,都是这样折腾过来的,只是您是直接手动二进制罢了。
就几个字节的二进制的事,手输也就几分钟的事,您一直抗拒,我不知道是为什么,怕什么呢?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 17:43:32 | 显示全部楼层
fshwen 发表于 2024-1-13 15:01
寄存器可以理解为只能存一个8位数据的存储芯片,8个寄存器就是8个芯片,用38译码器来选择8个芯片中的一个 ...

编程器也已经弄好,系统板也有现成的,就差写个真正的单片机程序放到系统板上运行了,没有一次比这更接近入门的了,试试又何妨呢?-----------------------您说的我还是不明白!我那叫编程器吗?按您说的要不要电脑?我那电路没有晶振呀?
您就说具体我怎么做好不好?达到什么目的?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 17:56:41 | 显示全部楼层
amwbsrhk 发表于 2024-1-11 22:22
写入1000 0001、0100 0010两组数据对单片机来说不是代表第1、8个和2、7亮,只是一些错误的数据,上面老 ...

让单片机P1.0口LED灯闪亮的12组数据,按顺序写入------------------------我要知道怎么写入还用诸位费这么话吗?我现在就只有个手动编程电路板!只能用拨码开关给P1口加0或1电平,按键变动地址一次加一,用按键给6脚加高脉冲,----你们说的我确实听不懂?
回复 支持 反对

使用道具 举报

     
发表于 2024-1-13 18:00:58 | 显示全部楼层
本帖最后由 fshwen 于 2024-1-13 18:18 编辑
海阔天空9 发表于 2024-1-13 17:43
编程器也已经弄好,系统板也有现成的,就差写个真正的单片机程序放到系统板上运行了,没有一次比这更接近 ...


就是用手动编程器,按照我前面发的图片上的二进制逐个写进2051并验证一遍写入有没出错,没有错误就取下2051装到系统板上看运行结果。
都说了编程器了,您还纠结有没晶振,又不是电脑写入要什么晶振,您只要按前面图中我给您的二进制,一组一组的写入单片机就行

补充,图片中的二进制最左边是最高位,对应P1-7口,最右边是最低位对应P1-0口;拨码开关对应0就是低电平,1高电平;
比如第一个数据01111101,就是P1-7的开关拨到0,P1-6拨1,......P1-0拨1,再写入,就和您平常写6116一样,只是数据需要按照图片上的设置,在第一个8位写好后增加地址,再写入第二个8位数据11111111,直至最后的00000000写入就完成了一次完整的编程,然后就验证一遍
212933qjttyfhsjjjhthcc.jpg
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 18:21:43 | 显示全部楼层
本帖最后由 海阔天空9 于 2024-1-13 18:23 编辑
fshwen 发表于 2024-1-13 18:00
就是用手动编程器,按照我前面发的图片上的二进制逐个写进2051并验证一遍写入有没出错,没有错误就取下20 ...


按照我前面发的图片上的二进制逐个写进2051并验证一遍写入有没出错,没有错误就取下2051装到系统板上看运行结果。---------这个我已经完成了呀?各种流水灯不成问题了呀!在手动编程电路板上校验没问题的程序,放到“系统板”上也运行正常呀!
图片这就是我认为的“系统板”呀?就是简化了的只能读出结果的电路板(去掉了读-写-擦4位拨码开关7,8脚对地短路,9,11接悬空,6脚悬空)5脚地址加由外加脉冲提供,一脚加一个511电阻接+5V,给一个复位0电平负脉冲,以减少2000个地址的空运行,实现数据连续循环输出。从时序图可以看出8个LED哪个亮,什么时候亮?亮多长时间?
当然,复杂的程序写不了,是不是和没有晶振电路有关?频率差100万倍的呀!
只读电路板.jpg
时序图.jpg
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 18:33:24 | 显示全部楼层
本帖最后由 海阔天空9 于 2024-1-13 18:35 编辑
fshwen 发表于 2024-1-13 18:00
就是用手动编程器,按照我前面发的图片上的二进制逐个写进2051并验证一遍写入有没出错,没有错误就取下 ...


对呀,我就是这么做的呀!拨码开关1-8不就是和P1到0,P1-7对应吗?(断开OFF等于P1口高电位H,接通ON等于P1口低电位L)写入过程几乎和6116一模一样!我理解就是向2051存储器里存数据,至于运算,不懂。
回复 支持 反对

使用道具 举报

     
发表于 2024-1-13 18:35:54 | 显示全部楼层
海阔天空9 发表于 2024-1-13 18:21
按照我前面发的图片上的二进制逐个写进2051并验证一遍写入有没出错,没有错误就取下2051装到系统板上看 ...

您这不是单片机在运行,单片机的自动运行,只要晶振电路和复位电路,外加P1-0口的LED,写好程序的单片机,装在系统板上只要上电就会自动运行,不需要您的额外干涉,您只需要照着做一次,您就知道了。您只需按部就班的弄个最小系统板,并在P1-0口接个LED,把写好程序的2051装在系统板上,确认连接正确后上电,您就知道什么是自动运行
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-1-13 18:40:11 | 显示全部楼层
fshwen 发表于 2024-1-13 18:35
您这不是单片机在运行,单片机的自动运行,只要晶振电路和复位电路,外加P1-0口的LED,写好程序的单片机 ...

恐怕不是你说的这样?晶振电路频率好几兆,我这个地址脉冲频率0.几赫兹。我在手动版上写入的数据能在有晶振的电路板(系统板)上运行?怪了?理解不了!值得一试,,,,,,,,,,,,
回复 支持 反对

使用道具 举报

     
发表于 2024-1-13 18:42:50 | 显示全部楼层
本帖最后由 fshwen 于 2024-1-13 19:28 编辑
海阔天空9 发表于 2024-1-13 18:33
对呀,我就是这么做的呀!拨码开关1-8不就是和P1到0,P1-7对应吗?(断开OFF等于P1口高电位H,接通ON等 ...


最关键的就是那些写入的二进制的数据,您按自己写入的程序单片机自动运行时是不能准确识别的,只能依照单片机程序规则写的二进制单片机才能识别运行,只有单片机自动运行的二进制数据才能称之为单片机程序;您总是以为您按您自己在6116上的数据写入的是程序,但在单片机看就是一堆垃圾数据,因为您从来就没给单片机装在最小系统板上自动运行过
您怀疑我讲的话,但是前面很多朋友都是要您这样实践的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2024-5-3 07:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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