TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: groundman 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.
-
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".
-
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".
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
-
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
-
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 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....
-
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.
-
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
-
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
-
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.
-
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
-
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
-
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.
-
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.
-
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
-
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.
Esto también me lo apunto modulay y realmente yo no pienso como uds respecto a este tema.
En ocasiones veo que muchos postean sobre el mismo tema solo para agregar algo.
¿Acaso soy el único que hace esto? Fijarse porfavor porque eso se agregar cosas abajo de otros es muy común en el foro y no me considero que yo sea el único que lo haga.
¿Esta mal agregar información o una corrección?
Es realmente la primera vez que veo un planteo así y de ahí mi confusión. Me gustaría que pegara un vistazo al foro de Microchip o en la lista de correo piclist donde la gente se va corrigiendo y va agregando información constantemente y no por eso se siente uno invadido o agredido o lo que sea.
A mi no me molesta que me corrijan si me equivoco o que agreguen información por más que esten diciendo lo mismo siempre que ayude a mostrar otro punto de vista de lo mismo o agregar luz u otra explicación mejor.
En realidad muchos de estas cosas me gustaria charlarlas por chat, porque tal vez la palabra escrita en forma permanente no sea la mejor forma de aclarar una idea además que hay muchos delays en el trato del tema.
Si estas de acuerdo, me gustaria hablar contigo, con modulay y con quien opine que agregar informacion a un post para agregar informacion o para corregir la misma sea invasivo y/u ofensivo.
Saludos
-
Quisiera agregar algo y lo hago como otro post para no editar lo que ya escribí y que se tome como una corrección.
Creo que un foro debes ser un lugar donde haya información útil para la gente. Donde si se trata un tema, el mismo quede aclarado.
En alguna que otra ocasión cuando alguien hace una pregunta y otro le dice "te respondi en privado", yo aporto mi opinión de que me parece que esto está mal, que un foro es para que si alguien pregunta lo haga en el foro sino estaríamos armando un foro de 'preguntas' cuyas respuestas no estarían posteadas poruqe fueron hechas en privado.
El otro extremo sería que la gente preguntaria y preguntaría muchas veces lo mismo porque no habría un lugar donde recurrir a la información comun.
Por otra parte, que ocurre si la información posteada es incorrecta? Hay que dejarla asi y que un usuario nuevo lea y haga las cosas mal? A mi modo de verlo, en el foro se genera y se adquiere conocimiento, y porque no correjir o permitir que nos corrijan?
Lo veo tan básico a eso que me cuesta entender que sea ofensivo corregir a alguien, en serio lo digo una y otra vez, pero estuve pensando el tema y puede que en otros lugares eso se tome como ofensivo. Al fin de cuentas, tenemos en común solo el lenguaje ya que las costumbres de cada lugar son bastante diferentes y puede que en eso yo esté errado. Tal vez en otros lugares corregir o ser correjidos sea ofensivo, de mal gusto o bien invasivo.
Si es así, me gustaría que se ponga en algun post del estilo "usos y buenas costumbres" donde se aclare el tema ya que uno con el afan de aportar una ayuda termina ofendiendo o irritando a los demas lo cual no es mi intención ni cerca.
Los que me conocen personalmente saben que no es así y jamás me jacto de lo que sé o agredo al que no sabe, solo me molesta o me irrita la vagancia de cuando la gente demanda que le solucionen los problemas en forma inmediata, urgente y encima con una explicación de 2 lineas de lo que necesita hacer.
En lo personal opino que el correjir y ser correjido y aceptar los errores es la mejor forma de progresar. Asumir el error (como yo asumo que tal vez he sido ofensivo por postear alguna corrección o agregar información) es una forma de mejorar, de ser cada vez mejores. Creo que las culturas que han evolucionado han sido las que se han auto corrigiendo, han avanzado y han desechado o reconocido los errores cuando los han detectado.
Como dije antes estoy abierto a seguir dialogando del tema, pero me gustaría que sea por un chat que es mucho mas dinamico. Me pueden enviar un mensaje privado asi intercambiamos msn , yahoo, icq o lo que usen. También podria ser algun canal en un servidor irc.
Un abrazo
-
Pero vamos a ver,Mauricio.
¿Crees sinceramente que soy el que ha desencadenado todo esto?
¿No has pensado por un momento que pueda ser cuestión tuya y no de todos los demás?
Si olvidaras un poco eso de corregir,corregir,corregir, y te relajaras un poco quizá vieras las cosas de otro color.
¿El chat? pues sí,la gente puede cambiar de un medio a otro,pero estamos aquí...no se trata de que me convenzas a mí o al resto de foreros de que no eres tal y como te vemos,unos de una forma,otros de otra.Se trata de escuchar un poco,compartir y llevarnos lo mejor que podamos.
Y desde luego añadiéndome a tu lista negra,o expresándolo mas bien,no consigues más que hacerte mas daño del que supuestamente me haces a mi,o del que me puedas hacer.
Creo que vas a contrarreloj,Mauricio.Tómate un respiro,olvídate un poco del foro y date tus juergas con los amigos,la novia.Disfruta de todo lo que te ofrece la vida...¿del foro? también,pero para ello te digo con el corazón en la mano que deberías intentar abandonar un poco esa especie de carrera que disputas contra tí mismo,y que con frecuencia,se torna contra los demás.
Seguro que en persona eres buen tío,pero como ya te he dicho,no sirve de nada intentar convencer a nadie de ello,invierte tu energía en demostrarlo.
No es sólo conocimiento,seguro que al igual que yo,ves que detrás de todo esto lo que hay son personas y que realmente eso es lo más importante,que está por encima de todo.El llevarnos bien depende de nosotros,pero todos tenemos que poner de nuestra parte,incluído tú.
-
Modulay si lees mi post no dije que desencadenaras tu esto, solo que tu mismo me dijiste algo similar respecto a postear donde otro posteó.
De todas formas te agradezco tus consejos.
Saludos
-
Es lo que has puesto.
Si quieres lo "CORRIJO" y le pongo la tilde que le falta
-
Es lo que has puesto.
Si quieres lo "CORRIJO" y le pongo la tilde que le falta
Es cierto, va con acento :) :D :lol: :lol:
Me has hecho reir.
De todas formas, capté tu onda.
Saludos
-
Buenas...
Si bien me he sentido tocado por tus palabras Mauricio, no soy de ofenderme fácil, así que caso omiso.
Con respecto a este rollo, debo destacar que los Argentinos somos muy "crudos" a la hora de hablar y escribir. No utilizamos un lenguaje tan coloquial como el resto de los paises de los cuales muchisimos foreros son oriundos.
Con esto no quiero justificar nada.Simplemente digo que esto puede resultar en algunos casos chocante para otros lectores.
Mi mayor anhelo es que todos nos pongamos de acuerdo en un solo fin: Crear una mejor comunidad, poder hacer nuevas amistades, y sobre todo...¡divertirnos!.
Con respecto a tus posts Mauricio, solo puedo decir que hasta a mi, que soy Argentino, no me termina de cerrar la forma en la que respondes, acotas u opinas sobre ciertas cosas. Estoy seguro que tus intenciones son las mejores.
Por ahí lo que falta es que logres "amabilizar" un poco tus mensajes.
No se, es solo una humilde opinion, tomenla o dejenla.
Exitos. Bruno.
-
Me has hecho reir.
Puedes apostar a que será por poco tiempo majete :lol:
-
Bruno gracias por tus palabras :)
La verdad, debe ser como tu dices que no doy muchas vueltas para decir algo.
Suelo ser breve y por ahi directo :? :?
Es que en los foros en inglés me he acostumbrado a hablar asi y no me di cuenta que acá estaba mal visto.
Trataré de suavizar mis posts y sino..... volveré a mi montaña. jajaja
:lol: :lol: :lol:
-
hola,como al final no puedo programar los 16f84 estoy utilizando los 16f876 retocando el programa principal
que tengo para el 16f84.
uno de los retoques es poner las siguientes lineas aparte de los include "16f876.inc" y list "p16f876"
bcf
movlw 0x06
movwf ADCON1
esto es para comutar las salidas de PORTA a digitales ,y de esa manera anular las entradas analogicas.
-
hola ,hay alguna diferencia de las mas significativas ,aparte de conmutar las salidas analogicas a digitales desde
el ADCON1
y desactivar el bit de configuracion que no se porque desactiva el RB3, o almenos si no lo desactivas
no sale el dato esperado por la PB, tendra algo que ver con PGM.
es que quiero retocar un programa que estaba en un 16f84 para ejecutarlo en un 16f876
porque no me funciona,algo se me escapa.
ya que el mismo programa retocado funciona en el f84 pero no en el f876
el programa es un lector de teclado que la tecla pulsada se visualiza en un display.
gracias
-
hola ,hay alguna diferencia de las mas significativas ,aparte de conmutar las salidas analogicas a digitales desde
el ADCON1
y desactivar el bit de configuracion que no se porque desactiva el RB3, o almenos si no lo desactivas
no sale el dato esperado por la PB, tendra algo que ver con PGM.
es que quiero retocar un programa que estaba en un 16f84 para ejecutarlo en un 16f876
porque no me funciona,algo se me escapa.
ya que el mismo programa retocado funciona en el f84 pero no en el f876
el programa es un lector de teclado que la tecla pulsada se visualiza en un display.
gracias
groundman las diferencias entre el F84 y el F876 son numerosas y no alcanzo a entender bien con que estas en problemas.
En general, uno cuando pasa a un pic 'mayor' debe deshabilitar modulos que no usa. El código compila digamos, porque las instrucciones son las mismas pero el hardware difiere y es ahí donde uno necesita adaptar.
Es raro que consigas un documento que te explique la migracion de cada pic N1 al pic N2 ya que depende mucho del software que uno esté haciendo.
Sería importante que si tu código se puede ver que lo postees así te echamos una mano con el mismo ;) ;)
Incluso creo que sería más rápido si abres un nuevo tema donde trates tu problemática de migración de código.
Saludos
-
ok.abrire otro tema .
es que no estoy acostubrado al manejo de los foros.no se hacer, ni el seleccionar el texto de otro usuario para
contestar o rectificar lo que haya dicho.
de ahi que no me haya dado cuenta de que se habia abierto una segunda continuacion del tema.
ni de la pequeña discusion o contraste de opiniones.
-
Hola, fijate que arriba de cada mensaje publicado, hay un boton que dice "citar", asi de facil puedes citar lo que ha dicho otra persona, o incluso tu mismo.
Seria bueno como dice Maunix que abras un nuevo tema para tu problematica, ya que como el dice, lo que mas informacion aportara sobre cómo orientarte o solucionar tu problema, sera mirando el codigo fuente en si.
Exitos!!
-
hola, soy nuevo en el foro y tambien se ke es un tema antiguo pero el probloem,a es que quiero correr el mismo programa pero al simularlo no hace nada alguien ke lo aya simulado en proteus i ke me poddria proporcionar la imagen
-
con imagen.te refieres al conexionado?
-
si groundman me refiero al conexiado
-
esta imagen es un proyecto que estoy empezando a hacer.falta alguna conexion que ya te dire cuando lo tenga un poco mas avanzado.
(http://img97.imageshack.us/img97/1497/lcdbn.jpg)
By groundman (http://profile.imageshack.us/user/groundman) at 2011-04-20
-
groundman pero veo por tus comentarios que tu realisaste este proyecto aun tienes el codigo con el ke lo hiciste s simular'
-
en aquel tiempo no usaba el proteus para simular solo el mpsim.si quieres el codigo,lo tienes en la respuesta #7 del principio de este tema.
-
aragon99.te adjunto el codigo para que lo simules.
aunque no esta basado en tablas.este codigo que no esta acabado del todo aunque te servira para empezar,utiliza unas direcciones de la ram para introducir el
texto.el cual se visualizara en la lcd.
-
ah.se me olvidaba.la lcd que uso en proteus es el LM016L de 2x16 caracteres.y para que funcione,tienes que hacer clic sobre el y cambiar la frecuencia
de 250kB a 10MB