TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: TRUEMALKAVIAN en 12 de Julio de 2011, 20:04:11
-
:lol: Buenos dias primero que nada queria darle gracias por excelente foro que tienen aqui.
les presento un pequeño problema que e tenido . hice un progrma de simulacion de carrera (practicamente un cronometro) con un boton de salida (el inicio de la cuenta) uno de llegada etc etc.... pero al compilaro (aunque la compilacion diga que fue exitosa) me da una señal de "waring" de que el banco de ejecion de tal linea de codigo es incorrecto debido a que es un programa muy extenso (ya que lo hice sin el timer0 , por cuestiones didacticas ) entonces realice un programa mas sencillo para ir probando de a poco .
el cual fue un programa de encender led en el puerto B en forma decreciente (binario ) desde un numero x. (pero me sigue dando el mismo error al compilar
aqui le muestro el codigo:
LIST P=16F84A
#include <P16F84A.inc>
;
__CONFIG _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
;---------------------------------------------------------------
ORG 0X00
GOTO INICIO
ORG 0X04
GOTO INTERRUP
;---------------------------------------------------------------
BANCO00 MACRO
BCF STATUS,RP0
ENDM
BANCO01 MACRO
BSF STATUS,RP0
ENDM
;----------------------------------------------------------------
DELAY1 EQU 0X0F
DELAY2 EQU 0X10
DELAY3 EQU 0X11
SALIDA EQU 0X12
;---------------------------------------------------------------
INICIO
BANCO0 CLRW
CLRF TRISB
BANCO1 CLRW
ALLA MOVLW 0XAA
MOVWF SALIDA
AQUI CALL TIEMPO
DECFSZ SALIDA,1
CLRW
MOVFW SALIDA
MOVWF PORTB
GOTO AQUI
GOTO ALLA
TIEMPO CLRW
MOVLW 0XFA
MOVWF DELAY1
MOVWF DELAY2
CLRW
MOVLW 0X16
MOVWF DELAY3
CLRW
BUCLE00 CLRW
MOVLW 0XFA
MOVWF DELAY1
MOVWF DELAY2
GOTO BUCLE1
BUCLE0 CLRW
MOVLW 0XFA
MOVWF DELAY1
BUCLE1 DECFSZ DELAY1,1
GOTO BUCLE1
BUCLE2 DECFSZ DELAY2,1
GOTO BUCLE0
BUCLE3 DECFSZ DELAY3,1
GOTO BUCLE00
RETURN
INTERRUP NOP
ENDI
END
;-------------------------------------------------------------------------
(http://C:\PRUEBA\compilacion.png)
en caso de que no se vea la imagen le dejo los datos en txt
_--------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\PRUEBA\PRUEBA.err".
Clean: Deleted file "C:\PRUEBA\PRUEBA.cod".
Clean: Deleted file "C:\PRUEBA\PRUEBA.hex".
Clean: Deleted file "C:\PRUEBA\PRUEBA.lst".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "PRUEBA.ASM" /l"PRUEBA.lst" /e"PRUEBA.err" /d__DEBUG=1
Message[302] C:\PRUEBA\PRUEBA.ASM 28 : Register in operand not in bank 0. Ensure that bank bits are correct.
Warning[207] C:\PRUEBA\PRUEBA.ASM 64 : Found label after column 1. (ENDI)
Warning[205] C:\PRUEBA\PRUEBA.ASM 66 : Found directive in column 1. (END)
Loaded C:\PRUEBA\PRUEBA.cod.
----------------------------------------------------------------------
Debug build of project `C:\Users\alg\Desktop\prueeeba\prueba.mcp' succeeded.
Preprocessor symbol `__DEBUG' is defined.
Tue Jul 12 18:33:10 2011
--------------------------------------------------------
esos son los errores que les mencion , al simularlo el proteus (v8.10) no me corre el programa
(http://C:\PRUEBA\proteus.png)
espero su ayuda :D
saludos
-
Si no me equivoco, el "Message[302]" sale siempre, es para que estés seguro de estar trabajando con los bancos correctos. No representa un error en si mismo. A mí me ha salido dicho mensaje sobre un código que estaba bien escrito.
Creo que existe una macro llamada "Banksel" que se encarga justamente de seleccionar el banco adecuado. Tal vez haciendo uso de ella desaparezca el mensaje. Sería cuestión de leer en la ayuda a ver que aparece.
-
gracias angelgris .... pero si todo va bien por que no puedo simularlo en proteus ....al comenzar la simulacion simplemente no hace nada :( :( :(
-
gracias angelgris .... pero si todo va bien por que no puedo simularlo en proteus ....al comenzar la simulacion simplemente no hace nada :( :( :(
le pusiste la pata del mclr a vdd en proteus?
-
No estás configurando correctamente el TRISB, ya que no seleccionas el banco correcto. Has creado unas Macros que son BANCO00 y BANCO01, pero luego colocas después de inicio, BANCo0 y BANCO1. Chequea eso. El TRISB está en el banco1. Puedes subir el esquema de proteus además del código?
-
la imagen esta adjuntada por que nos e aun como subir fotos aqui :oops: jeje en cuanto a la repuesta de pablo, segun el datasheet que tengo del pic616f84a esl tris esta en el banco cero , pero de toda forma segui tu consejo e lo acomode como dijistes y sigue indicando el mismo ptoblema
(http://test)
-
Mira bien el datasheet, el TRISB está en el BANCO1. El PORTB está en el BANCO0
Para no tener problemas con la selección del banco correcto, al acceder a los registros prueba usando
BANKSEL registro
por ejemplo
BANKSEL TRISB
o
BANKSEL PORTB
según corresponda, como te comentó AngelGris
Esos Warning que te da el Mplab son normales, es para advertir que verifiques que estás usando el banco correcto.
Con respecto al esquema de ISIS. Esos leds no son animados en la simulación, por lo tanto no vas a ver si encienden o apagan, ya que no lo hacen.
Busca por "led animated" en la librería del ISIS, aparecen LED-GREEN,LED-RED y LED-BLUE.
-
Muchas gracias a todos ya lo acomode con el banksel y lo revise los bancos de memoria simulando en el mplab y funciona bien. en cuanto aproteus aun tenia problemas pero ya funciona creo que era que no habia activado lo que se llama hiddens pins (no se si sea eso o sea un error de novato :oops: ) pero en conjunto de borrar el pic y poner uno nuevo en conjunto con el hiddens pos funciono jejejeje :-/ :-/ :-/ :-/
Gracias a todo por su paciencia con los "nuevos " como yo :D
pd: ya quite los led e hice una tabla de la verdad para un lcd de 7 segementos y ahora cuenta del 1 al 0 de marravilla . gracias a todos :D
ahora al infinito y mas pa ca :D