TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: kevon0012 en 29 de Mayo de 2021, 14:02:11
-
Tengo este codigo en ensamblador donde necesito guardar el numero de veces que se oprime los DOS botones pero no se como guardar esos datos para que se acumule para saber cual es mayor,menor o igual gracias
LIST P=16F84A, ; usar PIC 16F84A
#include <p16f84A.inc>
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC ; code protec off
; power up timer on
; watchdog off
; osc XT
;Variable
Numero EQU B'00000001' ;PORTA -> 5bits
Numero2 EQU B'00000010'
;CODIGO
ORG 0
INICIO
BSF STATUS,RP0
CLRF TRISB ;PORTB todo como salida
MOVLW B'00011111'
MOVWF TRISA ; PORTA todo como entrada
BCF STATUS,RP0
START
INCF Numero,W
; Si la resta = positiva, C=1 Z=0
; Si la resta = cero, C=1 Z=1
; Si la resta = negativo, C=0 Z=0
MOVLW Numero ; Numero -> W
SUBWF PORTA,W ; PORTA - Numero = se almacena en W
MOVLW B'00000000'; PORTA < Numero Aqui se quedan prendidos
BTFSC STATUS,C
MOVLW B'00000010'; PORTA > Numero
BTFSC STATUS,Z
MOVLW B'00000001'; PORTA = Numero
MOVWF PORTB; W -> PORTB
GOTO START
END
-
Primero que nada ya hiciste un post por lo mismo... Un programa que lee los dos botones, y enciende un led segun si es mayor, menor o igual. En ese post te respondi con el programa para su comparacion, y de ahi podes sacar exactamente lo que estas pidiendo ahora.
no se como guardar esos datos para que se acumule para saber cual es mayor,menor o igual gracias
Guardarlo en algun registro (espacio de la RAM libre para este uso)... eso es todo lo que tenes que hacer. El problema es que no conoces el funcionamiento del PIC, ni tampoco del compilador, a pesar que te voy a dar algunos puntos, te sugiero que busques ejemplos y estudies que es lo que se hizo en esos ejemplos.
W es un registro que lo vas a usar en la mayoría de las operaciones... Hacer:
INCF Numero,W
Hace que Numero +1 se guarde en W, pero Numero queda con el mismo valor.
Si queres que se incremente numero entonces lo tense que guardar en el mismo registro, es decir
INCF Numero,F
Luego si necesitas llevarlo a otro lado lo podes mover a W. Pero OJO, asi como tenes el programa vas a estar modificando la direccion 0x01 de la RAM, que es un registro que posee el PIC para su funcionamiento.
--------------------
Si queres mover lo que contiene el registro,, es decir lo que contiene Numero, tenes que usar MOVF Numero, W
MOVLW Numero
La palabra numero en realidad es un sustituto de b'00000001'
----------------------
Las direcciones de memoria RAM libres comienzan desde 0x0C en el PIC16F84A, observar el Datasheet del micro.