PROJETO 8: Implementações utilizando o PIC 16F84 DEL - ________ 1) Verifique o funcionamento dos programas abaixo. ; ; ; ; PROGRAMA 1 PROGRAMA DESENVOLVIDO NO LIVRO TEXTO. SISTEMA PARA REPRESENTAR O ESTADO. DE UM BOTÃO ATRAVÉS DE UM LED. #INCLUDE <P16F84.INC> ; DEFINIÇÕES #DEFINE BANK0 BCF STATUS,RP0 #DEFINE BANK1 BSF STATUS,RP0 ; Pinos de Entrada #DEFINE BOTAO PORTA,2;PORTA DO BOTÃO ; 0 -> PRESSIONADO ; 1 -> LIBERADO ; Pinos de Saída #DEFINE ; ; ; INICIO LED PORTB,0;PORTA DO LED ; 0 -> APAGADO ; 1 -> ACESO RESET ORG 0x00 GOTO INICIO Interrupção ORG 0x04 ;ENDEREÇO INTERRUPÇÃO RETFIE ;RETORNA DA INTERRUPÇÃO Início BANK1 MOVLW B'00000100' MOVWF TRISA ;DEFINE RA2 COMO ENTRADA MOVLW B'00000000' MOVWF TRISB MOVLW B'10000000' MOVWF OPTION_REG ;PRESCALER 1:2 NO TMR0 - PULL-UPS DESABILITADOS MOVLW B'00000000' MOVWF INTCON BANK0 ; Inicialização de Variáveis CLRF PORTA CLRF PORTB ; Rotina Principal MAIN BTFSC BOTAO;O BOTÃO ESTÁ PRESSIONADO? GOTO BOTAO_LIB;NÃO GOTO BOTAO_PRES;SIM BOTAO_LIB BCF GOTO BOTAO_PRES BSF GOTO END LED;APAGA O LED MAIN LED;ACENDE O LED MAIN ; PROGRAMA 2 ; PROGRAMA DESENVOLVIDO NO LIVRO TEXTO. ; INCREMENTA VALOR MOSTRADO EM PORTB DE MIN. ; ATÉ MAX AO PRESSIONAR O BOTÃO. ; ATINGIDO MAX PASSA A DECREMENTAR. #INCLUDE <P16F84.INC> ; DEFINIÇÕES #DEFINE BANK0 BCF STATUS,RP0 #DEFINE BANK1 BSF STATUS,RP0 ; VARIÁVEIS CBLOCK 0x0C CONTADOR;ARMAZENA O VALOR DA CONTAGEM FLAGS ;ARMAZENA OS FLAGS DE CONTROLE FILTRO ;FILTRAGEM PARA O BOTÃO ENDC #DEFINE SENTIDOFLAGS,0;FLAG DE SENTIDO ; 0 -> SOMANDO ; 1 -> SUBTRAINDO ; Constantes MIN EQU .1 ;VALOR MÍNIMO PARA O CONTADOR MAX EQU .10;VALOR MÁXIMO PARA O CONTADOR T_FILTRO EQU .10; FILTRO PARA BOTÃO ; Pinos de Entrada #DEFINEBOTAO PORTA,2;PORTA DO BOTÃO ; 0 -> PRESSIONADO ; 1 -> LIBERADO ; RESET ORG 0x00 GOTO INICIO ; Interrupção ORG 0x04 RETFIE ; INICIO DO PROGRAMA INICIO BANK1 MOVLW B'00000100' MOVWF TRISA MOVLW B'00000000' MOVWF TRISB MOVLW B'10000000' MOVWF OPTION_REG;PRESCALER 1:2 NO TMR0 MOVLW B'00000000' MOVWF INTCON ;INTERRUPÇÕES DESLIGADAS BANK0 ; Inicialização de Variáveis CLRF PORTA CLRF PORTB MOVLW MIN MOVWF CONTADOR ; Rotina Principal MAIN MOVLW T_FILTRO MOVWF FILTRO CHECA_BT BTFSC BOTAO GOTO MAIN DECFSZ FILTRO,F GOTO CHECA_BT TRATA_BT BTFSS SENTIDO;SENTIDO=0? GOTO SOMA ;SIM SUBTRAI DECF MOVLW SUBWF BTFSC GOTO INCF BCF GOTO SOMA INCF MOVLW ;NÃO CONTADOR,F MIN CONTADOR,W;W = CONTADOR - MIN STATUS,C;RESULTADO NEGATIVO? ATUALIZA;NÃO : CONTADOR >= MIN CONTADOR,F;SIM : CONTADOR < MIN SENTIDO MAIN CONTADOR,F MAX SUBWF BTFSS GOTO BSF GOTO ATUALIZA MOVF MOVWF BTFSS GOTO GOTO END CONTADOR,W;W = CONTADOR - MAX STATUS,C;RESULTADO POSITIVO? ATUALIZA;NÃO : CONTADOR < MAX SENTIDO;SIM : CONTADOR >= MAX MAIN CONTADOR,W PORTB BOTAO;BOTÃO continua pressionado? $-1 MAIN Exemplo de sinal gerado por uma chave ao ser acionada: Exercícios: 1) Crie um programa que faça um led qualquer acender T segundos após o botão ser pressionado. 2) Crie um programa que apresente apenas um dos leds ligados ao microcontrolador acendendo durante 5 segundos. Após este tempo, um novo led deverá ser aceso, de acordo com a seqüência: led-0, led-1, led-2, led-3, led-4, led-5, led-6, led -7, led -0 ... 3) Crie um programa que inverta a seqüência de acendimento acima quando o botão for pressionado. Tabela para auxiliar a simulação dos programas: MIN ______ , MAX ______ e T_FILTRO ______ FLAG FILTRO CONTADOR W PORTA PORTB STATUS Z C