; ARCHIVO DS18B20SIETE-2.ASM ; CODIGO FUENTE PARA EL MICROCONTROLADOR PIC16F628 ; LEE EL VALOR DE LA TEMPERATURA DEL SENSOR DS18B20 ; MUESTRA el valor 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 CBLOCK 0X20 J K L ;contador tabla M ;buffer segmentos 3 dígitos N P A Digito1 ;codigo ascii primer dígito Digito2 Digito3 Punto ENDC org 0 BANCO0 movlw H'07' movwf CMCON BANCO1 clrf VRCON BANCO1 ;inicializa puertos CLRF TRISB ;PUERTO B SALIDAS CLRF TRISA ;PUERTO A SALIDAS inicio: BANCO0 CLRF PORTA CLRF PORTB call Tempe movfw Digito1 andlw H'0F' ;conserva solo valor BCD call tabla ;regresa de tabla con patrón de segmentos en W movwf M ;carga buffer movfw Digito2 andlw H'0F' ;conserva solo valor BCD call tabla ;regresa de tabla con patrón de segmentos en W iorlw H'01' ;añade el punto decimal, segmento RB0 movwf N ;carga buffer movfw Digito3 andlw H'0F' ;conserva solo valor BCD call tabla ;regresa de tabla con patrón de segmentos en W movwf P ;carga buffer movlw H'FF' movwf A malla2: clrf L ;L es el contador de dígitos movlw M movwf FSR ;inicializa dirección buffer call MR ;RA1 MANDA PULSO DE MASTER RESET AL CONTADOR malla1: movfw INDF ;carga en w contenido de buffer movwf PORTB ;carga en PUERTO B patrón de segmentos call CP0 ;RA2 MANDA PULSO PARA INCREMENTAR CONTADOR call retro ;retraso incf FSR,f incf L,f movfw L sublw 3 ;malla de 3 ciclos btfss STATUS,Z goto malla1 decf A,f btfss STATUS,Z goto malla2 goto inicio 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'40' ;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'01111110' ;0 retlw B'00001100' ;1 retlw B'10110110' ;2 retlw B'10011110' ;3 retlw B'11001100' ;4 retlw B'11011010' ;5 retlw B'11111000' ;6 retlw B'00001110' ;7 retlw B'11111110' ;8 retlw B'11001110' ;9 ;cabo: goto inicio ;se quitó include "DS18B20-3.inc" end