Created
December 21, 2010 01:54
-
-
Save charliexr/749360 to your computer and use it in GitHub Desktop.
contador_0_a_9_gpsim
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; | |
;Contador de 0 a 9 que muestra estos digitos en un display 7 segmentos conectado al puerto A del PIC | |
;PIC16F628A | |
;20/12/2010 | |
;http://charliexray.blogspot.com | |
; | |
;Para simular con gpsim. No fue probado en la practica. | |
; | |
;======================================================================== | |
;PIC a utilizar | |
;======================================================================== | |
list p = 16F628A | |
#include <p16F628A.inc> | |
;======================================================================== | |
;configuracion de fusibles | |
;======================================================================== | |
__CONFIG _WDT_OFF & _PWRTE_OFF & _INTOSC_OSC_NOCLKOUT & _MCLRE_OFF & _BOREN_ON & _LVP_OFF & _DATA_CP_OFF & _CP_OFF | |
;======================================================================== | |
;reserva de registros en memoria | |
;======================================================================== | |
dig_act equ 0x20 ;registro para almacenar valor del dígito mostrado | |
contador equ 0x21 ;un contador | |
ORG 0x00 ;inicio luego de un reset | |
;======================================================================== | |
;configuracion de registros | |
;======================================================================== | |
;me paso al banco1 | |
bcf STATUS,RP1 | |
bsf STATUS,RP0 | |
clrf TRISA ;puerto A como salida | |
;vuelvo al banco0 | |
bcf STATUS,RP1 | |
bcf STATUS,RP0 | |
;deshabilito comparadores analogicos | |
;movlw 0x07 | |
;movwf CMCON | |
;======================================================================== | |
;Programa Principal | |
;======================================================================== | |
ORG 0x05 | |
ppal ;programa principal | |
clrf dig_act ;cargo valor cero al registro del digito actual | |
;inicializo el contador con el valor 10 | |
movlw b'0001010' ;cargo el valor 10 en el registro W | |
movwf contador ;cargo valor de W en registro contador | |
bucle ;muestro los digitos del 0 al 9 | |
call mostrar_dig ;muestro el dígito actual y lo incremento | |
decfsz contador,1 ;si contador = 0, se salta la siguiente instruccion | |
goto bucle | |
goto ppal ;vuelvo a pppal. | |
mostrar_dig ;subrutina que muestra el dígito actual y lo incrementa en uno | |
movf dig_act,W ;cargo el valor del registro dig_act en el registro de trabajo W | |
call tabla_conv ;obtengo el equivalente 7segmentos a ese digito | |
movwf PORTA ;muestro el valor obtenido de la tabla | |
incf dig_act ;Incremento en uno el dígito actual | |
return | |
tabla_conv ;tabla de conversion a 7segmentos | |
addwf PCL,1 ;agrego un offset del valor de W al Program Counter | |
retlw b'00111111' ;0 en 7 segmentos | |
retlw b'00000110' | |
retlw b'01011011' | |
retlw b'01001111' | |
retlw b'01100110' | |
retlw b'01101101' | |
retlw b'01111100' | |
retlw b'00000111' | |
retlw b'01111111' | |
retlw b'01100111' ;9 en 7 segmentos | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment