TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: JOSEMP en 19 de Junio de 2013, 00:11:51
-
Saludos...
estoy comenzando con esto de programacion de los pic... soy nuevo.... intento hacer un programa sencillo de desplazar un led encendido.. al momento de copilar me sale este error:
Debug build of project `C:\Users\vit\Documents\Cursos\Microcontroladores\Practicas clase 4\Ejercicio 1 clase 4\ejercicio1C4.mcp' started.
Language tool versions: MPASMWIN.exe v5.49, mplink.exe v4.47, mplib.exe v4.47
Preprocessor symbol `__DEBUG' is defined.
Tue Jun 18 22:37:28 2013
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Build aborted. The project contains no source files.
----------------------------------------------------------------------
Debug build of project `C:\Users\vit\Documents\Cursos\Microcontroladores\Practicas clase 4\Ejercicio 1 clase 4\ejercicio1C4.mcp' failed.
Language tool versions: MPASMWIN.exe v5.49, mplink.exe v4.47, mplib.exe v4.47
Preprocessor symbol `__DEBUG' is defined.
Tue Jun 18 22:37:29 2013
----------------------------------------------------------------------
BUILD FAILED
no creo que sea error de programación... puede ser es que el formato para hacer el programa( que poner primero o despues ) me lo pasaron no se en que version de mplab lo hicieron.. por favor ayuda..
anexo el codigo
INCLUDE <P16F877A.INC>
LIST P=16F877A
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BOREN_ON & _LVP_OFF
;REDIFINICION DE NOMBRE
#DEFINE PUERTO_A PORTA
#DEFINE PUERTO_B PORTB
#DEFINE PUERTO_C PORTC
CBLOCK 0x20 ;BLOQUE DE VARIABLES O REGISTROS
PDel0
PDel1
PDel2
ENDC
ORG 00H
GOTO COMIENZO
ORG 100H
COMIENZO CALL PUERTO ; LLAMDA A PUERTO.
BCF STATUS,C
CICLO RRF PORTC,F
CALL DEMORA
GOTO CICLO
;***************************************************************************************************
; BLOQUE DE RUTINAS BLOQUE DE RUTINAS
;******************************************************************************************************
PUERTO BSF STATUS,RP0
BCF STATUS,RP1
MOVLW B 111111
MOVWF TRISA
MOVLW B 11111111
MOVWF TRISB
MOVLW B 11111111
MOVWF TRISC
MOVLW B 11111111
MOVWF TRISD
MOVLW B 111
MOVWF TRISE
CLRF OPTION_REG
NOP
MOVLW B 00000110
MOVWF ADCON1
BCF PIE1,ADIE ; DESABILITADA LA CONVERSION
BCF STATUS,RP0
MOVLW B 111111
MOVWF PORTA
MOVLW B 11111111
MOVWF PORTB
MOVLW B 11111111
MOVWF PORTC
MOVLW B 11111111
MOVWF PORTD
MOVLW B 111
MOVWF PORTE
MOVLW B 00000000
MOVWF INTCON
RETURN
DEMORA movlw .167 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop0 movlw .41 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop1 movlw .72 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;******************************************************************************************************
END
-
bienvenido al foro, el error que te marca dice Build aborted. The project contains no source files. eso quiere decir que tu proyecto no contiene archivos fuentes, para solucionarlo, en la ventana de proyecto debes hacer add Files en la carpeta source files.
Saludos
-
Sander creo que el problema esta en los literales que estan mal escritos, igual hay alguna cosa mas.
Esos literales que tienes en binario creo que no estan bien escritos, pones:
MOVLW B 111111
Ponselo asi:
b'111111'
Por cierto creo que quieres encender LEDs y estas configurando como entrada los puertos. Para que sean salida los TRIS hay que ponerlos a "0".
-
tapi8 .. muchas gracias ya pude solucionar los problemas con la copilacion ....
sander lo que pasa es que quiero encerder los led con 0.. estoy utilizando lógica inversa pagarlos con un 1 y encenderlos con 0.. me dijeron que es la mejor forma de encerder los
led...
ahora tengo otro problemita .. acomode algo al programa con la subrutina de retardo y al copilar no me da ningún error.. pero estoy intentando simular y me aparece esto:
error (http://subefotos.com/ver/?3edeb09a6466fd8014c39155db5ee2d4o.png) ;denle click para ver la captura
tengo entendido que para colocar una fuente de 5v selecciono power en terminales..
asi quedo mi codigo.. no se si tenga detalles
INCLUDE <P16F877A.INC>
LIST P=16F877A
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _BOREN_ON & _LVP_OFF
;REDIFINICION DE NOMBRE
#DEFINE PUERTO_A PORTA
#DEFINE PUERTO_B PORTB
#DEFINE PUERTO_C PORTC
CBLOCK H'20' ;BLOQUE DE VARIABLES O REGISTROS
CONT1
CONT2
CONT3
ENDC
ORG H'00'
GOTO COMIENZO
ORG H'100'
COMIENZO CALL PUERTO ; LLAMDA A PUERTO.
BCF STATUS,C
CICLO RRF PORTC,F
CALL RETARDO
GOTO CICLO
;***************************************************************************************************
; BLOQUE DE RUTINAS BLOQUE DE RUTINAS
;******************************************************************************************************
PUERTO BSF STATUS,RP0
BCF STATUS,RP1
MOVLW B'111111'
MOVWF TRISA
MOVLW B'11111111'
MOVWF TRISB
MOVLW B'11111111'
MOVWF TRISC
MOVLW B'11111111'
MOVWF TRISD
MOVLW B'111'
MOVWF TRISE
CLRF OPTION_REG
NOP
MOVLW B'00000110'
MOVWF ADCON1
BCF PIE1,ADIE ; DESABILITADA LA CONVERSION
BCF STATUS,RP0
MOVLW B'111111'
MOVWF PORTA
MOVLW B'1111111'
MOVWF PORTB
MOVLW B'11111111'
MOVWF PORTC
MOVLW B'11111111'
MOVWF PORTD
MOVLW B'111'
MOVWF PORTE
MOVLW B'00000000'
MOVWF INTCON
RETURN
RETARDO MOVLW .191
MOVWF CONT1
MOVlW .191
MOVWF CONT2
MOVLW .10
MOVWF CONT3
CICLO1 DECFSZ CONT1,F
GOTO CICLO1
DECFSZ CONT2,F
GOTO CICLO1
DECFSZ CONT3,F
GOTO CICLO1
RETURN
;******************************************************************************************************
END
les agradezco la ayuda de antemano.
-
Tienes que poner el PORTC como salida:
MOVLW B'11111111'
MOVWF TRISC
asi:
MOVLW B'00000000'
MOVWF TRISC
-
Tienes que ir a generator/DC y ponerle la tension que quieres, o poner una bateria y darle 5V, creo que de las dos formas va, creo que mejor la primera.
-
gracias a todos por su ayuda.....
tapi8 me puedes explicar un poco la parte de configurar los puertos como entradas o salidas...es que tenia la lógica de que con 1 encendía y 0 apagaba .. y me he enredado un poquito con eso...
y ahora en la simulacion me aparece esto...captura del error (http://subefotos.com/ver/?719f285d0c5acc0a8e45ed692c99b100o.png)
calcula la sub rutina de retardo queria un segundo para el retardo.. y con los calculos me da 1,2 segundos.. utilizo un cristal de 4Mhz.. y la rutina es la que esta en el post anterior..
gracias por todo .. estoy emocionado con esto de los pic y estoy buscando aprender lo que pueda..
-
Todo esto que haces aqui es la configuracion de puertos, decirles si van a ser entradas (1) o salidas (0), si van a activar algo (LEDs, reles, TRIACs, mosfet etc) seran salidas, si van a leer algo (interruptor, pulsador, sensor, etc) seran entradas:
PUERTO BSF STATUS,RP0
BCF STATUS,RP1
MOVLW B'111111'
MOVWF TRISA
MOVLW B'11111111'
MOVWF TRISB
MOVLW B'11111111'
MOVWF TRISC
MOVLW B'11111111'
MOVWF TRISD
MOVLW B'111'
MOVWF TRISE
CLRF OPTION_REG
NOP
MOVLW B'00000110'
MOVWF ADCON1
BCF PIE1,ADIE ; DESABILITADA LA CONVERSION
BCF STATUS,RP0
Tu el que usas en el circuito es el PORTC, por tanto tienen que ser salidas, el resto como no los vas a usar puedes ponerlos como quieras.
Aqui un tutorial/curso para aprender assembler, practicamente desde cero:
http://www.todopic.com.ar/foros/index.php?topic=24720.0
Un programa que te genera el codigo de las demoras:
http://www.todopic.com.ar/foros/index.php?topic=5968.0
Con Proteus mejor que te ayude otro, yo no soy el mas indicado :lol: :lol: