Autor Tema: Comparador con botones en pic pic16f84a  (Leído 2019 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kevon0012

  • PIC10
  • *
  • Mensajes: 2
Comparador con botones en pic pic16f84a
« en: 25 de Mayo de 2021, 19:28:15 »
Hola a todos he estado trabajando en un programa en mplab ensamblador para comparar el numero de veces que se presiona un boton.

Si N(A0)> N(A1) encender el primer led,
Si N(A0)< N(A1) encender el segundo led,
Si N(A0)= N(A1) encender ambos led
Pero no encuentro como hacer la comparacion,gracias

Este es mi codigo

INCLUDE <P16F84A.INC>
CBLOCK 0x0C
PULSOSRA0
PULSOSRA1
ENDC
ORG 0
Inicializacion
Bsf STATUS,RP0
Clrf TRISB
Bcf STATUS,RP0
clrf PORTB
Clrf PULSOSRA0
Clrf PULSOSRA1
Bucle
Btfss PORTA,RA0
call RutinaRA0
Btfss PORTA,RA1
call RutinaRA1
Goto Bucle
RutinaRA0
Btfss PORTA,RA0
Goto RutinaRA0
Incf PULSOSRA0,F
movlw .1
Subwf PULSOSRA0,W
btfss STATUS,Z
Return
Bsf PORTB,RB0
Bcf PORTB,RB1
Clrf PULSOSRA0
return
RutinaRA1
Btfss PORTA,RA1
Goto RutinaRA1
Incf PULSOSRA1,F
movlw .1
Subwf PULSOSRA1,W
btfss STATUS,Z
Return
Bsf PORTB,RB1
Bcf PORTB,RB0
Clrf PULSOSRA1
return
END

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Comparador con botones en pic pic16f84a
« Respuesta #1 en: 26 de Mayo de 2021, 07:05:51 »
Mejor separar tu bucle o loop infinito de esta forma:

Código: ASM
  1. Bucle
  2.   CALL Incrementar
  3.   CALL Comparar
  4.   GOTO Bucle
  5.  
  6.  
  7. Incrementar
  8.     ;Pregunto por el pin A0 e incremento si es necesario PULSOS RA0
  9.     ;Pregunto por el pin A1 e incremento si es necesario PULSOS RA1
  10.     RETURN
  11.  
  12. Comparar
  13.    ;Aca comparo y muestro, solo necesito una resta para realizarlo
  14.    MOVF  PULSOSRA0, W
  15.    SUBWF PULSOSRA1, W     ;  W = PULSOSRA1 - PULSOSRA0
  16.    BTFSC  STATUS, C        ; Si C = 0 , PULSOSRA1 < PULSOSRA0
  17.    GOTO  Comparar_Iguales
  18.    BCF   LED1
  19.    BSF   LED0
  20.    RETURN
  21.  
  22. Comparar_Iguales
  23.    BTFSS  STATUS, Z      ; Aca nos queda que sea mayor RA1 o que sean iguales, entonces compruebo si son iguales
  24.    GOTO  Menor
  25.    BSF  LED0
  26.    BSF  LED1
  27.    RETURN
  28.  
  29. Menor
  30.    BCF  LED0
  31.    BSF  LED1
  32.    RETURN


Cosas que vas a tener que arreglar:

¿Qué pasa cuando el contador llega a 255?
Debido a que el micro es demasiado rápido, si lo haces en físico a esto, vas a tener problemas por que un solo toque del botón, tal ves entre 10, 100 veces a la rutina de incremento. ¿Cómo lo vas a solucionar?