fshwen 发表于 2024-1-13 13:12:20

本帖最后由 fshwen 于 2024-1-13 13:20 编辑

海阔天空9 发表于 2024-1-13 10:23
但这里的程序需要真正的单片机程序,不是您写6116的那种程序。------------您能不能详细解释这句话,我向 ...

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

海阔天空9 发表于 2024-1-13 13:20:35

fshwen 发表于 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组寄存器中。

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

海阔天空9 发表于 2024-1-13 14:08:48

fshwen 发表于 2024-1-13 14:22:24

本帖最后由 fshwen 于 2024-1-13 14:37 编辑

海阔天空9 发表于 2024-1-13 14:08
您别费心了,我像听天书一样!就最后一句话有体会:具体就是各有关脚的电平设置,差一点也不行!归根结底 ...

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

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

海阔天空9 发表于 2024-1-13 14:34:33

fshwen 发表于 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位二进制来选择。
其实您现在就站在门外,离入门就差一步,编程器也已经弄好,系统板也有现成的,就差写个真正的单片机程序放到系统板上运行了,没有一次比这更接近入门的了,试试又何妨呢?
运行之后再自己改改程序,看会有什么效果,都是这样折腾过来的,只是您是直接手动二进制罢了。
就几个字节的二进制的事,手输也就几分钟的事,您一直抗拒,我不知道是为什么,怕什么呢?

海阔天空9 发表于 2024-1-13 17:43:32

海阔天空9 发表于 2024-1-13 17:56:41

fshwen 发表于 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写入就完成了一次完整的编程,然后就验证一遍

海阔天空9 发表于 2024-1-13 18:21:43

海阔天空9 发表于 2024-1-13 18:33:24

fshwen 发表于 2024-1-13 18:35:54

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

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

海阔天空9 发表于 2024-1-13 18:40:11

fshwen 发表于 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上的数据写入的是程序,但在单片机看就是一堆垃圾数据,因为您从来就没给单片机装在最小系统板上自动运行过
您怀疑我讲的话,但是前面很多朋友都是要您这样实践的
页: 1 2 3 [4] 5 6 7 8 9
查看完整版本: 这个20脚芯片是不是89C2051?