Autor Tema: contador del 0 al 99  (Leído 140 veces)

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

Desconectado itzeannet

  • PIC10
  • *
  • Mensajes: 1
contador del 0 al 99
« en: 05 de Junio de 2019, 03:22:54 »
hola, tengo un problema con mi contador, no logra aparecer las decenas, estoy trabajando por medio de interrupciones con tmr0 y por RB0 con el PIC16F648. El programa va contando del 0 al 99 hasta que se aprieta un botón este se reinicia. aquí les dejo el programa, espero y puedan ayudarme.

__CONFIG 0X3F50

STATUS   EQU   0X03
PORTA   equ   0x05
TRISA   EQU   0X85
PORTB   EQU   0X06
TRISB   EQU   0X86
INTCON   EQU   0X0B
OPT_REG   EQU   0X81
TMR0   EQU   0X01
PCL      EQU   0X02
REPETICION   EQU   0X21
UNIDAD    EQU   0X22
DECENA   EQU   0X23



ORG 0X00
GOTO INICIO

ORG 0X04
GOTO SUB_INTER


INICIO          
   BSF      STATUS,5
   MOVLW   0X01
   MOVWF   TRISB
   CLRF   TRISA
   
   MOVLW   0X44
   MOVWF   OPT_REG
   BCF      STATUS,5
   MOVLW   0XB0
   MOVWF   INTCON
   MOVLW   0X63
   MOVWF   TMR0


      CLRF   DECENA
      CLRF   UNIDAD
      CLRF   REPETICION

UN
   NOP
   NOP
   GOTO UN
   
   
NUMERO
   ADDWF   PCL,1
   RETLW   0X7E
   RETLW    0X0C
   RETLW   0XB6
   RETLW   0X9E
   RETLW   0XCC
   RETLW   0XDA
   RETLW   0XFA
   RETLW   0X0E
   RETLW   0XFE
   RETLW   0XCE
   
   
SUB_INTER
   BTFSC    INTCON,1
   GOTO   INT_RB0
   GOTO   INT_TM
   
INT_TM
   MOVLW   0X63
   MOVWF   TMR0
   BCF      INTCON,2
;   BTFSS   PORTA,0
   GOTO    DECENA_1
   GOTO   UNIDAD_1
   
UNIDAD_1
   MOVLW   0X02
   MOVWF   PORTA
   MOVF   UNIDAD,0
   CALL   NUMERO
   MOVWF   PORTB
   GOTO   OTRO
   
DECENA_1
   MOVLW   0X01
   MOVWF   PORTA
   MOVF   DECENA,0
   CALL   NUMERO
   MOVWF   PORTB
   
OTRO
   INCF   REPETICION
   MOVF   REPETICION,0
   SUBLW   0XC8
   BTFSS   STATUS,2
   RETFIE
   
   CLRF   REPETICION
   INCF   UNIDAD, 1
   MOVF   UNIDAD,0
   SUBLW   0X0A
   BTFSS   STATUS,2
   RETFIE
   
   CLRF   UNIDAD
   INCF   DECENA,1
   MOVF   DECENA,0
   SUBLW   0X0A
   BTFSS   STATUS,2
   RETFIE
   
   CLRF   DECENA   
   RETFIE
   

INT_RB0
   BCF      INTCON,1
   CLRF   UNIDAD
   CLRF   DECENA
   CLRF   REPETICION
   RETFIE

   
END
   
« Última modificación: 05 de Junio de 2019, 03:26:19 por itzeannet »

Desconectado elreypic2

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 971
Re:contador del 0 al 99
« Respuesta #1 en: 05 de Junio de 2019, 10:07:38 »
Que tal itzeannet,

Tu problema radica en que necesitas apagar los comparadores del puerto A , es decir definirlo como digital, ya que en este microcontrolador en particular el puerto A está definido como analógico por default. Lo que tienes que hacer es agregar la siguiente instrucción:

MOVLW   0X07
MOVWF   CMCON

Yo te recomiendo usar el archivo de definicones propio del MPASM para que no tengas que definir cada registro manualmente como lo estas haciendo. Lo que tu haces es esto:

STATUS   EQU   0X03
PORTA   equ   0x05
TRISA   EQU   0X85
PORTB   EQU   0X06
TRISB   EQU   0X86
INTCON   EQU   0X0B
OPT_REG   EQU   0X81
TMR0   EQU   0X01
PCL      EQU   0X02

pero eso se puede evitar incluyendo el archivo .inc correspondiente, de la siguiente manera:

LIST  P=16F648A
INCLUDE "P16F648A.INC"

Esto lo agreagas al mero comienzo de tu código.

elreypic.

« Última modificación: 05 de Junio de 2019, 10:13:13 por elreypic2 »