原创 Proteus仿真Flash数据的写入

2007-11-21 21:24 3554 4 4 分类: PCB

摘自“中原孔海洋”


项目的构思如下,向单片机的Flash中写入数据,80、81单元写入数据0000,82、83单元写入数据0001,按照地址递增的顺序显示递增的数字即任意两个Flash单元都根据其地址来写入相应的数据,一直到Flash地址的最高位1FFFH单元。需注意每两个单元写入一个数据的原因主要是PIC16F877单片机的程序存储器的数据单位长度是14位,需要占用两个字节。
项目源程序十分简单,但需要注意Flash写入数据的操作步骤。源程序如下:


点击看大图

点击看大图
编辑好源程序以后,编译生成相应的源代码,然后在Proteus中绘制本例的电路图。本例电路图和第九个项目相同,都是只需将一片PIC16F877放入电路图中就可以了。电路图如下:

74d95b3d2e44f7e83d6d9799.jpg
绘制好电路图以后,我们就可以将前面生成的源代码装入单片机来进行仿真了。此例其他方面也都比较简单,最关键的仍然在于仿真时的操作。可以看到,当你点击仿真按钮的时候,系统没有任何反映,我们也看不到仿真效果。这时你就可以首先点击暂停按钮,然后像上一个项目那样首先点击主菜单中的Debug菜单,并点击选择其下的下的“PIC CPU Program Memory - U1”,如下图:

666f5b0fd38f1f2c6059f3c4.jpg
此时系统将弹出相应的“PIC CPU Program Memory - U1”窗口,在这个窗口中,你就可以看到Flash中的内容,看看仿真是否成功,其中的数据是否已经按照我们的要求变成了相应的内容。如下图所示:

点击看大图
但我们明显能够看出,结果没有按照我们习惯的方式显示,所以下面我们来修改一下。首先在上面的仿真结果窗口中点击右键,然后选择并点击“Data Type”中的“Word(LSB First)”子菜单,如下图所示:

e20c0d08fd43d736e92488c2.jpg
然后,我们就能看到结果窗口中的显示形式发生了变化,已经变成了我们习惯的形式,如下图所示:

点击看大图

但从图中我们还能够看到一个现象,即结果和我们期望的略有区别。事实上这并不是程序和仿真的问题,而是因为程序还没有执行到结束。因为Flash的读写需要较长的时间,而我们又写入了大量的数据。如果你想看到执行完毕的结果,请继续点击运行按钮,经我自己在自己的电脑上实验,等待大约50s的时间,程序就能执行到结束,我们就能看到最终的结果,如下所示:

点击看大图

本例到此结束,依然比较简单。但和第九个项目一样,需要注意一些问题:
1.Flash数据写入的步骤。
2.Proteus中仿真单片机内部的RAM、EEPROM、FLASH等的操作。

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条