Baixe o app para aproveitar ainda mais
Prévia do material em texto
CHAVES COM PIC16F628A Chaves são conectadas ao PIC através de resistores de PULL-UP ou de PULL-DOWN: Exemplo: PULL-DOWN: RESISTOR EMBAIXO PULL-UP: RESISTOR EM CIMA REFERÊNCIA: RESISTOR apertado 1 SW1 não apertado 0 apertado 0 SW2 não apertado 1 Em Assembly, dois comandos podem ser usados para ler inputs: BTFSS e BTFSC em conjunto com instruções GOTO BTFSS – BIT TEST FILE SKIP IF SET BTFSC – BIT TEST FILE SKIP IF CLEAR Exemplo: BTFSC PORTA, 4 (a chave SW1 está em RA4) GOTO APERTA BTFSS PORTA, 1 (a chave SW2 está em RA1) GOTO APERTA Exercício: Fazer um programa em Assembly onde SW1 acende o LED e SW2 apaga o LED. Não é piscar. É ficar ligado direto. PULL-DOWN: RESISTOR EMBAIXO PULL-UP: RESISTOR EM CIMA REFERÊNCIA: RESISTOR apertado 1 SW1 não apertado 0 apertado 0 SW2 não apertado 1 BOTÕES EM ASSEMBLY Fazer um programa onde aperta SW1 liga/acende o LED e aperta SW2 desliga/apaga o LED. Não é piscar. É ficar ligado direto. apertado 1 apertado 0 SW1 SW2 não apertado 0 não apertado 1 BTFSS – BIT TEST FILE SKIP IF SET (pula se 1) BTFSC – BIT TESTE FILE SKIP IF CLEAR (pula se 0) Chave que fica testando BOTÕES EM ASSEMBLY Fazer um programa onde aperta SW1 liga/acende o LED e aperta SW2 desliga/apaga o LED. Não é piscar. É ficar ligado direto. apertado 1 LIGA apertado 0 SW1 SW2 DESLIGA não apertado 0 não apertado 1 Início do programa: Configuração de TRISA e TRISB: TRISA = 0x12 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 0 0 0 0 0 0 0 0 TRISB = 0x00 RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 0 0 0 1 0 0 1 0 8 4 2 1 8 4 2 1 BOTÕES EM ASSEMBLY Fazer um programa onde aperta SW1 liga/acende o LED e aperta SW2 desliga/apaga o LED. Não é piscar. É ficar ligado direto. BSF STATUS, RP0 MOVLW 0x12 MOVWF TRISA MOVLW 0x00 MOVWF TRISB BCF STATUS, RP0 INICIO BTFSC PORTA, 4 ; SW1 LIGA GOTO LIGA BTFSS PORTA, 1 ; SW2 DESLIGA GOTO DESLIGA GOTO INICIO LIGA BSF PORTB, 5 GOTO INICIO DESLIGA BCF PORTB, 5 GOTO INICIO END O que acontece se alguém apertar as duas teclas ao mesmo tempo? BSF STATUS, RP0 MOVLW 0x12 MOVWF TRISA MOVLW 0x00 MOVWF TRISB BCF STATUS, RP0 INICIO BTFSC PORTA, 4 ; SW1 LIGA GOTO LIGA BTFSS PORTA, 1 ; SW2 DESLIGA GOTO DESLIGA GOTO INICIO LIGA BSF PORTB, 5 GOTO INICIO DESLIGA BCF PORTB, 5 GOTO INICIO END O que acontece se alguém apertar as duas teclas ao mesmo tempo? Vai ligar o led e desligar muito rápido. Ou seja, vai ficar piscando na velocidade do clock. O PIC entra em GOTO liga porque a tecla de liga está apertada e entra no GOTO desliga porque a tecla desliga está apertada. Então, o LED fica piscando na velocidade do clock 4MHz. Dessa forma, o clock é muito rápido e o humano não percebe piscar. Então, o LED fica aceso direto. EXERCÍCIO 2 DE BOTÕES Fazer um programa em Assembly para: Quando SW1 não estiver pressionada o LED pisque de 0,2 em 0,2 segundos. apertado 0 SW1 não apertado 1 Início do programa: Configuração de TRISA e TRISB: TRISA = 0x00 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 0 0 0 1 0 0 0 0 TRISB = 0x10 RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0 0 0 0 0 0 0 0 0 8 4 2 1 8 4 2 1 EXERCÍCIO 2 DE BOTÕES Fazer um programa em Assembly quando SW1 não estiver pressionada o LED pisque de 0,2 em 0,2 segundos em 4MHz. BSF STATUS, RP0 MOVLW 0x00 MOVWF TRISA MOVLW 0x10 MOVWF TRISB BCF STATUS, RP0 INICIO BTFSC PORTB, 4 GOTO PISCA GOTO INICIO PISCA BSF PORTB, 0 CALL DELAY BCF PORTB, 0 CALL DELAY GOTO INICIO DELAY MOVLW 0xFF MOVWF 0x20 VSET MOVLW 0xFF MOVWF 0x21 LOOP DECFSZ 0x21 GOTO LOOP DECFSZ 0x20 GOTO VSET RETURN END EXERCÍCIO 3 DE BOTÕES Fazer um programa em Assembly (em 4MHz) para: SW1 não estiver pressionada o LED pisque de 0,4 em 0,4 segundos SW1 estiver pressionada o LED pisque de 0,2 em 0,2 segundos. BSF STATUS, RP0 MOVLW 0x00 MOVWF TRISA MOVLW 0x10 MOVWF TRISB BCF STATUS, RP0 apertado 0 SW1 não apertado 1 EXERCÍCIO 3 DE BOTÕES Fazer um programa em Assembly (em 4MHz) para: SW1 não estiver pressionada o LED pisque de 0,4 em 0,4 segundos SW1 estiver pressionada o LED pisque de 0,2 em 0,2 segundos. BSF STATUS, RP0 MOVLW 0x00 MOVWF TRISA MOVLW 0x10 MOVWF TRISB BCF STATUS, RP0 INICIO BTFSC PORTB, 4 GOTO PISCA04 GOTO PISCA02 PISCA02 BSF PORTB, 0 CALL DELAY BCF PORTB, 0 CALL DELAY GOTO INICIO PISCA04 BSF PORTB, 0 CALL DELAY CALL DELAY BCF PORTB, 0 CALL DELAY CALL DELAY GOTO INICIO DELAY (Mesmo DELAY do exercício 2) Ou BTFSS PORTB, 4 GOTO PISCA02 GOTO PISCA04 EXERCÍCIO 3 DE BOTÕES Fazer um programa em Assembly (em 4MHz) para: SW1 não estiver pressionada o LED pisque de 0,4 em 0,4 segundos SW1 estiver pressionada o LED pisque de 0,2 em 0,2 segundos. BSF STATUS, RP0 MOVLW 0x00 MOVWF TRISA MOVLW 0x10 MOVWF TRISB BCF STATUS, RP0 INICIO BTFSC PORTB, 4 GOTO PISCA04 GOTO PISCA02 PISCA02 BSF PORTB, 0 CALL DELAY BCF PORTB, 0 CALL DELAY GOTO INICIO PISCA04 BSF PORTB, 0 CALL DELAY CALL DELAY BCF PORTB, 0 CALL DELAY CALL DELAY GOTO INICIO DELAY MOVLW 0xFF MOVWF 0x20 VSET MOVLW 0xFF MOVWF 0x21 LOOP DECFSZ 0x21 GOTO LOOP DECFSZ 0x20 GOTO VSET RETURN END RESPOSTA 1 EXERCÍCIO 3 DE BOTÕES Fazer um programa em Assembly (em 4MHz) para: SW1 não estiver pressionada o LED pisque de 0,4 em 0,4 segundos SW1 estiver pressionada o LED pisque de 0,2 em 0,2 segundos. BSF STATUS, RP0 MOVLW 0x00 MOVWF TRISA MOVLW 0x10 MOVWF TRISB BCF STATUS, RP0 INICIO BTFSS PORTB, 4 GOTO PISCA02 GOTO PISCA04 PISCA02 BSF PORTB, 0 CALL DELAY BCF PORTB, 0 CALL DELAY GOTO INICIO PISCA04 BSF PORTB, 0 CALL DELAY CALL DELAY BCF PORTB, 0 CALL DELAY CALL DELAY GOTO INICIO DELAY MOVLW 0xFF MOVWF 0x20 VSET MOVLW 0xFF MOVWF 0x21 LOOP DECFSZ 0x21 GOTO LOOP DECFSZ 0x20 GOTO VSET RETURN END RESPOSTA 2
Compartilhar