; ARCHIVO SIETESEGMENTOS.ASM ; CODIGO FUENTE PARA EL MICROCONTROLADOR PIC16F628 ; MUESTRA el valor "4.79" EN UN DISPLAY DE 7 SEGMENTOS DE LEDS ; RA1 SE USA PARA DAR RESET AL CONTADOR DE COLUMNAS ; RA2 SE USA PARA INCREMENTAR EL CONTADOR DE COLUMNAS ; rB0...Rb7 se usan para encender cada uno de los segmentos ; VERSION PARA OSCILADOR CRISTAL 4 MHZ ; CPU configuration ; (It's a 16F628, XT OSCILADOR ; watchdog timer off, power-up timer on) processor 16f628 include __config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF #DEFINE BANCO0 BCF STATUS,RP0 #DEFINE BANCO1 BSF STATUS,RP0 J equ H'20' K equ H'21' L equ H'22' ;contador tabla org 0 BANCO1 CLRF VRCON CLRF TRISB ;PUERTO B SALIDAS CLRF TRISA ;PUERTO A SALIDAS BANCO0 MOVLW H'07' MOVWF CMCON CLRF PORTA CLRF PORTB malla2: clrf L call MR ;RA1 MANDA PULSO DE MASTER RESET AL CONTADOR malla1: movfw L call tabla movwf PORTB call CP0 ;RA2 MANDA PULSO PARA INCREMENTAR CONTADOR call retro incf L,f movfw L sublw 3 ;malla de 3 ciclos btfss STATUS,Z goto malla1 cero: goto malla2 MR: BSF PORTA,1 ;MASTER RESET AL CONTADOR CALL UNMILI ;RETRASO DE 1 MILISEGUNDO BCF PORTA,1 RETURN CP0: BSF PORTA,2 ;INCREMENTA COLUMNA CONTADOR CALL UNMILI ;RETRASO DE 1 MILISEGUND0 BCF PORTA,2 RETURN ; RETRASO DE 0.5 SEGUNDOS retro: movlw D'35' ;RUTINA RETRASO 10 MS movwf J ; J = w jloop: movwf K ; K = w kloop: decfsz K,f ; K = K-1, skip next if zero goto kloop decfsz J,f ; J = J-1, skip next if zero goto jloop return UNMILI: movlw D'250' ; RUTINA RETRASO 1 MILISEGUNDO movwf K ; J = w kloop2: decfsz K,f ; K = K-1, skip next if zero goto kloop2 return tabla: addwf PCL ;patrón de segmentos encendidos retlw B'11001101' ;en cada módulo. retlw B'00001110' retlw B'11001110' end