Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: antareZ en 15 Octubre 2016, 04:40 am



Título: retardo en interrupcion por escritura en EEPROM
Publicado por: antareZ en 15 Octubre 2016, 04:40 am
hola ! tengo una duda y espero que me puedan ayudar ! hice un codigo en asm que pone en estado de bajo consumo a un pic en este caso (16f887) cuando esta en este estado debe entrar la interrupción escribiendo un dato en la memoria EEPROM sacando del estado de bajo consumo al pic

el codigo funciona lo tengo simulado en proteus el problema es al llevarlo ala practica en fisico a los  4Mhz del pic  ,en el codigo puse dos leds en el portB uno que me indica que el pic esta en sleep y otro que me indica cuando se realizo la escritura, debido ala velocidad de con se que guarda el dato el led que esta en RB0 que me indica la escritura no se llega a  apreciar cuando prende y es ahí donde necesito meter un retardo use libreria y probe en todos lados un retardo de 500ms y de 1 seg pero no funciona ayudenme porfavor
recien comienzo en el lenguaje ensamblador y hay muchas cosas que no entiendo  :-[
si es algo muy facil o tonto no se burlen soy novato  :xD
Código:
list p=16f887
    
    #include<p16f887.inc>
    __CONFIG _CONFIG1, _FOSC_INTRC_NOCLKOUT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_ON & _CPD_OFF & _BOREN_OFF & _IESO_OFF & _FCMEN_OFF & _LVP_OFF
    
  

 direc EQU 0x01
 dato EQU 0x0C
       
ORG 0X00

goto inicio

ORG 0X04

goto rut_eeprom

ORG 0X05


inicio
bsf STATUS,RP1
bsf STATUS,RP0

bcf INTCON,GIE
bsf INTCON,EEIE
bsf EECON1,WREN
movlw direc
bcf STATUS, RP0  
movwf EEADR
movlw h'88'
movwf EEDATA


bcf STATUS,RP1  
bcf STATUS,RP0
bsf STATUS,RP0
clrf TRISB
movlw h'55'
bsf STATUS,RP1


movwf EECON2
MOVLW h'AA'
movwf EECON2
bsf EECON1,WR
bsf INTCON,GIE

bcf STATUS,RP1
bcf STATUS,RP0
clrf PORTB

bsf PORTB,0
bsf PORTB,1
sleep
fin goto fin

rut_eeprom  ;interrupcion

bsf STATUS,RP1
bcf STATUS, RP0
movf EEDATA,W
bsf STATUS,RP0
bcf EECON1,EEIF
bsf EECON1,RD
bcf STATUS, RP0  
subwf EEDATA,W
btfss STATUS,Z
goto erro
bcf STATUS,RP1
bcf STATUS,RP0

bsf PORTB,1

erro
Retfie
#include <RETARDOS.INC>
END