对 8051 的闪存进行编程

问题描述 投票:0回答:1

我正在尝试使用 Arduino 通过 12 伏并行编程对 AT89C51 进行编程,我已按照数据表中的说明进行操作。 我尝试加载的程序只是在端口 1 上显示 10011011b 的值。

:0400000074ABF59058.
:00000001FF.

这会将以下内容加载到程序闪存中:

000 -- 74H
001 -- ABH
010 -- F5H
011 -- 90H

下图是我搭建的电路。

Circuit Diagram

我使用的算法如下:

  1. 设置配置位:
    • P2.6 -- 低
    • P2.7 -- 高
    • P3.6 -- 高
    • P3.7 -- 高
  2. ALE/PROG——高
  3. EA/Vpp -- 高
  4. 等待 48t_CLCL 分钟
  5. EA/Vpp--12V
  6. 延迟10微秒
  7. 设置地址的值
  8. 等待20微秒
  9. 放置数据值
  10. 等待100微秒
  11. ALE/PROG -- 低
  12. 60微秒延迟
  13. ALE/PROG——高
  14. 20微秒延迟
  15. 数据低
  16. 20微秒延迟
  17. 低地址
  18. EA/Vpp -- 高

在此过程之后,预计会通过端口 P3.4 (RDY/BSY) 产生负脉冲,但我没有收到脉冲。我没有示波器,无法欣赏脉冲,所以我将P3.4连接到7490,芯片输出的状态没有变化,这表明负脉冲不是由P3产生的.4. 另外,我没有执行验证,我只是希望获得P1的10011011b的值,但我没有得到我所期望的。 我以最克制的方式请求您的帮助,试图帮助我找到我不合逻辑的缺陷。-

flash microcontroller 8051 8-bit
1个回答
0
投票

根据示意图,您的数据连接不正确且地址较低。 P0用于数据读/写,P1用于地址输入。您的图表显示数据连接到 P1,地址连接到 P0。此外,该图显示 P0 的高 4 位直接接地。这是非常不幸的,因为这意味着如果 P0 设置为输出,则输出驱动器会短路。

我还建议购买一些便宜的逻辑分析仪(例如sigrok)。因为如果发生故障,我们需要整个事件的记录,而不是口头描述。

© www.soinside.com 2019 - 2024. All rights reserved.