Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: kain589 en 25 de Diciembre de 2005, 03:58:00
Título: Uso de la memoria interna del pic
Publicado por: kain589 en 25 de Diciembre de 2005, 03:58:00
Pues eso, he hecho varios programas con el pic y me estan saliendo: basicos,temporizaciones, interrupciones...Ahora se me ha ocurrido algun problema para empezar basico de usar la memoria del pic, pero he mirado en los manuales que tengo y no he encontrado nada, he usado la busqueda del foro y de lo que he leido no he encontrado nada en asm, la cuestion es como direccionar y escribir en la memoria y posteriormente leer lo escrito, datos de 8 bits y si sabeis como hacerlo con datos 16 bit, creo que seria dividirlo en dos de 8 y escribirlo en dos posiciones correlativas
Título: RE: Uso de la memoria interna del pic
Publicado por: RaDoN en 25 de Diciembre de 2005, 05:18:00
Perdona... en que lenguaje?
Título: RE: Uso de la memoria interna del pic
Publicado por: kain589 en 25 de Diciembre de 2005, 05:22:00
assembler,creia que .asm implicaba el uso de ese lenguaje, es que todavia no domino demasiados los conceptos de programacion
Título: RE: Uso de la memoria interna del pic
Publicado por: RaDoN en 25 de Diciembre de 2005, 05:27:00
No tienes razón, no lei esa parte, ando algo despistado, despues de la borrachera de noche buena jejeje. Yo soi de C, siento no poder ayudarte, pero seguro que en el subforo "Alamacen de Asambler" puedes encontrar algo, o alguien que si pueda ayudarte.
Saludos y suerte!
Título: RE: Uso de la memoria interna del pic
Publicado por: kain589 en 25 de Diciembre de 2005, 06:04:00
Gracias de todas formas
Bueno buscando por ahi he encontrado la manera de grabar y leer en la eepron desde el programa
LIST P=16F84A
#INCLUDE <P16F84A.INC>
CONTADOR EQU 0CH
ORG 00H GOTO INICIO ORG 04H BCF INTCON,2;BORRA BANDERA DECFSZ CONTADOR GOTO CONTINUA;Va a retornar de la int, GOTO VERSAL CONTINUA RETFIE ;Retorna de la subrutina VERSAL MOVLW 64H MOVWF CONTADOR BTFSS PORTB,0;En el ejemplo nos aseguramos de que el bit 0 ;tendra valor logico "1" GOTO ACTSALIDA CLRF PORTB;DESACTIVA RETFIE ACTSALIDA ;---- Lectura dato ----- ;Lee el dato de la memoria y lo saca por el puerto B BCF STATUS,5 ;Seleccion banco 0 MOVLW 20H ;Se carga la direccion en w MOVWF EEADR ;Se pasa a EEADR,define la direccion a leer BSF STATUS,5 ;Seleccion banco 1 BSF EECON1,RD ;Se realiza lectura colocando RD a 1 BCF STATUS,5 ;Regresamos al banco 0 MOVF EEDATA,W ;Se rescata el dato de EEDATA a w ;Ya tenemos el dato en w MOVWF PORTB ;Lo sacamos en la salida RETFIE
INICIO BSF STATUS,5;Banco 1 CLRF TRISB;B SALIDA MOVLW 07H MOVWF OPTION_REG;DIVISOR 256 BCF STATUS,5;BAnco 0 MOVLW 0A0H MOVWF INTCON;HABILITA GIE Y TOIE ;---- Escribimos un dato en memoria ---- ;BCF STATUS,5;Banco -- En este caso ya estamos en el banco 0 MOVLW 20H ;Movemos la direccion en la que se guarda el dato MOVWF EEADR ;Se guarda direccion en EEADR MOVLW 0AFH ;Dato que deseamos guardar MOVWF EEDATA ;Se guarda dato en EEDATA BSF STATUS,5 ;Banco 1 BSF EECON1,WREN ;Activamos permiso de escritura en WREN ;del registro EECON ;Inicio secuencia de escritura MOVLW 55H ;Inicio instruciones en EECON2 MOVWF EECON2 MOVLW 0AAH MOVWF EECON2 ;Fin de las instrucciones para EECON2
BSF EECON1,WR ;Comienza la escritura propiamente dicha ;Termina la escritura ;Es un procedimiento estandar solo variaran dato y direccion TIEMPO MOVLW 0D8H MOVWF TMR0;CARGA TIMER NADA BTFSC TMR0,7 GOTO NADA GOTO TIEMPO
END
El programa deberia sacar la informacion guardada en la memoria durante 1 segundo y apagarse otro segundo, pero en relidad no lo hace. Para saber si esta activada, analizo el bit 0 del puerto b,ya que se que el dato introducido tendra su bit0 con valor 1. El valor si me lo saca, pero no se limpia el puerto B. Despues he leido la eepron y ahi esta el dato,asi que el proposito de grabar y leer lo hace,pero no el timer que esta copiado de hacer un led intermitente.¿Alguien sabe por que me falla? Y si hay alguna manera de grabar la eepron en la programacion y no mediante programa
Título: RE: Uso de la memoria interna del pic
Publicado por: maunix en 26 de Diciembre de 2005, 09:57:00
Escrito originalmente por kain589Gracias de todas formas Y si hay alguna manera de grabar la eepron en la programacion y no mediante programa
Asi:
Codigo: org 0x2100 de 0x01,0x02,0x03,0x04
Esto guardará los datos en la eeprom cuando programes el PIC, en orden consecutivo a partir de la primera posicion de EEPROM.
Saludos
Título: RE: Uso de la memoria interna del pic
Publicado por: kain589 en 26 de Diciembre de 2005, 18:53:00
Pues ya lo he probado sastifactoriamente , gracias por la informacion