access violation in module 'PIC16.DLL'

标签:
proteusaccessviolationinmodulepic16单片机仿真pic |
分类: 电路 |
本文原创转载请注明出处
文本连接:http://blog.sina.com.cn/s/blog_574d08530100ih40.html
仿真软件:Proteus 7.5 sp3
编程软件:MPLAB IDE V8.46+PICC(HI-TECH Software\PICC\9.70)
仿真对象:PIC16F877A,LED-RED,
编程目的:用PIC单片机的port E0口控制LED灯
程序如下:
#include<pic.h>
__CONFIG(0x3b31);
void main()
{
}
结果出现如下图错误:Internal Exception:access violation in module 'PIC16.DLL'
http://s11/bmiddle/574d085348168f464199a&690violation
仿真电路图如下:
http://s5/bmiddle/574d0853481691dd102a4&690violation
查看了一些网上关于产生Internal Exception:access violation in module 'PIC16.DLL'的说法:
1.说Proteus 7.5 sp3软件的问题,说编程不可能导致仿真出错
后来把以上程序的
修改后完整程序如下:
#include<pic.h>
__CONFIG(0x3b31);
void main()
{
}
Proteus仿真正常。
综上所述:
产生Internal Exception:access violation in module 'PIC16.DLL'这样的错误,就我目前遇到的是因为程序编写导致的。不是Proteus 7.5软件的问题。以后也许遇到同样的问题也可能是版本导致的也说不定,所以先考虑是程序编写出的问题。
但是就
#include<pic.h>
__CONFIG(0x3b31);
void main()
{
}
这个程序是正确的,只是这个程序用Proteus仿真不了,这个程序用硬件下载到PIC16F877A是能正常工作的。奇怪的是仿真时用RD,RB进行位操作都没有问题,唯独RE进行位操作出了问题。(D和B都是8位的IO端口,E是3位的IO端口)IO端口B,D,E用总线操作PORTB,PORTD,PORTE进行操作都正常。所以仿真软件跟硬件还是有一定区别的。
这里仿真出错的原因可能是以下:
1.MPLAB+PICC编程软件 有问题(毕竟是免费软件)
2.Proteus 7.5仿真软件有问题 (毕竟是网上找的 非正式版)
3.仿真 和 硬件 之间存在 区别(这个是无法避免的)