;definicion de directivas para microcontrolador
__CONFIG _CP_ON & _WDT_OFF & _PWRTE_ON & _XT_OSC
list p=16f84a
#include<p16f84a.inc>
;definicion de constantes para retardo
cblock
d1
d2
endc
contador equ d'0' ;lleva la cuenta de las veces que se pulsa el boton para iluminar los leds
push1 equ d'1' ;identifica a RA0
;se configura el microcontrolador
org 0
bsf STATUS,RP0 ;cambiamos a BANCO1
clrf PORTB ;establece PORTB como salida
movlw b'11111111' ;establece PORTB como entrada
movwf PORTA
bcf STATUS,RP0 ;cambiamos a BANCO0
clrf PORTB ;estado inicial de PORTB (leds apagados)
;aqui inicia el programa del microcontrolador
;subrutina de retardo que evita rebote al pulsar boton (20 milisegundos)
retardo
movlw 0x9E
movwf d1
movlw 0x10
movwf d2
retardo_0
decfsz d1,f
goto $+2
decfsz d2,f
goto retardo_0
goto $+1
nop
return
end
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "practica1.asm" /l"practica1.lst" /e"practica1.err"
Message[313] C:\USERS\MARISOL\DESKTOP\PRACTICAS\PIC MICROCHIP\P1\PRACTICA1.ASM 15 : CBLOCK constants will start with a value of 0.
Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p16F84A "practica1.o" /z__MPLAB_BUILD=1 /o"practica1.cof" /M"practica1.map" /W /x
MPLINK 4.49, Linker
Device Database Version 1.14
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0
Loaded C:\Users\marisol\Desktop\practicas\pic microchip\p1\practica1.cof.
En realidad asi no se deben definir las variables o registros. Es decir no se debe hacer con CBLOCK
CBLOCK solamente asigna una constante a lo que se encuentra dentro:Código: ASM
cblock d1 d2 endc
Tu codigo no indica desde que valor comenzar asi que comienza en 0, por eso ese mensaje, entonces eso es lo mismo que hacer:
D1 equ 0
D2 equ 1
Luego cuando lo usas, eso apunta a la direccion de la memoria de datos en 0x00 y 0x01
Pero ese no es tu objetivo, esos registros estan ocupados con los registros INDF y TMR0.
Deberias tener unCódigo: ASM
Cblock 0x0C
Asi queda igual a
D1 equ 0x0C
D2 equ 0x0D
Desde esa direccion estan los registros de proposito general.
Eso va a quitarte el mensaje ese y te va a ahorrar los errores que te va a producir
La flecha verde imagino que decis es cuando lo "simulas", el cual te muestra cual es la instruccion que se va ejecutando.
A lo que me referia es al momento de obtener el archivo .HEX, que cuando lo genero la flecha verde apunta a la instrucción BSF debajo de la de ORG 0, es decir que, si despues de generar el .HEX lo que apunta la flecha verde es la primera instrucción que se ejecutara cuando se prenda el micro ya con el programa quemado.
Entonces el GOTO de 0x04 ocupa tambien el lugar 0x05, pero luego vos en 0x05 estas escribiendo un BCF. Y eso es un problema.
Hola! Saludos. Es la primera vez que escribo en el foroDeberías compartir tu proyecto para analizar que está sucediendo
Tengo un problema al simular: Estoy escribiendo en assembler y uso mplab x v3.15
El programa compila perfectamente y cuando hago click en "debug main project", entro en modo simulación sin problemas.
El problema es que cuando quiero avanzar a través del programa línea por línea (step into) no veo la "flecha verde" que indica las posición en el programa... A alguien le pasó esto?
Al observar el valor de PCL puedo confirmar que ésta se incrementa paso por paso, sin embargo, no me aparece la flecha verde para seguir el código.
Muchas gracias.
Saludos.
Luis.