Autor Tema: incluir subprogramas mplab  (Leído 13870 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
incluir subprogramas mplab
« en: 12 de Marzo de 2006, 08:42:00 »
hola.queria hacer un proyecto en asm,para el pic16f84.
este proyecto consta del
            programa     principal.ASM
            sub programa LCD_CXX.ASM
                    TECLADO.ASM
que hay que incluir en el programa principal a parte de las lineas:
#include"LCD_CXX.ASM" Y #include"TECLADO.ASM"

para que en la memoria de programa,al compilar salga todo en orden,porque cuando lo compilo;
en la memoria de programa me sale:primero las lineas de LCD_CXX,luego las de TECLADO;
y luego otra vez las de LCD_CXX.




   
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
RE: incluir subprogramas mplab
« Respuesta #1 en: 12 de Marzo de 2006, 11:17:00 »
bueno,al final solucione el problema,todo estaba en que tenia que cambiar la extension de lcd_cxx.asm por lcd_cxx.inc  y lo mismo con el teclado.asm

e incluirlas en el proyecto junto ha p16f84.inc

no entiendo por que el libro que me compre de microcontroladores pic "diseño practico de aplicaciones"2º edicion.
no traia estas correcciones si puestas en el proyecto no funcionan.
ahora las he puesto de esta manera y no da ningun error,claro siempre modificando en el programa principal: include "lcd_cxx.asm" por include "lcd_cxx.inc" y  include "teclado.asm" por include "teclado.inc".Rebotado
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: incluir subprogramas mplab
« Respuesta #2 en: 14 de Marzo de 2006, 08:09:00 »
Escrito originalmente por groundman
bueno,al final solucione el problema,todo estaba en que tenia que cambiar la extension de lcd_cxx.asm por lcd_cxx.inc  y lo mismo con el teclado.asm

e incluirlas en el proyecto junto ha p16f84.inc

no entiendo por que el libro que me compre de microcontroladores pic "diseño practico de aplicaciones"2º edicion.
no traia estas correcciones si puestas en el proyecto no funcionan.
ahora las he puesto de esta manera y no da ningun error,claro siempre modificando en el programa principal: include "lcd_cxx.asm" por include "lcd_cxx.inc" y  include "teclado.asm" por include "teclado.inc".Rebotado


La verdad me parece extraño, hacer un include de un .inc o un .asm o un .yoquese
es lo mismo.

Es como hacer un "merge" o un copiar y pegar.  No debiera haber diferencia alguna.

Si subes los fuentes a algun servidor con el caso en que te salia "todo desordenado" tal vez te pueda dar una mano a clarificar el problema pero me parece por demás raro ya que al parecer trabajas con código fijo o fixed coding (no usas el linker ni nada parecido).

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: incluir subprogramas mplab
« Respuesta #3 en: 14 de Marzo de 2006, 22:15:00 »
Pues en realidad la diferencia reside en la intepretacion de la extension(tipo de archivo) por parte del compilador, y no en el contenido del archivo mismo.
Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: incluir subprogramas mplab
« Respuesta #4 en: 16 de Marzo de 2006, 05:07:00 »
Escrito originalmente por BrunoF
Pues en realidad la diferencia reside en la intepretacion de la extension(tipo de archivo) por parte del compilador, y no en el contenido del archivo mismo.
Saludos


En realidad , como bien me dijo RedPic en su momento, es un ensamblador, no un compilador.  

Mas allá de los detalles me parece extraño el error o al menos nunca me pasó algo igual a pesar de haber hecho eso muchas veces y es por eso que le pedí si podia postearlo como ejemplo para ver si realmente es eso o es que hay otra cosa en el código que haga que se ensamble de esa forma.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado javisus

  • PIC10
  • *
  • Mensajes: 18
RE: incluir subprogramas mplab
« Respuesta #5 en: 23 de Marzo de 2006, 12:28:00 »
La verdad es que en ese libro no se equivocan,
Un proyecto en con MPLAB IDE, puede tener perfectamente tres programas
con la extensión .asm, uno de ellos es es principal los otros debes tratarlos como código relocalizable. También es posible ponerlos como Object code (.o)
el linker los enlazará y equilicuá se hizo el programa.
En fin si tienes más dudas , postéalas,se explícito y adelante....

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: incluir subprogramas mplab
« Respuesta #6 en: 24 de Marzo de 2006, 08:37:00 »
Escrito originalmente por javisus
La verdad es que en ese libro no se equivocan,
Un proyecto en con MPLAB IDE, puede tener perfectamente tres programas
con la extensión .asm, uno de ellos es es principal los otros debes tratarlos como código relocalizable. También es posible ponerlos como Object code (.o)
el linker los enlazará y equilicuá se hizo el programa.
En fin si tienes más dudas , postéalas,se explícito y adelante....



Claro javisus pero para eso el código se debe modificar para que sea relocatable o reubicable.  De hecho yo programo así pero la mayoría no lo hace así, porque les es más fácil (coincido que al principio es algo engorroso el codigo reubicable) programar de esa forma.

Entonces la forma de enlazarlos es mediante el linker script e ir agregando .asm al proyecto.

De todas formas, creo que escapa a lo que nuestro amigo pretende hacer.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
RE: incluir subprogramas mplab
« Respuesta #7 en: 04 de Abril de 2006, 08:21:00 »
como me digisteis que posteara el problema ahi os mando el programaprincipal
tipico3 del libro que os comentaba.

y luego las dos librerias que tube que modificar de .asm a .inc


otra cosa que queria preguntar es que cuando compilo el programa yo queria
que primero metiera en la memoria de programa de la siguiente forma

tipico3.asm
lcd_cxx.inc o .asm "si es que funconara y
teclado.inc

ya que de la forma que lo he compilado se me queda el tipico3 al final.



;PROYECTO TÖPICO 3
;"ESCRITURA DE MENSAJES DE TECLADO SOBRE LCD"
;Se desea realizar un programa que visualice sobre el LCD las teclas
;que se vayan pulsando. Cada pulsaci¢n ir  acompa¤ada de un "beep" de
;0,25 segundos sobre el zumbador piezoel‚ctrico conectado a RA3
 
;DIRECTIVAS DEL PROGRAMA
 
 
      LIST    P=16F84 ; Se emplea el PIC 16F84
      RADIX    HEX    ; Sistema de numeraci¢n hexadecimal
       __CONFIG    _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;ETIQUETAS DEL PROGRAMA
 
      INCLUDE  "P16F84.INC"
TEMP_1     EQU 0x0C
DELAY_1  EQU 0x0D
DELAY_2  EQU 0x0E
DELAY_3  EQU 0x0F
LCD_VAR  EQU 0x10
KEY_VAR  EQU 0x12
   
    
;POSICIONAMIENTO DE LA RUTINA DE INICIO
    ORG    0    ; El programa comienza en la direcci¢n 0 y
   goto    INICIO   ; salta a la direcci¢n 5 para sobrepasar el
   ORG    5    ; vector de interrupci¢n
 
   
 
;RUTINA HEX_ASCII: Rutina que pasa el valor HEXADECIMAL que contiene
;W a valor ASCII, para ser mostrado por el LCD
 
 
HEX_ASCII   addwf PCL,1
      retlw "0"
      retlw "1"
      retlw "2"
      retlw "3"
      retlw "4"
      retlw "5"
      retlw "6"
      retlw "7"
      retlw "8"
      retlw "9"
      retlw "A"
      retlw "B"
      retlw "C"
      retlw "D"
      retlw "E"
      retlw "F"
   
;PROGRAMA PRINCIPAL

 

INICIO    call    UP_LCD
   call    LCD_INI
   call    DISPLAY_ON_CUR_OFF
   bsf    STATUS,RP0       ; Selecci¢n del banco 1
   clrf    PORTA         ; Puerta A como salida
   movlw    b"10000111"
   movwf    OPTION_REG
   bcf    STATUS,RP0
   bsf    PORTA,3       ; Desactivaci¢n del zumbador
NO_HAY    call    KEY_SCAN       ; Se hace un chequeo del teclado
   movlw    0x80
   subwf    TECLA,W       ; Sobre TECLA quedar  la tecla pulsada o 0x80
   btfsc    STATUS,Z
   goto    NO_HAY          ; No se ha pulsado ninguna tecla
   call    KEY_OFF       ; S¡ se ha pulsado. Se espera a que se suelte
   bcf    PORTA,3       ; Se genera un "beep"
   movlw    d"25"
   movwf    TEMP_1
   call    DELAY10       ; Se crea una temporizaci¢n de 25 ms
   bsf    PORTA,3       ; Se desactiva zumbador
   call    KEY_HEX       ; Se pasa a valor hexadecimal
   call    HEX_ASCII       ; Se pasa el valor hexadecimal a c¢digo ASCII
   movwf    TECLA          ; Se guarda temporalmente en TECLA
   call    UP_LCD
   call    BORRA_Y_HOME
   call    DISPLAY_ON_CUR_OFF
   movlw    0x81          ; Primer car cter de primera l¡nea
   call    LCD_REG
   movf    TECLA,W
   call    LCD_DATO       ; Se saca por el LCD
   goto    NO_HAY          ; Se vuelve a empezar
      
 
;RUTINA DE DELAY DE 10 MS: Esta rutina utiliza el TMR0.
;Es una temporizaci¢n de 10 ms que se repite tantas veces
;como indique la variable TEMPO1
 
 
DELAY10    bcf    INTCON,2    ; Borra flag del TMR0
      movlw    0xD8
      movwf    TMR0       ; Carga el TMR0 con valor 39
DELAY10_1    btfss    INTCON,2    ; Espera rebosamiento del TMR0
      goto    DELAY10_1
      decfsz    TEMP_1,F
      goto    DELAY10
      return
 
 
;RUTINA DE DELAY DE 1 SEGUNDO: Se basa en la rutina de 10ms, repiti‚ndola 100 veces
 
 
DELAY1S    movlw    0x64
      movwf    TEMP_1
      call    DELAY10
      return
 
 
;RUTINA KEY_OFF: Esta rutina espera que la tecla reci‚n pulsada sea soltada.
;Debe usarse justo despu‚s de llamar a la rutina KEY_SCAN
 
 
KEY_OFF    movf    TECLA,W
      movwf    TEMP_1       ; Guarda temporalmente la tecla
KEY_OFF_NO   call    KEY_SCAN    ; Mira si se ha soltado
      movlw    0x80
      subwf    TECLA,W
      btfss    STATUS,Z
      goto    KEY_OFF_NO    ; Bucle mientras no se suelte
      movf    TEMP_1,W    ; Ya se ha soltado
      movwf    TECLA       ; Se repone la tecla
      return
 
 
;RUTINA DE DELAY VARIABLE: Esta rutina realiza una temporizaci¢n que
;depende del valor del acumulador en el momento en que se le llama
 
DELAY_V    movwf    DELAY_1
      clrf    DELAY_3
      clrf    DELAY_2
DELAY_LOOP    decfsz    DELAY_3,F
      goto    DELAY_LOOP
      decfsz    DELAY_2,F
      goto    DELAY_LOOP
      decfsz   DELAY_1,F
      goto    DELAY_LOOP
      return
       INCLUDE "LCD_CXX.INC"
      INCLUDE "TECLADO.INC"   
 
      END

aqui la libreria teclado
   LIST
TECLADO.ASM
 
 
;Conjunto de rutinas para el manejo del teclado.
;No es un programa en s¡ mismo. Para utilizarlo hay que
;colocar en el programa principal:
;KEY_VAR EQU dir_inicio_del_bloque
 
;BLOQUE DE ETIQUETAS
 
 
   CBLOCK    KEY_VAR       ;Inicio de las variables
       TECLA         ;Retorno del c¢digo de tecla
       KEY_1         ;N§ de filas a explorar
       KEY_2           ;Temporal de c¢digo
        KEY_DELAY_1      ;Variable de temporizaci¢n
       KEY_DELAY_2      ;Variable de temporizaci¢n
   ENDC         
 
 
;RUTINA KEY_SCAN: Rutina de exploraci¢n del teclado. La variable
;"Tecla" retorna con el c¢digo de la tecla pulsada o el c¢digo 0x80
;si no se pulsa ninguna.
 
 
KEY_SCAN   bsf    STATUS,RP0      ;Selecciona p gina 1
      movlw   b"00001111"
      movwf   PORTB         ;RB7-RB4 salidas, RB3-RB0 entradas
      bsf    OPTION_REG,NOT_RBPU   ;Activa cargas pull-up
      bcf    STATUS,RP0      ;Selecciona p gina 0
      movlw   4
      movwf   KEY_1         ;N§ de columnas a explorar
      movlw   b"01111111"
      movwf   TECLA         ;Columna a activar
KEY_SCAN_1   movf    TECLA,W
      movwf   PORTB         ;Activa fila
      nop
      movf   PORTB,W
      movwf   KEY_2
      subwf   TECLA,W         ;Lee las columnas
      btfss    STATUS,Z       ;Hay alguna pulsada ?
      goto   KEY_SCAN_2      ;Si hay alguna pulsada
      bsf    STATUS,C       ;No hay ninguna en esa fila
      rrf    TECLA,F         ;Selecciona siguiente fila
      decfsz    KEY_1,F         ;Salta si se han terminado las filas
      goto   KEY_SCAN_1
      movlw   0x80
      goto   VOLVER         ;Retorna c¢digo 0x80 (no hay pulsaci¢n)
      
KEY_SCAN_2   movlw   .100         ;Bucle de temporizaci¢n de unos 20 ms
      movwf   KEY_DELAY_1      ;para evitar el rebote de los pulsadores
KEY_SCAN_3   clrf   KEY_DELAY_2      
      clrwdt
KEY_SCAN_4   decfsz    KEY_DELAY_2,F
      goto    KEY_SCAN_4
      decfsz    KEY_DELAY_1,F
      goto   KEY_SCAN_3
      movf   TECLA,W         ;Tras la temporizaci¢n se lee nuevamente
      movwf   PORTB         ;si la tecla es la misma. As¡ se
      nop            ;evitan los rebotes.
      movf   PORTB,W
      subwf   KEY_2,W
      btfss   STATUS,Z      ;Es la misma ??
      goto   KEY_SCAN_1      ;No, seguir con la exploraci¢n
      movf   KEY_2,W           ;S¡, guardar en variable de salida TECLA el valor
                  ; recogido
VOLVER          movwf   TECLA
      return            ;Fin de exploraci¢n                        
 
;RUTINA KEY_HEX:   Convierte el c¢digo de tecla que haya en la variable
;"Tecla" a Hex. (0-F). El resultado se devuelve en la variable "Tecla".
;Usa como rutina auxiliar Key_tabla
 
KEY_TABLA   movf   KEY_1,W
      addwf   PCL,F      ;Calcula desplazamiento
      retlw   0x7D      ;0
      retlw   0xEE      ;1
      retlw   0xED      ;2
      retlw   0xEB      ;3
      retlw   0xDE      ;4
      retlw   0xDD      ;5
      retlw   0xDB      ;6
      retlw   0xBE      ;7
      retlw   0xBD      ;8
      retlw   0xBB      ;9
      retlw   0x7E      ;A
      retlw   0x7B      ;B
      retlw   0x77      ;C
      retlw   0xB7      ;D
      retlw   0xD7      ;E
      retlw   0xE7      ;F

KEY_HEX      movf   TECLA,W
      movwf   KEY_2      ;Almacena el c¢digo temporalmente
      clrf    KEY_1      ;Contador HEX a 0
KEY_HEX_2   call   KEY_TABLA   ;Busca c¢digo en la tabla
      subwf    KEY_2,W      ;Compara con el de la tecla
      btfsc    STATUS,Z   ;Coincide ?
      goto    KEY_HEX_1   ;S¡
      incf    KEY_1,F      ;No, incrementa contador HEX
      goto   KEY_HEX_2
KEY_HEX_1   movf   KEY_1,W
      movwf   TECLA      ;Carga contador HEX en la variable de salida
      return
 
 
 
 
;RUTINA HEX_7SEG:   Rutina de conversi¢n de HEX (0-F) a 7 segmentos.
;El acumulador W contiene, durante la llamada, el c¢digo HEX y, al retornar,
;el correspondiente a 7 segmentos
 
 
HEX_7SEG   andlw    b"00001111"
      addwf    PCL,F      ;Desplazamiento sobre la tabla
      retlw    b"00111111"   ;0
      retlw    b"00000110"   ;1
      retlw    b"01011011"   ;2
      retlw    b"01001111"   ;3
      retlw    b"01100110"   ;4
      retlw    b"01101101"   ;5
      retlw    b"01111101"   ;6
      retlw    b"00000111"   ;7
      retlw    b"01111111"   ;8
      retlw    b"01100111"   ;9
      retlw    b"01110111"   ;A
      retlw    b"01111100"   ;B
      retlw    b"00111001"   ;C
      retlw    b"01011110"   ;D
      retlw    b"01111001"   ;E
      retlw    b"01110001"   ;F
   LIST

aqui el lcd_cxx

   LIST
;LCD_CXX.ASM
 
 
;El conjunto de rutinas que se presentan a continuaci¢n permiten realizar
;las tareas b sicas de control del m¢dulo de visualizaci¢n LCD. Se emplean
;con los PIC 16cxx. En el programa principal se deber  reservar memoria
;para el bloque de variables que utiliza el LCD del modo:
;   LCD_VAR EQU dir_inicio_del_bloque

;BLOQUE DE ETIQUETAS
 
 
   #define ENABLE       bsf PORTA,2 ;Activa E
   #define DISABLE    bcf PORTA,2 ;Desactiva
   #define LEER       bsf PORTA,1 ;Pone LCD en Modo RD
   #define ESCRIBIR    bcf PORTA,1 ;Pone LCD en Modo WR
   #define OFF_COMANDO    bcf PORTA,0 ;Desactiva RS (modo comando)
   #define ON_COMANDO    bsf PORTA,0 ;Activa RS (modo datos)
   CBLOCK    LCD_VAR
      LCD_TEMP_2   ;Inicio de las variables. Ser  la primera direcci¢n libre
            ; disponible
      LCD_TEMP_1   
   ENDC      
 
 
;RUTINA UP_LCD: Con esta rutina se configura el PIC para que trabaje con el LCD.
 
 
UP_LCD      bsf   STATUS,RP0    ;Banco 1
       clrf    PORTB       ;RB <0-7> salidas digitales
      clrf    PORTA       ;RA <0-4> salidas digitales
       bcf    STATUS,RP0    ;Banco 0
      OFF_COMANDO       ;RS=0
      DISABLE       ;E=0
      return
 
 
;RUTINA LCD_BUSY: Con esta rutina se chequea el estado del
;flag BUSY del m¢dulo LCD, que indica, cuando est  activado, que el
;m¢dulo a£n no ha terminado el comando anterior. La rutina espera a
;que se complete cualquier comando anterior antes de retornar al
;programa principal, para poder enviar un nuevo comando.
 
 
LCD_BUSY   LEER          ;Pone el LCD en Modo RD
      bsf    STATUS,RP0
      movlw    H"FF"
      movwf    PORTB       ;Puerta B como entrada
      bcf    STATUS,RP0    ;Selecciona el banco 0
      ENABLE          ;Activa el LCD
      nop
L_BUSY       btfsc    PORTB,7      ;Chequea bit de Busy
      goto    L_BUSY
      DISABLE        ;Desactiva LCD
      bsf    STATUS,RP0
      clrf    PORTB       ;Puerta B salida
      bcf    STATUS,RP0
      ESCRIBIR         ;Pone LCD en modo WR
      return
 
 
;RUTINA LCD_E: Se trata de una peque¤a rutina que se encarga de generar
;un impulso de 1æ s (para una frecuencia de funcionamiento de 4 Mhz)
;por la patita de salida de la Puerta A RA2, que se halla conectada
;a la se¤al E (Enable) del m¢dulo LCD. Con esta rutina se pretende activar
;al m¢dulo LCD.
 
 
LCD_E       ENABLE         ;Activa E
      nop
      DISABLE         ;Desactiva E
      return
 
 
;RUTINA LCD_DATO: Es una rutina que pasa el contenido cargado en el
;registro W, el cual contiene un car cter ASCII, a la PUERTA B, para
;visualizarlo por el LCD o escribirlo en la CGRAM.
 
 
LCD_DATO    OFF_COMANDO       ;Desactiva RS (modo comando)
      movwf   PORTB       ;Valor ASCII a sacar por PORTB
      call    LCD_BUSY    ;Espera a que se libere el LCD
      ON_COMANDO       ;Activa RS (modo dato)
      call    LCD_E       ;Genera pulso de E
       return
 
 
;RUTINA LCD_REG: Rutina parecida a la anterior, pero el contenido de W
;ahora es el c¢digo de un comando para el LCD, que es necesario pasar
;tambi‚n a la PUERTA B para su ejecuci¢n.
 
 
LCD_REG    OFF_COMANDO       ;Desactiva RS (modo comando)
      movwf    PORTB       ;C¢digo de comando
      call    LCD_BUSY    ;LCD libre?.
      call    LCD_E       ;S¡. Genera pulso de E.
       return
 
 
;RUTINA LCD_INI: Esta rutina se encarga de realizar la secuencia de
;inicializaci¢n del m¢dulo LCD de acuerdo con los tiempos dados por
;el fabricante (15 ms). Se especifican los valores de DL, N y F,
;as¡ como la configuraci¢n de un interfaz de 8 l¡neas con el bus
;de datos del PIC, y 2 l¡neas de 16 caracteres de 5 x 7 pixels.
 
 
LCD_INI   movlw   b"00111000"
      call   LCD_REG    ;C¢digo de instrucci¢n
      call   LCD_DELAY   ;Temporiza
      movlw   b"00111000"
      call   LCD_REG      ;C¢digo de instrucci¢n
      call   LCD_DELAY   ;Temporiza
      movlw    b"00111000"
      call   LCD_REG      ;C¢digo de instrucci¢n
      call    LCD_DELAY   ;Temporiza
      return
 
 
;RUTINA BORRA_Y_HOME: Borra el display y retorna el cursor a la posici¢n 0.
 
 
BORRA_Y_HOME   movlw    b"00000001"    ;Borra LCD y Home.
      call    LCD_REG
      return
 
 
;RUTINA DISPLAY_ON_CUR_OFF: Control del display y cursor.
;Activa el display y desactiva es cursor
 
DISPLAY_ON_CUR_OFF   movlw b"00001100"    ;LCD on, cursor off.
         call    LCD_REG
         return
 
 
;RUTINA LCD_DELAY: Se trata de un rutina que implementa un retardo
;o temporizaci¢n de 5 ms. Utiliza dos variables llamadas LCD_TEMP_1
;y LCD_TEMP_2, que se van decrementando hasta alcanzar dicho tiempo.
 
 
LCD_DELAY   clrwdt
      movlw    10
      movwf    LCD_TEMP_1
      clrf    LCD_TEMP_2
LCD_DELAY_1    decfsz   LCD_TEMP_2,F
      goto   LCD_DELAY_1
      decfsz   LCD_TEMP_1,F
      goto   LCD_DELAY_1
      return
   LIST

y aqui el p16f84.inc que este si estaba en extension .inc   


        LIST
; P16F84.INC  Standard Header File, Version 2.00    Microchip Technology, Inc.
        NOLIST

; This header file defines configurations, registers, and other useful bits of
; information for the PIC16F84 microcontroller.  These names are taken to match
; the data sheets as closely as possible.  

; Note that the processor must be selected before this file is
; included.  The processor may be selected the following ways:

;       1. Command line switch:
;               C: MPASM MYFILE.ASM /PIC16F84
;       2. LIST directive in the source file
;               LIST   P=PIC16F84
;       3. Processor Type entry in the MPASM full-screen interface

;==========================================================================
;
;       Revision History
;
;==========================================================================

;Rev:   Date:    Reason:

;2.00   07/24/96 Renamed to reflect the name change to PIC16F84.
;1.01   05/17/96 Corrected BADRAM map
;1.00   10/31/95 Initial Release

;==========================================================================
;
;       Verify Processor
;
;==========================================================================

        IFNDEF __16F84
           MESSG "Processor-header file mismatch.  Verify selected processor."
        ENDIF

;==========================================================================
;
;       Register Definitions
;
;==========================================================================

W                            EQU     H"0000"
F                            EQU     H"0001"

;----- Register Files------------------------------------------------------

INDF                         EQU     H"0000"
TMR0                         EQU     H"0001"
PCL                          EQU     H"0002"
STATUS                       EQU     H"0003"
FSR                          EQU     H"0004"
PORTA                        EQU     H"0005"
PORTB                        EQU     H"0006"
EEDATA                       EQU     H"0008"
EEADR                        EQU     H"0009"
PCLATH                       EQU     H"000A"
INTCON                       EQU     H"000B"

OPTION_REG                   EQU     H"0081"& H"0001"
TRISA                        EQU     H"0085"& H"0005"
TRISB                        EQU     H"0086"& H"0006"
EECON1                       EQU     H"0088"
EECON2                       EQU     H"0089"

;----- STATUS Bits --------------------------------------------------------

IRP                          EQU     H"0007"
RP1                          EQU     H"0006"
RP0                          EQU     H"0005"
NOT_TO                       EQU     H"0004"
NOT_PD                       EQU     H"0003"
Z                            EQU     H"0002"
DC                           EQU     H"0001"
C                            EQU     H"0000"

;----- INTCON Bits --------------------------------------------------------

GIE                          EQU     H"0007"
EEIE                         EQU     H"0006"
T0IE                         EQU     H"0005"
INTE                         EQU     H"0004"
RBIE                         EQU     H"0003"
T0IF                         EQU     H"0002"
INTF                         EQU     H"0001"
RBIF                         EQU     H"0000"

;----- OPTION Bits --------------------------------------------------------

NOT_RBPU                     EQU     H"0007"
INTEDG                       EQU     H"0006"
T0CS                         EQU     H"0005"
T0SE                         EQU     H"0004"
PSA                          EQU     H"0003"
PS2                          EQU     H"0002"
PS1                          EQU     H"0001"
PS0                          EQU     H"0000"

;----- EECON1 Bits --------------------------------------------------------

EEIF                         EQU     H"0004"
WRERR                        EQU     H"0003"
WREN                         EQU     H"0002"
WR                           EQU     H"0001"
RD                           EQU     H"0000"

;==========================================================================
;
;       RAM Definition
;
;==========================================================================

        __MAXRAM H"CF"
        __BADRAM H"07", H"50"-H"7F", H"87"

;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_CP_ON                       EQU     H"000F"
_CP_OFF                      EQU     H"3FFF"
_PWRTE_ON                    EQU     H"3FF7"
_PWRTE_OFF                   EQU     H"3FFF"
_WDT_ON                      EQU     H"3FFF"
_WDT_OFF                     EQU     H"3FFB"
_LP_OSC                      EQU     H"3FFC"
_XT_OSC                      EQU     H"3FFD"
_HS_OSC                      EQU     H"3FFE"
_RC_OSC                      EQU     H"3FFF"

        LIST
   


   




 
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: incluir subprogramas mplab
« Respuesta #8 en: 04 de Abril de 2006, 09:24:00 »
Escrito originalmente por groundman
como me digisteis que posteara el problema ahi os mando el programaprincipal
tipico3 del libro que os comentaba.

y luego las dos librerias que tube que modificar de .asm a .inc


otra cosa que queria preguntar es que cuando compilo el programa yo queria
que primero metiera en la memoria de programa de la siguiente forma

tipico3.asm
lcd_cxx.inc o .asm "si es que funconara y
teclado.inc

ya que de la forma que lo he compilado se me queda el tipico3 al final.




Me has mareado un poco con semejante mezcla de archivos.  Podrias subir los archivos en un .zip ? asi lo reviso y te digo como hacer lo que pretendes?

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
RE: incluir subprogramas mplab
« Respuesta #9 en: 04 de Abril de 2006, 15:05:00 »
antes intente mandar los archivos pero no se podia no se por que,te los envio en un rar por que el winzip no lo tengo instalado pero si lo quieres en zip dimelo y te lo mando.

con estos archivos, los que hacen falta ,para que el programa funcione.
al compilarlo con el mplab 7.31 me dio los errores que te comentaba y dige,
que cuando cambie la extension de .asm a .inc ya no me marco los errores y
el programa se compilo bien

los archivos quedaron asi en source files

tipico3.asm

y en header files
lcd_cxx.inc
P16P84.INC
teclado.inc

a ver si he hecho algo mal ,y espero que esta vez se pueda enviar el rar

Lo sentimos, No hay suficiente espacio disponible para subir el adjunto..

esto es lo que me pasa.


Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: RE: incluir subprogramas mplab
« Respuesta #10 en: 08 de Abril de 2006, 14:25:17 »
antes intente mandar los archivos pero no se podia no se por que,te los envio en un rar por que el winzip no lo tengo instalado pero si lo quieres en zip dimelo y te lo mando.

con estos archivos, los que hacen falta ,para que el programa funcione.
al compilarlo con el mplab 7.31 me dio los errores que te comentaba y dige,
que cuando cambie la extension de .asm a .inc ya no me marco los errores y
el programa se compilo bien

los archivos quedaron asi en source files

tipico3.asm

y en header files
lcd_cxx.inc
P16P84.INC
teclado.inc

a ver si he hecho algo mal ,y espero que esta vez se pueda enviar el rar

Lo sentimos, No hay suficiente espacio disponible para subir el adjunto..

esto es lo que me pasa.




groundman, Hagamos una cosa, mandame un mensaje privado y te paso un mail a donde me puedas mandar tu código.

Un abrazo
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: incluir subprogramas mplab
« Respuesta #11 en: 13 de Abril de 2006, 09:08:16 »
hola maunix,te he enviado los archivos que me pedistes.
pero tengo una pregunta que hacerte aparte de esto.

veras aunque esta no pertenece a este hilo,no se si me podras responder.
respecto a un grabador gtp usb lite.he puesto la pregunta en programadores pero nadie contesta
no se si es que  todos tienen el mismo problema. me graba bien los pic 16f876 y 18f2550
que son de los que disponia pero el pic16f84 no hay manera he probado unos cuantos
y nada ,no se que es lo que pasa.sabrias tu decirme.

gracias
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: incluir subprogramas mplab
« Respuesta #12 en: 13 de Abril de 2006, 09:15:28 »
hola maunix,te he enviado los archivos que me pedistes.
pero tengo una pregunta que hacerte aparte de esto.

veras aunque esta no pertenece a este hilo,no se si me podras responder.
respecto a un grabador gtp usb lite.he puesto la pregunta en programadores pero nadie contesta
no se si es que  todos tienen el mismo problema. me graba bien los pic 16f876 y 18f2550
que son de los que disponia pero el pic16f84 no hay manera he probado unos cuantos
y nada ,no se que es lo que pasa.sabrias tu decirme.

gracias


Yo tambien tengo el lite y no me funciona con algunos Pics.

La respuesta que obtuve de marmatar (encargado de la distribución comercial del mismo) es la de que la versión free tenía algunos bugs que fueron corregidos pero ya como version COMERCIAL.

La versión comercial cuesta alrededor de u$s 25 el pic solamente.  Es decir te dan un 18F2550 ya grabado con el firmware correcto que se comunica bien con las ultimas versiones del Winpic y corrige varios bugs de grabación que fueron apareciendo.

Es decir que si no te anda el lite... poco puedes hacer para quejarte, para quejarte hay que comprarlo jejeje.

Si te fijas en todo el hilo del gtp-lite ahi figura como fueron sucediendose las cosas.

Un abrazo


PD: aún no me llega tu mail pero ni bien tenga un tiempo revisaré el código que me mencionas.  En cuanto a .rar no hay problema ya que también uso el winrar.  Eso sí, fijate que el winrar tiene opción para crear archivos .ZIP también por lo cual no debieras tener problemas si necesitas comunicarte con gente que tiene solo formato ZIP.


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: incluir subprogramas mplab
« Respuesta #13 en: 13 de Abril de 2006, 12:13:12 »
Es decir que si no te anda el lite... poco puedes hacer para quejarte, para quejarte hay que comprarlo jejeje.

Si te fijas en todo el hilo del gtp-lite ahi figura como fueron sucediendose las cosas.

Mauricio, me parecen muy desafortunadas tus palabras. No veo porqué estableces una analogía entre consultar y quejarse.

Yo considero que ambas acciones son completamente diferentes y, si bien a la primera en este foro siempre hemos dado la mejor respuesta posible, de la segunda no veo ningún ejemplo representativo, ni en las versiones gratuitas del GTPUSB, ni mucho menos en la versión comercial del mismo.

Es más, podría encontrar en el foro decenas (quizás algún ciento) de mensajes de usuarios que han comprado el GTPUSB y tras recibirlo escriben con satisfacción sobre las prestaciones de su compra.

No voy a entrar en los detalles de la respuesta del amigo Marcelo porque ni conozco la pregunta que le hiciste, ni la base de su respuesta, pero sí te puedo decir que en el foro se han discutido, arreglado, ayudado y asesorado sobre muchos errores de programación que han ido teniendo los usuarios con las distintas versiones del GTPUSB:
El GTPUSB 232: http://www.todopic.com.ar/foros/index.php?topic=1719.0
El GTPUSB Lite: http://www.todopic.com.ar/foros/index.php?topic=1716.0
El GTPUSB Summer: http://www.todopic.com.ar/foros/index.php?topic=1718.0

Así que no puedo más que indignarme ante tu afirmación, puesto que por la parte que me toca, también he aportado la ayuda que he podido en esos hilos. Imagino que dicha indignación no será comparable a la de otros usuarios que también ayudaron y sobre todo a la de Sispic, su creador.

Al contrario que a ti, no me gusta complementar lo ya respondido por otros foristas, aún cuando su respuesta pueda no ser todo lo completa que yo habría considerado, salvo casos en los que exista la confianza suficiente para que no se entienda como una "invasión". Pero en esta ocasión no me voy a reprimir, y voy a ampliar la respuesta que has dado a groundman, porque no sólo la considero insuficiente, sino también falsa.

Groundman, si hay un PIC que se programa sin problemas por encima de todos es el 16F84. No he visto su pregunta en el foro de Programadores, pero intentaré encontrarla para ayudarte allí. Son pocos los post que se quedan sin responder en este magnífico foro, así que si aún no ha tenido respuesta ten un poco de paciencia porque verás como en breve recibes ayuda.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: incluir subprogramas mplab
« Respuesta #14 en: 13 de Abril de 2006, 12:51:52 »
Nocturno creo que mis palabras fueron mal interpretadas.

He estado en contacto con marcelo (marmatar) para adquirir 3  gtp-usb para la empresa que trabajo y también fue surgiendo durante para amigos que quiere un buen programador (algo que no se lo comenté porque durante el plazo en que espero su rta) , y no hablo de uno sino de varios.  En definitiva, me parece MUY BUEN PROGRAMADOR,  :D .  En lo concreto estoy esperando alguna novedad sobre si se puede usar el GTPUSB con XP o W2000 sin ser usuario administrador para poder concretar la operación.

No es mi intención criticarla ni mucho menos.  Solo que usando el gtpusb lite tuve un par de inconvenientes (en lo puntual con el 18F4580) y me dijo marcelo lo siguiente "muchos problemas fueron solucionados en versiones posteriores", de ahi que haya dicho que si algun pic no se programa bien por 2 razones.

1) Que la solución este en el foro, de hecho lo apunté a que vaya a la seccion de programadores gtpusb lite para recabar información ahi.

2) Que este solucionada en la versión comercial del producto

Si pertenezco al foro es porque me parece que hay gente maravillosa y muy capaz aquí, no para venir a criticar.  De hecho a veces no posteo por falta de tiempo pero no por falta de interes.

Sin más me despido , esperando que aceptes y acepten mis disculpas por una mala interpretación o bien una mala redacción mia.

Saludos




- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything