O Microprocessador
Por: Breno Giovanni • 14/5/2017 • Trabalho acadêmico • 10.094 Palavras (41 Páginas) • 336 Visualizações
Prática 01
INTRODUÇÃO À PROGRAMAÇÃO DE BAIXO NÍVEL e PIC – FERRAMENTAS DE DESENVOLVIMENTO
Simulação Proteus
[pic 1]
Exercícios complementares
- Justifique os valor da freqüência gerada no programa “ATRABKSEL.ASM”, de acordo com o tempo de execução das instruções, parâmetros utilizados e freqüência de oscilação do clock principal do microcontrolador. (Realize os cálculos necessários).
atraso
movwf X
at1 decfsz X
goto at1
return
o atraso gerado pela rotina mostrada acima gasta 17 ciclos de máquina, e temos que um ciclo de máquina é dado por
[pic 2]
Sendo a Fosc= 4MHz temos que o atraso gerado é de 4,25µs.
- Altere a função atraso do programa “ATRABKSEL.ASM” para gerar no pino de saída uma onda quadrada com freqüência de 1 Hz. (Realize os cálculos necessários).
#INCLUDE
#DEFINE LED1 PORTB,5 ;define a variavel LED1 como o pino RB5
at_x EQU 0x20
at_tmp1 EQU 0x21 ;declaração de variáveis
at_tmp2 EQU 0x22
ORG 0x00
GOTO INICIALIZA ;desvia para inicializa
ORG 0x04
RETFIE ;não haverá interrupção
INICIALIZA
BANKSEL TRISB ;seleciona o banco 1
MOVLW B'00000000 ' ;coloca todos os pinos de PORTB como saida
MOVWF TRISB
BANKSEL PORTB ;seleciona o banco 0
MAIN
BCF LED1 ;apaga o led
MOVLW 5 ;carrega o acumulador com 5
CALL atraso ;desvia para a rotina atraso
BSF LED1 ;acende o led
MOVLW 5 ;carrega o acumulador com 5
CALL atraso ;desvia para a rotina atraso
GOTO MAIN ;retorna para MAIN
atraso ;rotina de atraso, gera um atraso de 1s.
movwf at_x
movlw 0xff
at1: movwf at_tmp1
at2: movwf at_tmp2
at3: decfsz at_tmp2
goto at3
decfsz at_tmp1
goto at2
decfsz at_x
goto at1
return ;retorna para onde a subrotina foi chamada
END
- Na seqüência, configure um pino como entrada e monitore o mesmo, de forma a alterar a freqüência de oscilação do LED, de acordo com o estado de um botão ligado ao pino de entrada. (0V _ 1 Hz, 5V_ 5 Hz).
#INCLUDE
#DEFINE LED1 PORTB,5 ;define a variavel LED1 como o pino RB5
at_x EQU 0x20
at_tmp1 EQU 0x21 ;declaração de variáveis
at_tmp2 EQU 0x22
ORG 0x00
GOTO INICIALIZA ;desvia para inicializa
ORG 0x04
RETFIE ;não haverá interrupção
INICIALIZA
BANKSEL TRISB ;seleciona o banco 1
MOVLW B'00000001' ;coloca apenas o bit RB0 como saida
MOVWF TRISB
BANKSEL PORTB ;seleciona o banco0
MAIN
BCF LED1 ;apaga o led
MOVLW 5 ;carrega o acumulador com 5
CALL atraso ;desvia para a rotina atraso
BSF LED1 ;acende o led
MOVLW 5 ;carrega o acumulador com 5
CALL atraso ;desvia para a rotina atraso
GOTO MAIN ;retorna para MAIN
atraso ;rotina de atraso
BTFSC PORTB,0 ; se o bit RB0 estiver setado muda a frequencia
...