pratica2 - liga led com botão
DESCRIPTION
okTRANSCRIPT
-
UFPI - UNIVERSIDADE FEDERAL DO PIAU CURSO DE ENGENHARIA ELTRICA LABORAT. DE MICROCONTROLADORES Prof. Msc. Francisco Everton Ucha Reis
PRTICA 2 Acende LED com boto e familiarizao do
conjunto de instrues em Assembly.
Objetivos
- Explorar a funcionalidade da porta B;
- Familiarizar-se com o conjunto de instrues em assembly.
Procedimentos
A partir do exemplo dado na aula anterior, faa o que se pede:
I. Modifique o programa do exemplo dado para acender um LED, da seguinte forma: enquanto o boto estiver pressionado, o LED apaga e quando liberado o LED acende. O
LED dever ser ligado no pino RB7, lembrando que o resistor no boto de pull-down.
II. Faa a mesma coisa, sendo que agora utilizado o resistor de pull-up da porta B. III. A partir do item anterior, faa um programa para comutar o estado do LED, toda vez que o
boto for pressionado, voltando a comutar o estado do LED, somente quando o boto for
liberado e pressionado novamente.
IV. Utilizando o depurador MPLAB SIM, execute o programa abaixo e preencha a tabela:
Tabela 1 - Programa para anlise.
Contedo de: F W Flag Z Flag C
BCF STATUS, RP1
BSF STATUS, RP0
BCF STATUS, RP0
CLRF 0x20
INCF 0x20
COMF 0x20, F
COMF 0x20, W
MOVLW D9
ADDWF 0x20, F
ANDWF 0x20
DECF 0x20, F
DECFSZ 0x20, F
INCF 0x20, F
INCFSZ 0x20, F
IORWF 0x20, F
IORWF 0x20, W
MOVF 0x20, F
-
MOVF 0x20, W
RLF 0x20, F
RRF 0x20, F
SUBWF 0x20, F
SUBWF 0x20, W
MOVLW HFE
MOVWF 0x20
SWAPF 0x20
MOVLW D255
XORWF 0x20, F
ADDLW D1
ADDLW D3
ANDLW D253
IORLW D255
MOVLW H0F
SUBLW D20
XORLW D15
BTFSC 0x20, 0
BTFSS 0x20, 1
CLRW
CALL ROTINA
GOTO DORMIR
ROTINA NOP
CLRWDT
RETLW D10
DORMIR SLEEP
END
Questionrio
Execute o programa que se segue na tabela abaixo e responda:
1 #include
2
3 #define constante D'2'
4 #define file 0x20
5
6 movlw constante ; w = 2
7 subwf file,w ; file - w -> w
8
9 ;testar se a operao de subtrao acima deu zero
10 btfsc STATUS,Z
11 goto igual ;igual
12 diferente:
13
14 igual:
15
-
16 movlw constante
17
18 incf file
19 decf file
20
21 incf file,1
22 decf file,1
23
24 incf file, w
25 decf file, w
26
27 bcf STATUS, RP0
28 bcf STATUS, RP1
29
30 movf file, W
31
32
33 #define a 0x24
34 #define b 0x25
35 #define c 0x26
36
37 movf b,W
38 addwf a,W
39 movwf c
40
41 clrf c
42 incfsz c
43 decfsz c
44 nop
45 zero: incf c
46 incf c
47
48 decf c
49
50 ;comparar se x >=50
51 #define x 0x27
52 movf x,W
53 sublw 50 ; W= 50 - W
54 btfss STATUS, C ;
55 goto menor
56 goto maior_ig
57
58 menor:
59 maior_ig:
60 movlw .1
61 movwf a
62 rrf a
63 rlf a
-
64 swapf a
65
66 movf a,W
67 andlw 0xef
68 movwf a
69
70 bsf a,0
71 bcf a,0
72
73 iorlw 0x80
74 xorlw 0x81
75 movwf a
76
77 movwf 0xA0
78 nop
79
80 end
1. Verifique se h diferena entre a instruo da linha 18 com a da linha 21. O que acontece ao
trmino dessa instruo. Idem para a instruo da linha 19 com a da linha 22.
2. O resultado das instrues nas linhas 24 e 25 o mesmo das instrues das linhas 21 e 22
respectivamente? Qual a diferena?
3. A partir da linha 33 a 39 responda. Qual operao realizada entre a varivel "a" e "b"? Onde
o resultado da operao armazenado?
4. Na linha 48, qual o valor de C. Explique por que esse valor.
5. Qual o valor de "a" ao trmino da instruo da linha 64, da linha 68 e da linha 75.
6. Explique porque o contedo do registrador 0xA0 no modificado. Dica: Veja as linhas 27 e
28 do programa.
Questo desafio
Faa um programa para ler o estado do boto e acionar o LED no mesmo pino. O esquema do
hardware necessrio apresentado na figura a seguir. Obs: Considere que a entrada no pino RB1
do tipo TTL.