Hola, bueno pues la cuestion es esta, estoy trabajando con el Pic 16F819, hice el programa que les adjunto (un contador de cero a 99 con un botón de RESET y un switch para que cuente de forma regresiva), y lo simula muy bien, el problema es que al quemar el PIC, y ponerlo a funcionar este simplemente no hace nada.
Ya cheque la configuración con el MPLab, y todo bien.
Tambien probe las conexióne al display de 7 segmentos (use el de catodo común) y todo bien.
No se que podria ser, apenas estoy aprendiendo a usar los micros.
ojala alguien me pueda ayudar.
Adjunto el programa en .asm
Ya cheque la configuración con el MPLab, y todo bien.
Tambien probe las conexióne al display de 7 segmentos (use el de catodo común) y todo bien.
No se que podria ser, apenas estoy aprendiendo a usar los micros.
ojala alguien me pueda ayudar.
Adjunto el programa en .asm
PHP:
#include p16F819.inc
errorlevel 2
__CONFIG 3F18H
INICIO
C1 equ 20H
UNI equ 21H
DEC equ 22H
bsf STATUS,5
bcf STATUS,6
movlw d'7'
movwf ADCON1
movlw b'10000111'
movwf OPTION_REG
movlw b'01110100'
movwf OSCCON
movlw b'00100000'
movwf TRISA
movlw b'00100000'
movwf TRISB
bcf STATUS,5
goto PROGRAMA
PROGRAMA
btfss TRISA,5 ; Compara si RB5 está activado para reiniciar o no la cuenta
goto REVERSA ;
goto REINICIAR ;ACTIVADO
REINICIAR
clrf UNI
clrf DEC
call CONTINUAR
goto PROGRAMA
REVERSA ; Compara si RA5 está activado para sumar o restar
btfss TRISB,5
goto SUMADOR
goto RESTADOR
RESTADOR
call TIMER
clrf C1
movlw d'0'
subwf UNI,w
btfss STATUS,Z
goto LINEA
goto SIGUIENTE
LINEA
decf UNI
call CONTINUAR
goto PROGRAMA
SIGUIENTE
movlw d'9'
movwf UNI
movlw d'0'
subwf DEC,w
btfss STATUS,Z
goto LINEA2
goto SIGUIENTE2
LINEA2
decf DEC
call CONTINUAR
goto PROGRAMA
SIGUIENTE2
movlw d'9'
movwf DEC
call CONTINUAR
goto PROGRAMA
SUMADOR
call TIMER
clrf C1
movlw d'10'
subwf UNI,w
btfss STATUS,Z
goto LABEL
goto LABEL2
LABEL
call CONTINUAR
incf UNI
goto PROGRAMA
LABEL2
call DECIMALES
call CONTINUAR
goto PROGRAMA
CONTINUAR
movf UNI,w
call COMPARADOR
call IMPRIMIRA
movf DEC,w
call COMPARADOR
call IMPRIMIRB
return
DECIMALES
incf DEC
clrf UNI
movlw d'10'
subwf DEC,w
btfss STATUS,Z
goto NEXT
clrf DEC
NEXT
return
IMPRIMIRA
movwf PORTB
return
IMPRIMIRB
movwf PORTA
return
COMPARADOR
addwf PCL,f
goto CERO
goto UNO
goto DOS
goto TRES
goto CUATRO
goto CINCO
goto SEIS
goto SIETE
goto OCHO
goto NUEVE
CERO
movlw b'01011111'
return
UNO
movlw b'00000110'
return
DOS
movlw b'10011011'
return
TRES
movlw b'10001111'
return
CUATRO
movlw b'11000110'
return
CINCO
movlw b'11001101'
return
SEIS
movlw b'11011101'
return
SIETE
movlw b'00000111'
return
OCHO
movlw b'11011111'
return
NUEVE
movlw b'11001111'
return
TIMER
BTFSS TMR0,7
GOTO TIMER
INCF C1
CLRF TMR0
BTFSS C1,6
GOTO TIMER
RETURN
END