Contador decimal módulo 10 ascendente ( 0123456789 ) salida por display de 7 segmentos ( numérico )
LIST P=16F877A INCLUDE <P16F877A.INC> CBLOCK 0X20 ;Area de variables T1 ;Variables para los tiempos de retard T2 T3 CUENTA ;Variables para el conteo ENDC ORG 0X2007 ;Configuracion del PIC DW 0X3F7A ORG 0X0000 ;Direccion inicial de la memoria del programa BSF STATUS,RP0 ;Banco 1 BCF STATUS,RP1 MOVLW B'00000000' ;PortB de salida a LEDs MOVWF TRISB BCF STATUS,RP0 ;BANCO O BCF STATUS,RP1
INICIO: CLRF CUENTA OTRO: MOVFW CUENTA MOVWF PORTB CALL DELAY INCF CUENTA MOVFW CUENTA XORLW .10 BTFSS STATUS,Z ;Es igual al limite de la cuenta GOTO OTRO ;No, sigue la cuenta GOTO INICIO ;Si, vuelve a empezar
DELAY: MOVLW .10 ;1 seg. MOVWF T3
LAZO3: CALL T100MS DECFSZ T3,F GOTO LAZO3 RETURN
T100MS: MOVLW .100 ;Tiempo de 100 mseg. MOVWF T2 LAZO2: CALL T1MS DECFSZ T2,F GOTO LAZO2 RETURN
T1MS: MOVLW .250 ;Tiempo de 1 mseg. MOVWF T1 LAZO1: NOP DECFSZ T1,F RETURN END















