Buscar

Programa em Assembly para controle de LEDs com botões no PIC16F84A

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 ;1) Configurar um programa em Assembly para o microcontrolador PIC16F84A, 
2 ; no qual são conectados os botões 1 e 2 , nos pinos 6 e 8, 
3 ; e os leds 1 e 2 nos pinos 7 e 9, respectivamente.
4 ; Ao pressionar o botão 1 o led 2 deve acender. 
5 ; Ao pressionar o botão 2 o led 1 deve acender.
6 ;
7 ; '0' - botão acionado
8 ; '1' - botão liberado
9 ; 
10 ;
11 
12 ;
13 ; Aula 2 - botão/Led
14 ;
15 ; Aciona LED1 ligado em RB1, a partir de botão1 ligado em RB0 e
16 ; aciona LED2 ligado em RB3, a partir de botão2 ligado em RB2.
17 ;
18 ; OBS.:
19 ;
20 ; LEDs ligados no modo current sourcing:
21 ;
22 ; '0' - apaga
23 ; '1' - acende
24 ;
25 ; Botões ligados com resistor de pull-up:
26 ;
27 ; '0' - botão acionado
28 ; '1' - botão liberado
29 ; 
30 ;
31 
32 ; --- Arquivos incluídos no projeto ---
33 #include <p16f84a.inc> ; inclui o arquivo do PIC16F84A 
34 
35 ; --- Paginação de Memória ---
36 #define bank0 bcf STATUS,RP0 ;Cria um mnemônico para o banco 0 de 
memória
37 #define bank1 bsf STATUS,RP0 ;Cria um mnemônico para o banco 1 de 
memória
38 
39 
40 ; --- Entradas ---
41 #define botao1 PORTB,RB0 ;botão 1 ligado em RB0
42 #define botao2 PORTB,RB2 ;botão 2 ligado em RB2
43 
44 
45 ; --- Saídas ---
46 #define led1 PORTB,RB1 ;LED 1 ligado em RB1
47 #define led2 PORTB,RB3 ;LED 2 ligado em RB3
48 
49 
50 ; --- Vetor de RESET ---
51 org H'0000' ;Origem no endereço 0000h de memória
52 goto inicio ;Desvia do vetor de interrupção
53 
54 ; --- Vetor de Interrupção ---
55 org H'0004' ;Todas as interrupções apontam para 
este endereço
56 retfie ;Retorna de interrupção
57 
58 
59 ; --- Programa Principal ---
60 inicio:
61 bank1 ;seleciona o banco 1 de memória
62 movlw H'F5' ;W = B'11110101'
63 movwf TRISB ;TRISB = H'F5' configura RB1 e RB3 
como saída
64 
65 bank0 ;seleciona o banco 0 de memória 
(padrão do RESET)
66 movlw H'F5' ;W = B'11110101'
67 movwf PORTB ;LEDs iniciam desligados
68 
69 loop: ;Loop infinito
70 
71 btfsc botao1 ;Botão foi pressionado?
72 goto salta1 ; senão salta1
73 bsf led1
74 goto segue
75 salta1:
76 bcf led1
77 goto segue
78 
79 segue:
80 btfsc botao2 ;Botão foi pressionado?
81 goto salta2
82 bsf led2
83 goto final
84 salta2:
85 bcf led2 ;Sim, liga led2
86 
87 final:
88 goto loop ;volta para label loop
89 
90 
91 end ;Final do programa

Continue navegando