Autor Tema: manejo de tablas y el USART  (Leído 2012 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado edwpic

  • PIC10
  • *
  • Mensajes: 1
manejo de tablas y el USART
« en: 28 de Diciembre de 2006, 18:25:28 »
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

Desconectado Vayadespiste

  • PIC12
  • **
  • Mensajes: 53
Re: manejo de tablas y el USART
« Respuesta #1 en: 28 de Diciembre de 2006, 18:41:29 »
Hola Edwpic personalmente agradezco tu trabajo y aunque no lo  he probado lo he copiado y guradado que seguro que lo necesitaré pronto, lo dicho: Gracias y un saludo.

Rodri.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: manejo de tablas y el USART
« Respuesta #2 en: 29 de Diciembre de 2006, 12:19:27 »
Hola edwpic y bienvenido al foro, gracias por compartir tu código.

esas deben ser una de las bondades de la familia 18, el poder montar una tabla con muchos datos y no tener problemas con el contador de programa, yo estoy en pleno aprendizaje y voy a estudiar tu código cuando llegue a esa parte.

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything