como prometido programa completo do contador com pic16f877a

Download Como Prometido Programa Completo Do Contador Com PIC16F877A

If you can't read please download the document

Upload: joelson-fernandes

Post on 04-Jul-2015

347 views

Category:

Documents


0 download

TRANSCRIPT

;************************************************* ***************************** * ; ;Eletrotcnica 4 Ano - EMI ;Gabriel Cintra - 05112212 ; ;Programa 10: ;Iniciar o display da esquerda mostrando o nmero 0, a cada vez que a ;chave S4 for pressionada, incrementar o valor mostrado no display ;zerando novamente aps o nmero 9. ;Quando pressionar a chave S3, decrementar o valor no display. ; ;************************************************* ***************************** * INCLUDE LIST P=16F877A.INC __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _XT_OSC & _LVP_OFF TEMP1 equ h'20' TEMP2 equ h'21' TEMP3 equ h'22' Minimo equ h'00' ; Valor Minimo da Contagem Maximo equ h'09' ; Valor Mximo da Contagem Contador equ h'23' bsf STATUS,5 ; movlw b'00001111' movwf TRISB ; movlw b'00000000' movwf TRISD ; bcf STATUS,5 ; Principal ; movlw b'00111111' movwf PORTD ; clrf Contador ; movlw b'10000000' movwf PORTB ; ; Local onde vai ser armazenado a contagem Seleciona Banco 01 ; Configura RB0:RB3 PORTB como Entrada Envia Configurao para TRISB ; Configura PORTD como Sada Envia Configurao para TRISD Seleciona Banco 00 Rotina para escrever Zero o Display ; Cdigo para Escrever Zero no Display Escreve Zero no Display Limpa Contador para Iniciar do Zero ; Seleciona Display a ser Escrito Envia seleo para PORTD

Checar ; Rotina para Verificar o Boto S4 e S3 btfss PORTB,3 ; Verifica S4. call Incrementar ; Fechado vai para Incrementar. btfss PORTB,2 ; Aberto, Verificar S3 call Decrementar ; Fechado, Vai para Decrementar. goto Checar ; Aberto, Faz nova Verificao dos Botes Incrementar ; Rotina de Incrementar movlw Maximo ; W = maximo xorwf Contador,W ; W = W xor Contador btfsc STATUS,Z ; Contador = maximo? goto $+2 ; Sim, salta para 2 linhas abaixo goto $+4 ; No, salta para 4 linhas abaixo movlw Minimo ; W = minimo movwf Contador ; Contador = mnimo goto $+2 ; Salta para 2 linhas abaixo incf Contador,f ; Soma um do valor de Contador call Conversor_Display ; Converter para Jogar nos Display movwf PORTD ; Escreve o valor Convertido no Display

call Espera ; Chama a Rotina de Espera return Decrementar ; Rotina de Decrementar movlw Minimo ; W = minimo xorwf Contador,W ; W = W xor Contador btfsc STATUS,Z ; Contador = minimo? goto $+2 ; Sim, salta para 2 linhas abaixo goto $+4 ; No, salta para 4 linhas abaixo movlw Maximo ; W = maximo movwf Contador ; Contador = maximo goto $+2 ; Salta para 2 linhas abaixo decf Contador,f ; Decrementa uma unidade do Contador call Conversor_Display ; Converter para Jogar nos Display movwf PORTD ; Escreve o valor Convertido no Display call Espera ; Chama a Rotina de Espera return Conversor_Display Movf Contador,W ; W Recebe Conteudo de Contador Addwf PCL,F ; PCL Recebe (W + PCL) Retlw b'00111111' ; Acende Zero (0) no Display Retlw b'00000110' ; Acende Um (1) no Display Retlw b'01011011' ; Acende Dois (2) no Display Retlw b'01001111' ; Acende Trs (3) no Display Retlw b'01100110' ; Acende Quatro (4) no Display Retlw b'01101101' ; Acende Cinco (5) no Display Retlw b'01111101' ; Acende Seis (6) no Display Retlw b'00100111' ; Acende Sete (7) no Display Retlw b'01111111' ; Acende Oito (8) no Display Retlw b'01101111' ; Acende Nove (9) no Display Espera ; Rotina de Espera, para intervalo do Boto movlw h'26' ; Valor a ser Decrementado movwf TEMP1 ; Envia Valor para TEMP1 Volta1 movlw h'26' ; Valor a ser Decrementado movwf TEMP2 ; Envia Valor para TEMP2 Volta2 movlw h'26' ; Valor a ser Decrementado movwf TEMP3 ; Envia Valor para TEMP3 Volta3 decfsz TEMP3,F ; Decrementa Valor de TEMP3 e salta se for 0 goto Volta3 ; Vai para Volta3 decfsz TEMP2,F ; Decrementa Valor de TEMP2 e salta se for 0 goto Volta2 ; Vai para Volta2 decfsz TEMP1,F ; Decrementa Valor de TEMP1 e salta se for 0 goto Volta1 ; Vai para Volta1 return ; Volta para proxima instruo de onde foi chamada END ; Fim do Programa ;************************************************* ***************************** *