Você está na página 1de 4

Prática 4

LABORATÓRIO DE SISTEMAS MICROPROCESSADOS


Prof.: Túlio C. O. Carvalho

Artur Cesar da Silva, Samuel Monteiro de Castro e Marcus Túlio Ferreira.


Centro Federal de Educação Tecnológica de Minas Gerais
Belo Horizonte - Minas Gerais / Brasil

1. Programa

1 #include <p18f4550.inc>
2 config CPUDIV = OSC1_PLL2 ;
3 config FOSC = HS ;
4 config WDT = OFF ;
5 config PBADEN = OFF ;
6 config LVP = OFF ;
7 config MCLRE = ON ;
8 config PWRT = ON ;
9

10 org 0x0000
11 bra start
12 org 0X020
13

14 start:
15 BCF INTCON2, 7, 0
16

17 ;Configuração dos I/O's.


18 CLRF PORTB
19 MOVLW 0x00
20 MOVWF TRISD, 0
21 MOVLW 0xFF
22 MOVWF TRISB, 0
23 MOVLW 0x0F
24 MOVWF ADCON1, 0
25

26 Loop:
27 ;Transfere a entrada B para a saída D.
28 MOVFF PORTB, LATD
29 BRA Loop
30

31 end

Primeiramente devem ser configuradas as portas de entrada e saída. Essa configu-


ração se refere a informar, ao micontrolador, quais pinos terão função de entrada e

1
quais terão função de saída. Além disso, é indicado que as entradas e saídas serão
do tipo digital.
Em seguida, o programa entra em um loop, no qual os dados de entrada da PORTA
B (onde estão conectadas as chaves) são carregados na saída da PORTA D (onde
estão conectos os LED’s).

2. Programa

1 #include <p18f4550.inc>
2 config CPUDIV = OSC1_PLL2 ;
3 config FOSC = HS ;
4 config WDT = OFF ;
5 config PBADEN = OFF ;
6 config LVP = OFF ;
7 config MCLRE = ON ;
8 config PWRT = ON ;
9

10 org 0x0000
11 bra start
12 org 0X020
13

14 start:
15 BCF INTCON2, 7, 0
16

17 ;Configuração dos I/O's.


18 CLRF PORTB
19 MOVLW 0x00
20 MOVWF TRISD, 0
21 MOVLW 0xFF
22 MOVWF TRISB, 0
23 MOVLW 0x0F
24 MOVWF ADCON1, 0
25

26 Loop:
27 ;Transfere o bit 8 da entrada B para o bit 0
28 ;da saída D.
29 BTFSS PORTB, 8
30 BCF LATD, 0, 0
31 BSF LATD, 0, 0
32 BRA Loop
33

34 end

O programa do deste item é semelhante ao item anterior. A diferença está na rotina


de Loop. A função BTFSS testa o bit selecionado e salta a próxima instrução caso

2
o bit testado seja 1. Então, nesse caso o bit 0 da PORTA D é setado caso o bit 8
da PORTA B seja 1. Caso contrário, o bit 0 da PORTA D é resetado.

3. Programa

1 #include <p18f4550.inc>
2 config CPUDIV = OSC1_PLL2 ;
3 config FOSC = HS ;
4 config WDT = OFF ;
5 config PBADEN = OFF ;
6 config LVP = OFF ;
7 config MCLRE = ON ;
8 config PWRT = ON ;
9

10 org 0x0000
11 bra start
12 org 0X020
13

14 start:
15 BCF INTCON2, 7, 0
16

17 ;Configuração dos I/O's.


18 CLRF PORTB
19 MOVLW 0x00
20 MOVWF TRISC, 0
21 MOVLW 0xFF
22 MOVWF TRISB, 0
23 MOVLW 0x0F
24 MOVWF ADCON1, 0
25

26 Loop:
27 ;Testa o bit 1 (RB1) da porta B e aciona o buzzer
28 ;caso esse seja 1.
29 BTFSS PORTB, 1
30 BRA Loop
31 BTG LATC, 2
32 BRA Buzzer

3
1 Buzzer:
2 MOVLW 0x04
3 MOVWF dH
4 MOVLW 0xE8
5 MOVWF dL
6 delay:
7 DECFSZ dL,1,0
8 BRA delay
9 DECFSZ dH,1,0
10 BRA delay
11 BRA Loop
12

13 end

O conceito desse programa é o mesmo dos anteriores. Porém, nesse caso, deixa-se
de utilizar a PORTA D como saída e passa-se a utilizar a PORTA C (onde está
conectado o buzzer). Além disso, na rotina de Loop, o bit 1 (RB1) da PORTA B é
testado e, caso seja 1, o bit 2 (RC2) da PORTA C tem seu estado invertido. Após,
isso é iniciada uma rotina de delay. Esse ciclo é repetido enquanto o bit RB1 estiver
em 1, criando um sinal de onda quadrado no Buzzer com uma frequência adequada.

Você também pode gostar