TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Goodfrey en 25 de Febrero de 2010, 12:59:20
-
Disculpen las molestias, ya e usado el buscador para ver si consigo una solucion a mi problema pero nada...
solo me estoy inicializando con este pic e usado el PIC16F84A para programar y me va muy bien... pero ahora me piden que programe con el 628 en assembler....
pero estoy molesto por que no puedo dar con la solucion, y de seguro es algo tan tonto como el mismo codigo....
lo unico que intento hacer es declarar puertos y cambio de banco para que simplemente cuando inicialize el micro me encienda un led en Portb,0 mas nada
pero siempre me da error.... algo estoy haciendo mal... y quisiera su ayuda para solventar este problema....
Cuando complio en proteus me da un error de libreria... uso PROTEUS 7.5 SP3
Aqui pongo el codigo para ver que puede ser....
; **** Encabezado ****
LIST P=16F628A
#INCLUDE P16F628A.INC ; processor specific variable definitions
;**** Definiciones para el ensamblador ****
PDel1 equ 20h
PDel0 equ 21h
;**** Inicio del Micro ****
RESET ORG 0x00 ; Aquí comienza el micro.-
CALL CONFI
GOTO INICIO ; Salto a inicio de mi programa.-
ORG 0x05
; Origen del codigo de programa.-
CONFI BCF STATUS, RP1
BSF STATUS, RP0
MOVLW B'11111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,RP0
BCF STATUS,RP1
INICIO
BSF PORTB,0
CALL DEMORA
BCF PORTB,0
GOTO INICIO
DEMORA movlw .197 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .253 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2
return ; 2+2 Fin.
END
Y este es el error que me genera el proteus cuando complilo...
Warning[205] ..\..\..\..\MICRO\628.ASM 3 : Found directive in column 1. (LIST)
Error[105] ..\..\..\..\MICRO\628.ASM 4 : Cannot open file (Include File "P16F628A.INC" not found)
Error[113] ..\..\..\..\MICRO\628.ASM 18 : Symbol not previously defined (STATUS)
Error[113] ..\..\..\..\MICRO\628.ASM 18 : Symbol not previously defined (RP1)
Error[113] ..\..\..\..\MICRO\628.ASM 19 : Symbol not previously defined (STATUS)
Error[113] ..\..\..\..\MICRO\628.ASM 19 : Symbol not previously defined (RP0)
Error[113] ..\..\..\..\MICRO\628.ASM 21 : Symbol not previously defined (TRISA)
Error[113] ..\..\..\..\MICRO\628.ASM 23 : Symbol not previously defined (TRISB)
Error[113] ..\..\..\..\MICRO\628.ASM 24 : Symbol not previously defined (STATUS)
Error[113] ..\..\..\..\MICRO\628.ASM 24 : Symbol not previously defined (RP0)
Error[113] ..\..\..\..\MICRO\628.ASM 25 : Symbol not previously defined (STATUS)
Error[113] ..\..\..\..\MICRO\628.ASM 25 : Symbol not previously defined (RP1)
Error[113] ..\..\..\..\MICRO\628.ASM 28 : Symbol not previously defined (PORTB)
Error[113] ..\..\..\..\MICRO\628.ASM 30 : Symbol not previously defined (PORTB)
Warning[207] ..\..\..\..\MICRO\628.ASM 35 : Found label after column 1. (PLoop1)
Warning[207] ..\..\..\..\MICRO\628.ASM 37 : Found label after column 1. (PLoop2)
Warning[207] ..\..\..\..\MICRO\628.ASM 43 : Found label after column 1. (PDelL1)
Warning[207] ..\..\..\..\MICRO\628.ASM 44 : Found label after column 1. (PDelL2)
Warning[205] ..\..\..\..\MICRO\628.ASM 46 : Found directive in column 1. (END)
Espero de su ayuda.... solo necesito que se encienda un led para saber como se configuran los puertos y listo del resto de la programacion la hago yo...
saludos xD gracias por la respuesta
-
acabo de ver este tema...
http://www.todopic.com.ar/foros/index.php?topic=12659.0
y nada no me funciona todo lo que declaro como trisa y trisb me da error parece que es error de libreria...
como puedo solucionarlo...
-
Nunca use proteus para compilar :? Puede que falte indicar la carpeta de libreria. Y sino puedes compilarlo en MPLab que no va a tener problemas.
Saludos!
-
Nunca use proteus para compilar :? Puede que falte indicar la carpeta de libreria. Y sino puedes compilarlo en MPLab que no va a tener problemas.
Saludos!
Amigo que grande... ese compilador de proteus no me habia fallado con el 16F84A pero con el 628 no me queria funcionar me baje el mpaswin2005 y funciono de maravilla...
lamento haberlos molestado con esta simple tonteria xq sinceramente eso fue... gracias por la respuesta saludos xD
-
.
En este caso no vas a tener problemas, pero hay un error que vas a notar cuando quieras usar el PORTA. Y es que tenés los comparadores analógicos del PIC activados desde el inicio del programa (vienen activados en el reset). Es recomendable, aunque no uses ninuno de los pines involucrados, desactivarlos al inicio del código.
No me lo tomes a mal, es solo un recordatorio ;-)
Saludos.
-
.
En este caso no vas a tener problemas, pero hay un error que vas a notar cuando quieras usar el PORTA. Y es que tenés los comparadores analógicos del PIC activados desde el inicio del programa (vienen activados en el reset). Es recomendable, aunque no uses ninuno de los pines involucrados, desactivarlos al inicio del código.
No me lo tomes a mal, es solo un recordatorio ;-)
Saludos.
y como hago eso amigo, lo que pasa es que no soy muy experto con este micro, tambien necesito que me digan como hago para configurar el micro y usar el cristal de 4MHZ interno por favor...
-
Hola, mira todavía no utilice ese PIC pero leyendo el Datasheet vi que para configurar, actvar y desactivar las entradas analogicas utiliza los registros CMCON y VRCON en las direcciones 1Fh y 9Fh respectivamente... en principio por lo que lei por arriba poniendo CMCON a 0xFF y VRCON a 0x00, estarias usando el puerto A como digital...
pero de todos modos leete el este Datasheet (http://ww1.microchip.com/downloads/en/DeviceDoc/40044G.pdf)
saludos
-
no puedo dejar de usar ese pic por que es el que me piden para la universidad... tengo que usarlo ajuro....
-
.
Para descativar los comparadores analógicos hay que guardar 0x07 en el registro CMCON, y te deja los pines del puerto A como digitales.
Para usar el cristal interno de 4MHz, a la hora de programarlo tenés que seleccionar intRC en el IC-Prog (o el programa que uses para programar el uC)
¡Saludos!
-
Tenes el siguiente enlace (http://www.todopic.com.ar/foros/index.php?topic=24720.0) que puede servirte de ayuda.
Saludos!
-
Tenes el siguiente enlace (http://www.todopic.com.ar/foros/index.php?topic=24720.0) que puede servirte de ayuda.
Saludos!
Gracias por el link siempre estoy pendiete de el me a ayudado mucho....
mira estoy copilando con mplab y me da 0 errores pero tengo estas advertencias...
Message[302] C:\MICRO\PRACT1.ASM 23 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\MICRO\PRACT1.ASM 25 : Register in operand not in bank 0. Ensure that bank bits are correct.
como puedo solucionar eso....
-
Hace doble click en el mensaje y te señala la linea que tiene el inconveniente, luego asegura si estas trabajando en el banco correcto el registro tratado.
Saludos!
-
Amigos necesito una ayuda con respecto a un programa que estoy tratando de hacer...
Tengo que ir comparando los valores de una fotoresistencia.... con 5 comparadores de ventana que van conectados desde RA0 A RB4 dependiendo de cual de estas entradas este activa debo detectar un cruce por 0 que se encuentra en PORTB,1 Y sacar por PORTB,0 una serie de retardos para activar unos SCR que hacen el control de potencia de un bombillo y de un motor... pero eso es lo de menos... el problema que tengo es que cuando voy a probar con el proteus 6.9 sp3 si me hace lo que necesito siempre me da error o me salen los puertos del pic16f628 desactivados... y no puedo avanzar con la practica... saben como resolver este problema o como puedo hacerlo....
esta es una explicacion un poco mas sencilla de lo que debe hacer el programa para ver si me entienden la idea
Si PORTA,0 esta activo llama a la rutina SEC1
SEC1 DETECTA EL CRUCE POR CERO proveniente del PORTB,1 si esta activo.... entonces
hace una secuencia de retardos.... y eso tiene que hacerlo siempre hasta que
PORTA,1 ya no este activo....
No se si me entienden de todas maneras aqui dejo el codigo ok
; **** Encabezado ****
LISt p=16F628A
#include P16F628A.inc
__CONFIG 0x3F88
;**** Definicion de variables ****
RET equ 20h
RET1 equ 21h
RET2 equ 22h
RET3 equ 23h
RET4 equ 24h
RET5 equ 25h
RET6 equ 26h
RET7 equ 27h
CONT equ 28h
#DEFINE BOTON PORTA,0
#DEFINE BOTON1 PORTA,1
#DEFINE BOTON2 PORTA,2
#DEFINE BOTON3 PORTA,3
#DEFINE BOTON4 PORTA,4
;**** Configuracion de puertos ***
Reset
org 0x00 ; Aqui comienza el micro.-
goto Inicio ; Salto a inicio de mi programa.-
org 0x05 ; Origen del codigo de programa.-
Inicio
bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.-
movlw b'11111' ; Muevo 11111 a W.-
movwf TRISA ; Cargo en TRISA.-
movlw b'11111101'
movwf TRISB
bcf STATUS,rp0 ; Paso del Banco 1 al Banco 0
;**** Control de Led ****
BUCLE
BTFSS BOTON
GOTO BUCLE1
BTFSS PORTB,0
GOTO $-1
CALL SEC1
GOTO BUCLE
SEC1
BCF PORTB,1
CALL RET25
BSF PORTB,1
CALL RET75
RETURN
BUCLE1
BTFSS BOTON1
GOTO BUCLE
CALL SEC2
GOTO BUCLE1
SEC2
BTFSS PORTB,1
GOTO $-1
BCF PORTB,0
CALL RET75
BSF PORTB,0
CALL RET25
RETURN
; ********* RETARDO DEL 25% DE LA ONDA *******
RET0
MOVLW .166
MOVFW CONT
DECFSZ CONT,1
GOTO $-1
RETURN
; ********* RETARDO DEL 25% DE LA ONDA *******
RET25
movlw .7
movwf RET
PLoop1 movlw .222
movwf RET1
PLoop2 clrwdt
decfsz RET1,1
goto PLoop2
decfsz RET,1
goto PLoop1
clrwdt
return
; ********* RETARDO DEL 50% DE LA ONDA *******
RET50
movlw .35
movwf RET2
PLoop3 movlw .23
movwf RET3
PLoop4 clrwdt
clrwdt
decfsz RET3,1
goto PLoop4
decfsz RET2,1
goto PLoop3
return
; ********* RETARDO DEL 75% DE LA ONDA *******
RET75
movlw .5
movwf RET4
PLoop5 movlw .83
movwf RET5
PLoop6 clrwdt
clrwdt
decfsz RET5,1
goto PLoop6
decfsz RET4,1
goto PLoop5
return
; ********* RETARDO DEL 100% DE LA ONDA *******
RET100
movlw .29
movwf RET6
PLoop7 movlw .61
movwf RET7
PLoop8 clrwdt
clrwdt
decfsz RET7,1
goto PLoop8
decfsz RET6,1
goto PLoop7
return
;-------------------------------------------------------------
end
-
acuerdate de conectar el pin Mclr a vcc cuando simules y en físico también, sino el micro siempre está en reset
-
.
Message[302] C:\MICRO\PRACT1.ASM 23 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\MICRO\PRACT1.ASM 25 : Register in operand not in bank 0. Ensure that bank bits are correct.
Esto es un mensaje de advertencia más que un mensaje de error y el MPASM lo larga siempre que uses registros fuera del banco 0. Si no te interesa que aparezcan, podés poner al principio del programa la línea
ERRORLEVEL -302
Que suprimirá las molestas advertencias.
Saludos.