admin_memo_24lc256

Bienvenidos estudiantes de domotica, periodo 1 de 2011, en la siguiente sección encuentran el codigo que permite su funcionamiento según el diagrama de conexiones que se anexa:
 * Domotica : 1 de abril de 2011**



CBLOCK .32 dato_memoria posicion_leer_placa temporal ENDC ORG 00H GOTO INICIO
 * INCLUDE **

**grabar_ultimas5_lineas** call I2C_EnviaByte ; mensaje y lo escribe en la 24LC256. call Retardo_5ms ; Tiempo de escritura entre byte y byte. call Retardo_1ms ; Tiempo de escritura entre byte y byte. incf posicion_pagina,F call I2C_EnviaStop ; Termina la escritura. call Retardo_5m **s** **return**

**almacenar_dato** call M24LC256_InicializaEscritura movf dato_memoria,W call grabar_ultimas5_lineas
 * return **

= **leer_caracter_memo** = call I2C_LeeByte ; Lee la memoria 24LC256. movwf M24LC256_ValorCaracter ; Guarda el valor de carácter. call M24LC256_FinalizaLectura movf M24LC256_ValorCaracter,W ; Recupera el valor leído. **return** ||
 * || call M24LC256_InicializaLectura

grabar_nombre clrf posicion_pagina clrf direccion_pagina movlw 00h ;se debe grabar en la posicion 210, carga W con el caracter O movwf posicion_pagina call M24LC256_InicializaEscritura movlw 'A' call grabar_ultimas5_lineas
 * 00 00 h

clrf direccion_pagina movlw 01h ;se debe grabar en la posicion 210, carga W con el caracter O movwf posicion_pagina call M24LC256_InicializaEscritura movlw 'u' call grabar_ultimas5_lineas

clrf direccion_pagina movlw 02h ;se debe grabar en la posicion 210, carga W con el caracter O movwf posicion_pagina call M24LC256_InicializaEscritura movlw 'n' call grabar_ultimas5_lineas

clrf direccion_pagina movlw 03h ;se debe grabar en la posicion 210, carga W con el caracter O movwf posicion_pagina call M24LC256_InicializaEscritura movlw 'a' call grabar_ultimas5_lineas

clrf direccion_pagina movlw 04h ;se debe grabar en la posicion 210, carga W con el caracter O movwf posicion_pagina call M24LC256_InicializaEscritura movlw 'r' call grabar_ultimas5_lineas

clrf direccion_pagina movlw 05h ;se debe grabar en la posicion 210, carga W con el caracter O movwf posicion_pagina call M24LC256_InicializaEscritura movlw '1' call grabar_ultimas5_lineas

return

mostrar_caracter_placa movlw 00h ;se debe grabar, carga W con el caracter O movwf direccion_pagina ; Apunta al inicio de la página correspondiente. call M24LC256_InicializaLectura call I2C_LeeByte ; Lee la memoria 24LC256. movwf M24LC256_ValorCaracter ; Guarda el valor de carácter. call M24LC256_FinalizaLectura movf M24LC256_ValorCaracter,W ; Recupera el valor leído. call RS232_EnviaDato return

=** leer_nombre **= movwf posicion_pagina call leer_caracter_memo call RS232_EnviaDato
 * || movlw d'0'

movlw d'1' movwf posicion_pagina call leer_caracter_memo call RS232_EnviaDato

movlw d'2' movwf posicion_pagina call leer_caracter_memo call RS232_EnviaDato

movlw d'3' movwf posicion_pagina call leer_caracter_memo call RS232_EnviaDato

movlw d'4' movwf posicion_pagina call leer_caracter_memo call RS232_EnviaDato

movlw d'5' movwf posicion_pagina call leer_caracter_memo call RS232_EnviaDato

** return **
||

INICIO BSF STATUS,RP0 BCF STATUS,RP1 movlw D'6' movwf ADCON1 MOVLW B'00010000' MOVWF TRISB CLRF TRISA movlw b'00011011' movwf TRISC CLRF TRISD BCF STATUS,RP0 CALL RS232_Inicializa call mensaje call grabar_nombre call leer_nombre sleep
 * se inicia a grabar un caracter para verificar la
 * correcta configuracion

mensaje MOVLW 'A' call RS232_EnviaDato MOVLW 'U' call RS232_EnviaDato MOVLW 'N' call RS232_EnviaDato MOVLW 'A' call RS232_EnviaDato MOVLW 'R' call RS232_EnviaDato MOVLW D'13' call RS232_EnviaDato MOVLW D'13' call RS232_EnviaDato return

INCLUDE  ;80 Y 81 INCLUDE  INCLUDE  INCLUDE  ;125 A 127 end

= **El contenido de la libreria de la memoria 24lc256 que se modifico es el siguiente:** =

CBLOCK d'71' direccion_pagina ; Guarda el valor de la dirección de memoria a posicion_pagina ; escribir o leer. M24LC256_Dato ENDC M24LC256_DireccionEscritura EQU b'10100000'; Dirección de la memoria 24LC256 para M24LC256_DireccionLectura EQU b'10100001'; escritura y lectura respectivamente.

M24LC256_InicializaEscritura call I2C_EnviaStart ; Envía condición de Start. movlw M24LC256_DireccionEscritura; Envía dirección de escritura del call I2C_EnviaByte ; esclavo. movf direccion_pagina,W ; A partir de la dirección apuntada por los call I2C_EnviaByte ; registros direccion_paginah y movf posicion_pagina,W ; posicion_pagina. call I2C_EnviaByte return

M24LC256_InicializaLectura bcf I2C_UltimoByteLeer ; Todavía no ha comenzado a leer ningún dato. call I2C_EnviaStart ; Envía condición de Start. movlw M24LC256_DireccionEscritura; Envía dirección de escritura del call I2C_EnviaByte ; esclavo. movf direccion_pagina,W ; A partir de la dirección apuntada por los call I2C_EnviaByte ; registros direccion_paginah y movf posicion_pagina,W ; posicion_pagina. call I2C_EnviaByte call I2C_EnviaStop call I2C_EnviaStart ; Envía condición de Start. movlw M24LC256_DireccionLectura ; Indica a la memoria 24LC256 que va a call I2C_EnviaByte ; proceder a la lectura. return

CBLOCK d'74' M24LC256_ValorCaracter ; Valor ASCII del carácter leído. ENDC

M24LC256_Mensaje_a_LCD movwf direccion_pagina ; Apunta al inicio de la página correspondiente. clrf posicion_pagina call M24LC256_InicializaLectura M24LC256_LeeOtroByte call I2C_LeeByte ; Lee la memoria 24LC256. movwf M24LC256_ValorCaracter ; Guarda el valor de carácter. movf M24LC256_ValorCaracter,F ; Lo único que hace es posicionar flag Z. En caso btfsc STATUS,Z ; que sea "0x00", que es código indicador final goto M24LC256_FinMensaje ; del mensaje, sale de la subrutina. movf M24LC256_ValorCaracter,W ; Recupera el valor leído.


 * MODIFICAR PARA QUE SE EJECUTE
 * call LCD_Caracter ; Lo visualiza en la pantalla del computador.

incf posicion_pagina,F ; Apunta a la siguiente posición. goto M24LC256_LeeOtroByte M24LC256_FinMensaje


 * call M24LC_256_FinalizaLectura
 * return

M24LC256_FinalizaLectura bsf I2C_UltimoByteLeer ; Con estas dos instrucciones se pone en call I2C_LeeByte ; alta impedancia la línea SDA. No importa el call I2C_EnviaStop ; resultado de la lectura realizada. return

||
 * = El archivo asm que se reviza se encuentra en el siguiente enlace: =

= =