Who's online

There are currently 0 users and 4 guests online.

Publicidade

Displays de sete segmentos

User login

PIC16: mostra4digitos - exibe quatro dígitos em displays multiplexados

A seguinte função para a família de microcontroladores PIC16 controla a exibição de 4 dígitos decimais em 4 displays de 7 segmentos multiplexados através de transistores e um decodificador BCD para 7 segmentos. O número a ser exibido deve estar contindo em digitos_low (dois dígitos BCD) e digitos_high (dois dígitos BCD mais significativos). Esta função utiliza a função mostra1digito.

;*********************************************************
;<FUNÇÃO> 
; mostra4digitos
;{
; Exibe quatro dígitos <digito> nos 4 displays de 7 segmentos utilizando a função
; mostra1digito
 
;<HARDWARE> 
; 4 displays de sete segmentos multiplexados 
; através de 4 transistores e o dado codificado em BCD.
 
; <ARGUMENTOS>
; digitos_low (f) = dois dígitos BCD (0 a 9) menos significativos
; digitos_high (f) = dois dígitos BCD (0 a 9) mais significativos
;*********************************************************
 
#ifdef DISPLAY_7SEGMENTOS
 
banksel display_low
 
;1º digito - menos significativo:
digito_1:
    movf posicao,f
    btfss STATUS,Z
        goto digito_2
 
    movf display_low,w
    movwf mostra1_digito_7seg
    movlw 0x01
    movwf mostra1_posicao_7seg
    call mostra1digito
    goto digito_fim
 
;2º digito 
digito_2:
    movlw 0x01
    subwf posicao,w
    btfss STATUS,Z
        goto digito_3
 
    swapf display_low,w
    movwf mostra1_digito_7seg
    movlw 0x02
    movwf mostra1_posicao_7seg
    call mostra1digito
    goto digito_fim
 
;3º digito 
digito_3:
    movlw 0x02
    subwf posicao,w
    btfss STATUS,Z
        goto digito_4
 
    movf display_high,w
    movwf mostra1_digito_7seg
    movlw 0x03
    movwf mostra1_posicao_7seg
    call mostra1digito
    goto digito_fim
 
;4º digito - mais significativo:
digito_4:
    swapf display_high,w
    movwf mostra1_digito_7seg
    movlw 0x04
    movwf mostra1_posicao_7seg
    call mostra1digito
 
digito_fim:    
    incf posicao,f
    movlw 0x04
    subwf posicao,w
    btfsc STATUS,Z
        clrf posicao ; posicao = 0 até 3
 
#endif
 
;}
;*********************************************************   

Post new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.