对 8051 的闪存进行编程

Program the flash memory of an 8051

提问人:Kiri 提问时间:10/25/2023 最后编辑:Kiri 更新时间:10/31/2023 访问量:95

问:

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

:0400000074ABF59058.
:00000001FF.

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

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

下图显示了我构建的电路。

电路图

我使用的算法如下:

  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 值,但我没有得到我所期望的。 我以最克制的方式请求您的帮助,试图帮助我找到我不合逻辑的缺陷。

闪存 微控制器 8051 8 位

评论

0赞 the busybee 10/25/2023
你有运行时钟吗?-- 如果数据表显示“H”,为什么P3.7处于低电平?
0赞 Kiri 10/26/2023
感谢您的澄清。我使用的是 12MHz 晶振,P3.7 设置为高电平。
0赞 the busybee 10/26/2023
好吧,请编辑您的问题并更正 P3.7 的水平并添加时钟事实。评论不用于其他信息。;-) -- 正如数据表所说,您需要有这些引体向上进行验证。但是,如果您在编程过程中拥有它们,它们不会造成伤害,因为您的“低”驱动程序足够强大。-- 使用示波器检查 P3.4 处的 BUSY 信号。
0赞 the busybee 10/26/2023
请添加到您的问题中:您使用的原理图;BUSY 检查的结果;您尝试的地址和数据值;所有 P0 引脚的电压,以及期望值 (H/L)。
0赞 Peter Plesník 10/26/2023
您是如何手动将数据设置为 P0 的?您是如何断开数据与 P0 的连接的?提供实际接线图,而不是数据表中的原理图。

答:

0赞 Peter Plesník 10/31/2023 #1

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

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