Autor Tema: EEPROM usando el pic16F886  (Leído 2692 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Steffi

  • PIC10
  • *
  • Mensajes: 6
EEPROM usando el pic16F886
« en: 21 de Octubre de 2008, 07:57:26 »

hola amigos!
aqui estoy un poco liada un dia más intentado aprender más acerca de programar en ensamblador con este pic....

el caso es que ya me funciona mi semaforo, con el que con un polimetro puedo variar la velocidad,.... me gusta como paso a paso he ido adelantando. Primero un led, parpadeo, semaforo, luego ADC para el semaforo...

se me ha ocurrido utilizar la EEPROM del pic para CONTAR LAS VECES QUE EL SEMAFORO A HECHO UN CICLO COMPLETO. Es decir, contar por ejemplo cuantas veces ha pasado el Led Rojo de 1 a 0.

he leido algo en el datasheet, pero no lo comprendo del todo. he leido pasos para escribir en una dirección del eeprom, pero no sé exactamente en cual debería hacerlo. además tampoco sé en que parte del programa llamar a escribir y si el semaforo va muy rápido puedo escribir tantas veces en la eeprom.

alguna ayudita?

como siempre, muy agradecida de antemano, y un saludo a todos!

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: EEPROM usando el pic16F886
« Respuesta #1 en: 21 de Octubre de 2008, 13:51:58 »
bueno la primera tarea es saber que necesita la eeprom para ser utilizada, tu tarea sera ubicar los siguientes registros:

- el nombre del registro que contiene la direccion de la eeprom del pic
- el nombre del registro que contiene el dato que vas a guardar en una direccion de la eeprom del pic
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Steffi

  • PIC10
  • *
  • Mensajes: 6
Re: EEPROM usando el pic16F886
« Respuesta #2 en: 30 de Octubre de 2008, 06:28:00 »

problema resuelto.....
ha sido un poco lío con tanto cambio de bancos...... ahí he tenido todos los problemas.

pero ya me funciona a la perfeccion. claro que podria optimizar el codigo, pero bueno, lo que quería (que funcionara) ya está. gracias!

aqui mi codigo:

;********************************
;*  Escribir Dato en la EEPROM  *
;********************************

escribir_eeprom

bcf     STATUS,RP0      ;Seleccionamos Banco 2
bsf     STATUS,RP1

movlw   adresseeprom   ;Ponemos en W la dirección que vamos a escribir
movwf   EEADR         ;y la guardamos en EEADR

bcf      STATUS,RP1      ;Seleccionamos Banco 0
movf    contador,w      ;Ponemos ahora el dato a escribir en W

bsf      STATUS,RP1      ;Seleccionamos Banco 2

movwf   EEDATA         ;y lo guardamos en EEDATA
   
bsf      STATUS,RP0      ;Seleccionamos Banco 3
 
bcf      EECON1,EEPGD
bsf      EECON1,WREN      ;Colocamos el permiso de escritura (WREN) en EECON1 a 1
                          ;Aquí da inicio la secuencia de escritura

movlw   0x55         ;Inicio de las intrucciones para EECON2
movwf   EECON2
movlw   0xAA       
movwf   EECON2         ;Fin de las intrucciones para EECON2

bsf      EECON1,WR      ;Comienza la escritura propiamente dicha.
btfsc   EECON1,WR      ;esperar a que termine (10 ms)
goto   $-1

bcf     STATUS,RP0      ;cambiar a Banco 0
bcf      STATUS,RP1   

return