Você está na página 1de 2

CURSOS: ENGENHARIA DE COMPUTAÇÃO E ENGENHARIA ELÉTRICA

Disciplina: ENGC50 - Sistemas Microprocessados Turma: T02


Professor: Tiago Trindade Ribeiro Sala: 07.01.03
Semestre: 2018.2 Horário: Segundas e Quartas - 20:20h às 22:10h

1
Segunda Lista de Exercı́cios

1. Considerando o circuito da a seguir, escreva o código


assembly para piscar o led em RB0 a cada 2s. Use
subrotinas para gerar o delay.

4. Para o mesmo circuito da questão anterior, escreva


uma nova solução utilizando uma LUT implementada
na memória de programa.

2. Considere que o circuito da a seguir faz o led D1 pis-


car continuamente a cada 1s e que o led D2 modifica 5. Na figura a seguir o valor binário indicado pelos leds do
de estado sempre que ocorre uma interrupção no pino PORTB é incrementado cada vez que o botão em RA1
RB0/INT. Escreva um código assembly para realizar a é pressionado. O botão em RA0 faz a contagem zerar
ação, sem esquecer de salvar contexto, e restaurá-lo ao (clear). Escreva o código assembly correspondente.
fim da rotina de interrupção.

6. Escreva um programa para contar de 0x00 a 0xFF, com


incrementos em intervalos regulares de 500ms, mos-
trando a cada passo o valor da contagem no PORTB e
3. Escreva o código assembly para escrever no display de salvando no endereço 0x10 (GPR RAM Address). Use
7 segmentos o equivalente ao valor binário programado uma subrotina para mandar o dado para o PORTB e
na chave SW1, conforme a figura a seguir. Para fa- outra para gerar o delay.
zer a conversão de BCD para 7 segmentos, utilize uma
LookUp Table (LUT) implementada na RAM.
1 Em todas as questões, considerar o PIC16F84A e um cristal de 4MHz
7. Escreva um programa para gerar uma onda quadrada CALL d e l a y 1 s
com frequência de 10 KHz no bit 0 do PORTA, usando GOTO LOOP
o TMR0 para fixar o perı́odo do sinal. Elabore duas
versões, uma utilizando a interrupção associada ao ti- d e l a y 1 m s ; f o r X1=4MHz
mer e outra através da verificação contı́nua da conta- MOVLW D’ 2 0 0 ’
gem (polling) MOVWF v a r t e m p o 1
volta1
NOP
NOP
8. Escreva o código assembly para receber 4 valores no
DECFSZ v a r t e m p o 1
PORTA, armazená-los na memória RAM, calcular a
GOTO v o l t a 1
média e mostrar o resultado no PORTB. Considere
RETURN
números sem sinal.
d e l a y 1 0 0 m s ; f o r X1=4MHz
MOVLW D’ 1 0 0 ’
9. Modifique o problema 8 para que o código identifique o MOVWF v a r t e m p o 2
maior dos 4 números recebidos e copie o valor em uma volta2
posição da memória RAM. CALL d e l a y 1 m s
DECFSZ v a r t e m p o 2
GOTO v o l t a 2
10. Analise o código a seguir. O que ele faz? Coloque um RETURN
comentário em cada linha, explicando o seu significado.
delay1s
l i s t p=16F84A MOVLW D’ 1 0 ’ ; f o r X1=4MHz
MOVWF v a r t e m p o 3
#i n c l u d e <p 1 6 f 8 4 a . i n c > volta3
CALL d e l a y 1 0 0 m s
CONFIG WDT OFF & XT OSC & CP OFF DECFSZ v a r t e m p o 3
GOTO v o l t a 3
v a r t e m p o 1 EQU 0 x0C RETURN
v a r t e m p o 2 EQU 0x0D
v a r t e m p o 3 EQU 0 x0E ISR EXT INT
w temp EQU 0 x0F MOVWF w temp
s t a t u s t e m p EQU 0x1A SWAPF STATUS ,W
MOVWF s t a t u s t e m p
RES VECT CODE 0 x0000 BTFSC PORTB, RB2
GOTO START GOTO L1
GOTO L2
o r g 0 x0004 L1
BTFSC INTCON , INTF BCF PORTB, RB2
CALL ISR EXT INT GOTO L3
RETFIE L2
BSF PORTB, RB2
MAIN PROG CODE L3
START MOVF w temp ,W
BSF STATUS , RP0 SWAPF s t a t u s t e m p ,W
MOVLW 0 x01 MOVWF STATUS
MOVWF TRISB BCF INTCON , INTF
BCF STATUS , RP0 RETURN
CLRF PORTB
MOVLW B’ 1 0 0 1 0 0 0 0 ’ END
MOVWF INTCON

LOOP
BSF PORTB, RB1
CALL d e l a y 1 s
BCF PORTB, RB1

Você também pode gostar