请弄过汇编的提个意见,关于读5000行汇编东东...

2020-01-20 19:09发布

这个程序以前是8031+外部存储器的机器,老机器,外国人的,我们学习中。
里边有8155,8255等等,程序有5000行汇编,汇编是反汇编来的,15k程序,RAM基本都用完,没有解释,
请问读懂这个程序是否困难,去交给电子市场的话我要求能提供详细解释(详细到我能修改里边的参数),大概的报价是多少?
如果我们自己读这个程序(我们没有很丰富的汇编经验,有丰富的C,外设控制,多种MCU经验),是否可行,大概多久能看出门道?
请大家评估下给个参考意见。谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
83条回答
kl818bc000
1楼-- · 2020-01-26 08:26
##########################################

   硬件作法请看下面59楼介绍

##########################################

速度快的可以模拟速度慢的,容量大的可以模拟容量小的,如果速度真有问题,把转成的AVR汇编后面加几个NOP就成了

工控产品一般都是事件(如中断,外设,输入)驱动的,也都会留一定的余量,除非是用来模拟类似USB这类严格的时序,一般都可以


这个方法和硬件仿真器一样可以马上在原来板子上电验证,软件仿真就作不到

但也可以马上重新画板,把已经读懂的硬件用AVR内的存储外设取代(如ROM,RAM,ADC,8255..),作成产品上市销售,这就是硬件仿真器作不到的

除非楼主的老板只要楼主读懂程序,不想生产出产品来盈利,不过那是不可能的


当然,用C8051这类增强型51也行,只是开发环境和仿真工具不像AVR/STM32选择那么多又便宜

老板最在乎的芯片成本也无法和AVR/STM32同级的相比


还有,千万不要认为在中国的每个工程师都有一万的月薪
zhxzhx
2楼-- · 2020-01-26 10:55
【49楼】 kl818bc000 我不是马甲

你还是纸上谈兵,根本没有实际经验.

你不知道8051要干什么,你模拟个屁,你说的是在知道8051个工作流程的情况下的工作,现在是要知道8051在干什么
还以延时为例,你不知道51延时了多长时间,你怎么确定AVR的延时时间?

你的方法,勉强可以模拟一下逻辑,但是时序你没有办法确定.
kl818bc000
3楼-- · 2020-01-26 13:14
 精彩回答 2  元偷偷看……
canback
4楼-- · 2020-01-26 14:45
程序写的挺清楚的,应该可以能看得懂
zhxzhx
5楼-- · 2020-01-26 19:30
【51楼】 kl818bc000 我不是马

   这个不是仿一个单片机的问题,你外设怎么仿?
   PROTEUS做的不错了吧?计算机的CPU比AVR强大的多了吧?他仿真的还不能达到真正的实时运行的性能,
   单片机不光有指令,它还有一套特定的寄存器结构,一套特定的寻址方式,一套特定的外设操作方法,
不是你认为的替换一下指令就行的,比如说51的ALE信号,51每执行一次取指令操作,ALE就会产生一个脉冲,这个脉冲可以做总线的锁存信号,在LZ的电路上,它就应该接在74LS373的11脚上,也可以做为一些AD的时钟信号,它是和51的总线操作相关联的,并不是一个单纯的频率信号,你不能用一个频率信号来代替,同时他还是一个高速信号,12M的51,这个信号的频率是1M,此外,还有PSEN信号,指示单片机在读出ROM还是RAM的,还有RD,RW,这些信号8155,8255都要用到,这些,你这怎么模仿?

  另外,能完成LZ功能要求的仿真器并不贵,Monitor-51就行,软件就是Keil C51,成品几十块,自制的话,也就一片Mega8的价
kl818bc000
6楼-- · 2020-01-26 21:32
如果你连ALE,PSEN输出管脚的信号和频率都在斤斤计较,MONITOR-51这种用串口传输的半软件仿真方式,你也说可以用?

你以为MONITOR-51接到KEIL的HALT命令时,ALE和PSEN就不再输出了吗?


楼主的电路上有没有把ALE接到AD的时钟信号,这看一下电路就可以知道了,我在5楼也说过了,"如果对速度和容量没有要求"的前提下

我说的速度也包括外设(如ADC)的速度和时序,也没有说百分之百可以用AVR模拟,就像

003B: 90 80 02  MOV   DPTR,#8002H
003E:       E0  MOVX  A,@DPTR
003F: 30 E7 69  JNB   ACC.7,00ABH

这里8002H就是外设的地址,先不管是8255,8155,ADC芯片,M128一样有ALE和RD/WR,照接就对了,译码器自然会使能对应的片选

   LDI  XH,80H
   LDI  XL,02H

   LD   R16,X

   SBRS R16,7
   RJMP LOC00AB

以上为随手写写的(毕竟只是演示),如果对时序有要求,请自行在需要的地方加上NOP

至于PSEN,由于MEGA128内部的FLASH够大,可以把15K程序全放入片内,除非原设计者除了EEPROM外,PSEN另有接到别的地方,

否则就不用输出,这等看到原理图就知道了


“还有PSEN信号,指示单片机在读出ROM还是RAM的”这句就可以看出你对51还不是很熟

RAM和外设的读出和PSEN完全无关,它们是由RD/RW来使能的,当然也包括AD15-AD0

PSEN输出时,RD和WR是不会输出的

一周热门 更多>