Muy buenas, realmente tengo buenas expectativas sobre este foro.
Les contaré mi triste historia (puedes saltarte a la duda buscando "*****"):
Hoy, escribo a 25 de Abril del 2020, por si es necesario decirlo (Es mi primera publicación), soy un estudiante de preparatoria en Mexico y lo que necesito entender es cómo programar en ensamblador.
He tenido un maestro en mi experiencia muy malo (aunque creo que de manera sarcástica todo mi grupo lo alaba por ello).
Basta con decir que no explica casi nada, por lo menos no este semestre.
No exagero, de verdad, estoy en el curso de Mecatrónica (vaya lio en el que me metí xd) y lo que debíamos de ver este momento era la programación de microcontroladores PIC, en assembler qué si no.
Y pues la primera evaluación fue sobre la composición física de microprocesadores y microcontroladores.
En la segunda unidad tocaba programación, primeras semanas todo bien, aunque honestamente lo mas cercano a escribir un código fue copiar uno EXACTAMENTE como venía en una presentación borrosa de powerpoint, cualquier error era morir tratando de ver que cero no pusiste y por su puesto, sin entender absolutamente nada. Y bueno, entra el COVID 19 en acción .
Nos encargó nueve prácticas en simulación sin saber ni una miseria de cómo funcionaba el assembler, algunos compañeros ni sabían instalar MPLAB o Proteus.
Ni siquiera sé exactamente qué quiere que haga cada cosa pero ya que.
Todo lo que he aprendido hasta ahora fue de manera autodidacta, así que puede tener un sin fin de errores.
*************
Ahora bien, ¿Por que no funciona?, MPLAB simplemente no detecta el cambio de banco, cualquier clase de error sería de gran ayuda que me lo hicieran saber.
Es una practica en simulación MUY fácil, pero no tengo gran idea de lo que hago, eso sí, todo el programa lo creé desde cero sin copiar el asm de otros.
Empieza en el renglón 4, Aparecen triángulos amarillos desde "LIST...." hasta "goto inicio", La simulación no funciona de ninguna manera, inicia dando señal sin presionar nada en un pin que ni siquiera se configura de salida, de estar correcto el programa, claro.
Las propiedades del proyecto indican que es para el PIC16F877A, justo el que tiene el Include del programa.
Este es el mensaje de error, si bien si compila, no hace lo que debe y marca que los operandos no están en el banco 0, justo despues de cambiarme al banco 1 para buscarlo ahí y no en el 0, no entiendo por qué ocurre.
Les contaré mi triste historia (puedes saltarte a la duda buscando "*****"):
Hoy, escribo a 25 de Abril del 2020, por si es necesario decirlo (Es mi primera publicación), soy un estudiante de preparatoria en Mexico y lo que necesito entender es cómo programar en ensamblador.
He tenido un maestro en mi experiencia muy malo (aunque creo que de manera sarcástica todo mi grupo lo alaba por ello).
Basta con decir que no explica casi nada, por lo menos no este semestre.
No exagero, de verdad, estoy en el curso de Mecatrónica (vaya lio en el que me metí xd) y lo que debíamos de ver este momento era la programación de microcontroladores PIC, en assembler qué si no.
Y pues la primera evaluación fue sobre la composición física de microprocesadores y microcontroladores.
En la segunda unidad tocaba programación, primeras semanas todo bien, aunque honestamente lo mas cercano a escribir un código fue copiar uno EXACTAMENTE como venía en una presentación borrosa de powerpoint, cualquier error era morir tratando de ver que cero no pusiste y por su puesto, sin entender absolutamente nada. Y bueno, entra el COVID 19 en acción .
Nos encargó nueve prácticas en simulación sin saber ni una miseria de cómo funcionaba el assembler, algunos compañeros ni sabían instalar MPLAB o Proteus.
Ni siquiera sé exactamente qué quiere que haga cada cosa pero ya que.
Todo lo que he aprendido hasta ahora fue de manera autodidacta, así que puede tener un sin fin de errores.
*************
Ahora bien, ¿Por que no funciona?, MPLAB simplemente no detecta el cambio de banco, cualquier clase de error sería de gran ayuda que me lo hicieran saber.
Es una practica en simulación MUY fácil, pero no tengo gran idea de lo que hago, eso sí, todo el programa lo creé desde cero sin copiar el asm de otros.
Empieza en el renglón 4, Aparecen triángulos amarillos desde "LIST...." hasta "goto inicio", La simulación no funciona de ninguna manera, inicia dando señal sin presionar nada en un pin que ni siquiera se configura de salida, de estar correcto el programa, claro.
Las propiedades del proyecto indican que es para el PIC16F877A, justo el que tiene el Include del programa.
Código:
;Intermitencia usando el temporizador TMR0 a modo de oscilador
LIST p=16F877A ;Identifica el PIC a usar
INCLUDE "p16F877a.INC" ;Libreria del PIC
__CONFIG 0x1F39
org 0
goto Inicio
Inicio
bsf STATUS,RP0 ;Establecer puertos
movlw b'111111'
movwf TRISA
bcf TRISB,0 ;Led de salida, apreciable mejor con osciloscopio
bcf STATUS,RP0
goto Tiempos
Tiempos ;Tiempo a contar segun la entrada activada
Tiempo1ms
btfss PORTA,0 ;Testeo, ¿PORTA0 esta activa?
goto Tiempo10ms ;No, prueba con el siguiente tiempo
bsf STATUS,RP0 ;Si, continua
movlw b'11010100'
movwf OPTION_REG ;Cambio a prescaler de 32, en base a calculos con
bcf STATUS,RP0 ;cristal de 4 mhz
bsf PORTB,0
movlw d'32' ;Valor segun calculos para cuenta de 1ms
movwf TMR0
call Testeo ;Llama a subrutina de testeo
goto Tiempo1ms ;Vuelve a activar si aun PORTA0 esta encendida o
;busca otra entrada activada
Tiempo10ms
btfss PORTA,1 ;Testeo, ¿PORTA1 esta activa?
goto Tiempo50ms ;No, prueba con el siguiente tiempo
bsf STATUS,RP0 ;Si, continua
movlw b'11010101' ;Cambio a prescaler de 64, en base a calculos con
movwf OPTION_REG ;cristal de 4mhz
bcf STATUS,RP0
bsf PORTB,0
movlw d'157' ;Valor segun calculos para cuenta de 10ms
movwf TMR0
call Testeo ;Llama a subrutina de testeo
goto Tiempo10ms ;Vuelve a activar si aun PORTA1 esta encendida o
;busca otra entrada activada
Tiempo50ms
btfss PORTA,2 ;Testeo, ¿PORTA2 esta activa?
goto Tiempos ;No, regresa y prueba con el primer tiempo
bsf STATUS,RP0 ;Si, continua
movlw b'11010100' ;Cambio a prescaler de 32, en base a calculos con
movwf OPTION_REG ;cristal de 4mhz
bcf STATUS,RP0
bsf PORTB,0
movlw d'157' ;Valor segun calculos para cuenta de 10ms
movwf TMR0
call Testeo ;Llama a subrutina de testeo
goto Tiempo50ms ;Vuelve a activar si aun PORTA2 esta encendida o
;busca otra entrada activada
Testeo
btfss INTCON,2 ;¿Se ha desbordado? Observa el registro INTCON,TMR0I
goto Testeo ;No, continua testeando
bcf INTCON,2 ;Si, borra registro y apaga LED
bcf PORTB,0
return
END
CLEAN SUCCESSFUL (total time: 137ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/LUISALBERTO/Desktop/Practicas PIC/Practica 7.X'
make -f nbproject/Makefile-default.mk dist/default/production/Practica_7.X.production.hex
make[2]: Entering directory 'C:/Users/LUISALBERTO/Desktop/Practicas PIC/Practica 7.X'
"C:\Program Files (x86)\Microchip\MPLABX\v5.30\mpasmx\mpasmx.exe" -q -p16f877a -l"build/default/production/Temporizador.lst" -e"build/default/production/Temporizador.err" -o"build/default/production/Temporizador.o" "Temporizador.asm"
Warning[205] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 5 : Found directive in column 1. (LIST)
Warning[205] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 6 : Found directive in column 1. (INCLUDE)
Warning[205] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 8 : Found directive in column 1. (__CONFIG)
Warning[205] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 10 : Found directive in column 1. (org)
Warning[203] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 11 : Found opcode in column 1. (goto)
Message[302] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 16 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 17 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 27 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 41 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 55 : Register in operand not in bank 0. Ensure that bank bits are correct.
Warning[205] C:\USERS\LUISALBERTO\DESKTOP\PRACTICAS PIC\PRACTICA 7.X\TEMPORIZADOR.ASM 71 : Found directive in column 1. (END)
"C:\Program Files (x86)\Microchip\MPLABX\v5.30\mpasmx\mplink.exe" -p16f877a -w -m"dist/default/production/Practica 7.X.production.map" -z__MPLAB_BUILD=1 -odist/default/production/Practica_7.X.production.cof build/default/production/Temporizador.o
MPLINK 5.09, LINKER
Device Database Version 1.49
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0
MP2HEX 5.09, COFF to HEX File Converter
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0
make[2]: Leaving directory 'C:/Users/LUISALBERTO/Desktop/Practicas PIC/Practica 7.X'
make[1]: Leaving directory 'C:/Users/LUISALBERTO/Desktop/Practicas PIC/Practica 7.X'
BUILD SUCCESSFUL (total time: 2s)
Loading code from C:/Users/LUISALBERTO/Desktop/Practicas PIC/Practica 7.X/dist/default/production/Practica_7.X.production.hex...
Loading completed