saludos a todos los integrantes del foro
felicitaciones por este excelente foro
soy nuevo en el foro, apenas comienzo en el mundo de los PIC, y gracias al foro he ido aprendiendo bastante y me ha servido mucho, soy de los que solo leia lso temas que me interesaban, ahora he decidido participar activamente colocando el trabajo que estaba realizando con tablas y que mucha de la informacion la obtuve del foro
pues aqui va y espero que a alguien le sirva
el siguiente programa usa el modulo USART para enviar datos al PC que los captura por el hiperterminal, los datos son tomados de una tabla, la cual esta construida a partir de la directiva DT.
Lo interesante es la cantidad de datos que tiene la tabla.
;Programa ensayado en un PIC 18F4455 SIN NINGUN PROBLEMA
;escrito por: edwtron
;creado el : 27/12/06
;se permite el uso, la copia, la modificacion, y la distribucion de este software
;con la condicion que se mantenga esta nota, y los anteriores permisos, y no se da
;ningunara garantia, ni me responsabiliso por los daños que se puedan causar con el
;uso del mismo.
;NOTA :
;este programa toma datos desde una tabla y los envia por el puerto serial al computador
;el trabajo con las tablas es usando la directiva DT, la cual nos permita trabajar
;con mensajes de uan manera mas comoda
;en ete programa no se tiene la limitacion de los 255
;configuracion USART
;baudios 9600
;paridad none
;bits de stop 1
;control de flujo none
list p=18f4455 ; tipo de micro
include <P18F4455.INC>
;************************************************************
; variables
CBLOCK 00020h
offset_h, offset_l, temp_var
ENDC
;************************************************************
org 00000h ; Vector de reset
goto start
;************************************************************
;inicializaciones
config_puertos
clrf LATB ; limpia PORTB
clrf TRISB ; Configura PORTB como salidas
bcf TRISC,6 ; RC6 como salida
return
config_usart
movlw 19h ; 9600 baud @ 4MHz
movwf SPBRG
bsf TXSTA,TXEN ; Habilita la tx
bsf TXSTA,BRGH ; Alta velocidad de tx
bsf RCSTA,SPEN ; Activa el puerto serial
return
;************************************************************
; Subrrutinas
tx_dato
movwf TXREG
tx_end
btfss PIR1,TXIF ;termino de tx ?
goto tx_end
clrf TXREG
return
org 0000F0
tabla
movff offset_h,PCLATH
movf offset_l,W
movwf PCL
numeros equ $
dt "0123456789", 0x00 ;se usa este valor al final para determinar
;cuando termina la tabla
letras equ $
dt "Programa que muestra el uso de tablas con la directiva DT y el usart para transmitir "
dt "permite el manejo de tablas sin importar la posicion en la memoria o el numero de bytes "
dt "almacenados, es decir la limitacion que se tiene cuando las direcciones sobrepasan los 255, "
dt "no olvidar que debemos tener en cuenta la posicion de memoria donde escribimos la "
dt "tabla, para que no se sobreescriba con el programa, otro aspecto a tener en cuenta "
dt "es que en la memoria los datos se almacenan en palabras, osea que el contador de "
dt " programa se incrementa de dos en dos. "
dt "permitido el uso, la copia, y la modificacion de este programa "
dt "elaboro con fines educativos, creado por edwtron ", 0x00
;************************************************************
org 000800h ; inicio el programa en la dir especificada
start
call config_puertos
call config_usart
main
movlw HIGH(letras) ;cargo la direccion donde esta la tabla letras
movwf offset_h
movlw LOW(letras)
movwf offset_l
next
call tabla
movwf temp_var
call tx_dato ;envio el dato por el puerto serial
addwf temp_var,W
btfsc STATUS,Z ;chequo si termino de leer la tabla
goto main
incf offset_l ;incremento el desplazamiento por la tabla
btfsc STATUS,C ;que debe ser de dos en dos
incf offset_h ;teneindo en cuenta si hay acarreo en la
incf offset_l ;parte alta del desplazamiento
btfsc STATUS,C
incf offset_h
goto next
goto main
end