Hola
Resulta que tengo un problema muy muy similar
Practicando con CCS+Proteus 7.5 SP3 en un 16F877 encontré el siguiente problema cada vez que utilizaba el Puerto E:
Internal Exception: access violation in module 'PIC16.DLL'Probé el programa en una simulación exclusiva y aparte con un único PIC 16F877 y el problema continuaba.
Para estar seguro que el CCS no tenía nada que ver, escribí un pequeño codigo en ensamblador manejando el Puerto E exclusivamente y lo simulé, con lo cual pude constatar que el problema se repetía solo cuando se lee/escribe el Puerto E bit a bit, osea en instrucciones como:
bsf
bcf
btfsc
btfsso cuando la operación involucra solo uno de los bits como:
movlw 0x01
xorwf puertae,1
Esto lo pude ver ejecutando paso a paso el programa des-ensamblado: cuando llegaba a dichas instrucciones, el error saltaba... (que si le ejecutas de modo continuo obviamente de frente te muestra el error)
Sin embargo no ocurre ningún error cuando de golpe se modifica todo el registro PORTE (0x09), así por ejemplo:
movlw b'10101010'
movwf puertae
...
Aqui les adjunto el código de mi programa prueba donde todas las instrucciones precedidas con ; (como si fueran comentarios) ocasionan el problema antes mencionado...
list p=16f877a
trise equ 0x89
puertae equ 0x09
trisd equ 0x88
puertad equ 0x08
status equ 0x03
org 00
inicio
bsf status,5
movlw 0x00
movwf trise
movlw 0x00
movwf trisd
bcf status,5
movlw b'10101010'
movwf puertae
; movlw 0x01
; xorwf puertae,1
; bcf puertae,0
; bsf puertae,1
; bcf puertae,2
bcf puertad,0
bsf puertad,1
bcf puertad,2
nop`
goto inicio
end
Agradeceré mucho cualquier ayuda...
BRAULIO
PD:
Pues pareceria error del la dll, a mi me suele salir pero en el modo debug paso a paso ... casi siempre por los tiempos de sincronizacion entre los componentes ...
MLO... parece que a ti te a pasado... ¿lograste solucionarlo finalmente?