提问人:Kiri 提问时间:10/25/2023 最后编辑:Kiri 更新时间:10/31/2023 访问量:95
对 8051 的闪存进行编程
Program the flash memory of an 8051
问:
我正在尝试使用 Arduino 对 12 伏并行编程进行AT89C51编程,我已按照数据表中的说明进行操作。 我尝试加载的程序只是在端口 1 上显示 10011011b 的值。
:0400000074ABF59058.
:00000001FF.
这会将以下内容加载到程序闪存中:
000 -- 74H
001 -- ABH
010 -- F5H
011 -- 90H
下图显示了我构建的电路。
我使用的算法如下:
- 设置配置位:
- P2.6 -- 低
- P2.7 -- 高
- P3.6 -- 高
- P3.7 -- 高
- ALE/PROG -- 高
- EA/VPP -- 高
- 等待 48t_CLCL 分钟
- EA/VPP --12V
- 延迟 10 微秒
- 设置地址的值
- 等待 20 微秒
- 放置数据值
- 等待 100 微秒
- ALE/PROG -- 低
- 60 微秒延迟
- ALE/PROG -- 高
- 20 微秒延迟
- 数据处于低
- 20 微秒延迟
- 低地址
- EA/VPP -- 高
在此过程之后,预计通过端口 P3.4 (RDY/BSY) 会出现负脉冲,但我没有得到脉冲。我没有示波器,也无法欣赏脉冲,所以我将P3.4连接到7490,芯片输出端的状态没有变化,这表明负脉冲不是由P3.4产生的。 此外,我没有执行验证,我只是希望获得 P1 的 10011011b 值,但我没有得到我所期望的。 我以最克制的方式请求您的帮助,试图帮助我找到我不合逻辑的缺陷。
答:
0赞
Peter Plesník
10/31/2023
#1
根据原理图,您连接的数据不正确,地址较低。P0 用于数据读/写,P1 用于地址输入。您的关系图显示数据已连接到 P1,地址已连接到 P0。此外,该图显示 P0 的上 4 位直接接地。这是非常不幸的,因为这意味着如果P0设置为输出,则输出驱动器短路。
我还建议购买一些便宜的逻辑分析仪(例如sigrok)。因为在发生故障时,我们需要记录整个事件,而不仅仅是其口头描述。
评论