Roteiro 01 Sistemas Microprocessados 2023
Roteiro 01 Sistemas Microprocessados 2023
Roteiro 01 Sistemas Microprocessados 2023
INTRODUÇÃO AO ASSEMBLY
EGOAVIL, J. Ciro1 , SANTOS, B. Thalysson 2
1
Professor do Curso de Engenharia Elétrica, Fundação Universidade Federal de Rondônia, Porto Velho, Rondônia, Brasil (e-mail: [email protected])
2
Acadêmico do Curso de Engenharia Elétrica, Fundação Universidade Federal de Rondônia, Porto Velho, Rondônia, Brasil (email: [email protected])
2) Objetivos Específicos
• Criar um projeto no ambiente MPLAB X;
• Configurar o projeto para a gravação no PIC;
• Emular o programa na plataforma PICSimLab.
B. MATERIAIS UTILIZADOS
• Software MPLAB X IDE v5.35;
• Software PICSimLab.
Figura 4: Seleção do Microcontrolador [4].
II. CRIAÇÃO DE UM PROJETO NO MPLAB X
Após realizada a instalação do MPLAB X e do emulador Neste passo, a ferramenta de programação deve ser sele-
PICSimLab, execute o software e aguarde a inicialização cionada. Selecione Simulator e clique em Next conforme
de todos os módulos e sistemas. Uma tela parecida com a a figura 5.
figura 2 será apresentada ao final da inicialização.
Para iniciar a programação no MPLAB, existe a neces- Figura 5: Seleção do simulador [4].
sidade de se criar um Projeto, onde estarão anexados os
arquivos fontes e todas as informações relativas ao projeto. No próximo passo, selecione o compilador mpasm e
Para criá-lo no MPLAB, clique no menu File → New clique em Next conforme a figura 6.
Project. Na caixa de diálogo que surgirá a seguir (Figura
3), selecione Stand Alone e clique em Next.
III. EXEMPLO 1
Como exemplo, propõe-se a implementação de um pro-
grama em Assembly que acione um LED conectado à porta
RB1 sempre que um botão conectado à porta RB0 seja
acionado. O código completo que realiza esta função é
apresentado no apêndice A, e explicado linha à linha nesta
seção. Figura 10: Configuração dos bits do programa [4].
F. LAÇO INFINITO
Definidas as configurações iniciais, uma rotina de repeti-
ção deve ser iniciada para fazer com que o microcontrola-
dor sempre execute determinadas tarefas. Neste trabalho o
Figura 14: Composição da porta PORTB [1]. programa deve verificar se o botão conectado à porta RB0
foi acionado, e acender ou apagar o LED de acordo com o
estado do botão.
4 Roteiro 01, 2023
Campus José Ribeiro Filho - Porto Velho, 04 de Março de 2023
Como mostra o script 5, a instrução BTFSC verifica se o IV. SIMULAÇÃO DO PROGRAMA NO PICSIMLAB
botão foi acionado, e em caso negativo a rotina apaga_led é Inicialize o PICSimlab e defina a placa à ser utilizada
chamada e grava o valor 0 na saída correspondente ao LED, através do menu superior. Clique em Board → McLab2
e se o botão for pressionado a instrução chamada na linha 3 como na figura 17.
é ignorada e a instrução BSF da linha 4 grava o valor 1 na
saída do LED. Ao final da rotina a instrução GOTO indica
que o laço infinito deve ser reiniciado.
1 loop
2 btfsc botao
3 goto apaga_led
4 bsf led
5 goto loop
6
7 apaga_led
8 bcf led
9 goto loop
10 end
Script 5: Laço infinito.
Se não houver nenhum erro a mensagem da figura 16 será Figura 18: Seleção do microcontrolador no emulador [4].
exibida, e agora o arquivo está pronto para ser gravado no
microcontrolador. Depois, para definir o clock do microcontrolador, clique
no menu suspenso à esquerda, como mostra a figura 19, e
escolha o valor 4.
Por último, o arquivo compilado para o microcontrolador O código mostrado no script 6 mostra essa sequência
deve ser carregado no PICSimLab. Clique no menu superior de instruções, sendo as linhas 3 e 5 responsáveis por
em File → Load Hex (figura 20). chamar uma rotina que faz o microcontrolador aguardar 500
milissegundos, explicada adiante.
1 loop
2 bsf PORTB,RB0
3 call delay500ms
4 bcf PORTB,RB0
5 call delay500ms
6 goto loop
Script 6: Laço infinito para o exemplo 2.
B. ROTINAS DE DELAY
Além de definir os mnemônicos para acessar as portas
e para alternar entre os bancos de memória, também é
necessário definir no cabeçalho os registradores de uso geral
para contar os ciclos de funcionamento do microcontrolador,
Figura 20: Carregamento do arquivo hexadecimal [4]. uma vez que o programa deste exemplo atua em função
de tempos decorridos. O script 7 define dois registradores
Navegue até o diretório raíz do projeto, e na pasta nos endereços de memória 0x20 e 0x21 para armazenar a
dist → default → production selecione e abra o arquivo contagem dos ciclos.
com extensão hex como mostrado na figura 21, e então o 1 #define temp1 H'20'
programa será executado no emulador PICSimLab. 2 #define temp2 H'21'
Script 7: Registradores de uso geral.
4 ; CONFIG
5 ; __config 0x3F3A
6 __CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
7
22
32 loop
33 btfsc botao ; Se o botao for pressionado pula a linha.
34 goto apaga_led ; Vai para a rotina que apaga o LED
35 bsf led ; Liga LED
36 goto loop ; Retorna para a label loop
37
38 apaga_led
39 bcf led ; Apaga o LED
40 goto loop ; Retorna para a label loop
41
18 inicio
19 bank1 ; Seleciona Banco 1
20 movlw H'00' ; W = 0b00000000 (ou 0x00)
21 movwf TRISB ; Passa W para o registrador TRISB
22 bank0 ; Seleciona o banco 0 de memoria
23
24 loop
25 bsf PORTB,RB0 ; Liga o LED
26 call delay500ms
27 bcf PORTB,RB0 ; Desliga o LED
28 call delay500ms
29 goto loop
30
31 delay500ms
32 movlw D'200'
33 movwf temp1 ; Armazena o valor 200
34
35 delay_aux1
36 movlw D'250'
37 movwf temp2 ; Armazena o valor 250
38
39 delay_aux2
40 nop ; Gasta 1 ciclo de maquina
41 nop
42 nop
43 nop
44 nop
45 nop
46 nop
47 decfsz temp2 ; Decrementa temp2 e testa se e igual a zero
48 goto delay_aux2 ; Total de 2500 ciclos
49 decfsz temp1 ; Decrementa temp1 e testa se e igual a zero
50 goto delay_aux1 ; Ao final 500000 ciclos
51 return
52
53 end