加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

access violation in module 'PIC16.DLL'

(2010-03-10 10:09:52)
标签:

proteus

access

violation

in

module

pic16

单片机

仿真

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()
{
 TRISE0=0;
 RE0=1;
 while(1);
}

结果出现如下图错误:Internal Exception:access violation in module 'PIC16.DLL'

http://s11/bmiddle/574d085348168f464199a&690violation in module 'PIC16.DLL'" TITLE="access violation in module 'PIC16.DLL'" />

仿真电路图如下:

http://s5/bmiddle/574d0853481691dd102a4&690violation in module 'PIC16.DLL'" TITLE="access violation in module 'PIC16.DLL'" />

查看了一些网上关于产生Internal Exception:access violation in module 'PIC16.DLL'的说法:

1.说Proteus 7.5 sp3软件的问题,说编程不可能导致仿真出错

 

后来把以上程序的 RE0=1;改为PORTE=0x01;

修改后完整程序如下:
#include<pic.h>
__CONFIG(0x3b31);
void main()
{
 TRISE0=0;
 PORTE=0x01;
 while(1);
}

Proteus仿真正常。

综上所述:

产生Internal Exception:access violation in module 'PIC16.DLL'这样的错误,就我目前遇到的是因为程序编写导致的。不是Proteus 7.5软件的问题。以后也许遇到同样的问题也可能是版本导致的也说不定,所以先考虑是程序编写出的问题。

但是就

#include<pic.h>
__CONFIG(0x3b31);
void main()
{
 TRISE0=0;
 RE0=1;
 while(1);
}

这个程序是正确的,只是这个程序用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.仿真 和 硬件 之间存在 区别(这个是无法避免的)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有