Curso Básico - Microcontrolador PIC - Parte 3

Tabelas: um excelente recurso de programação

Trabalhando com o Program Counter (PC). Ver o livro na página 125.

Trabalhando com o Program Counter para tabelas

Estrutura de uma tabela

ENDEREÇO

OPCODE

COMENTÁRIO

   

0FF

  

100

MOVWF NUMERO

;O registrador número é que contém o indicador

101

CALL TABELA

;Que será utilizado para chamar a tabela

102

  
   

1AA (TABELA)

MOVLW B’00000111’

;É colocada uma trava na tabela, igual ao nº de

;linhas

1AB

ANDWF NUMERO,W

;A operação AND garante o funcionamento da

;trava

1AC

ADDWF PCL,F

;É passado o número ao PCL e o desvio é feito

1AD

RETLW .2

;Retorna o valor decimal = 2

1AE

RETLW .4

;Retorna o valor decimal = 4

1AF

RETLW .8

;Retorna o valor decimal = 8

1B0

RETLW .16

;Retorna o valor decimal = 16

1B1

RETLW .32

;Retorna o valor decimal = 32

1B2

RETLW .64

;Retorna o valor decimal = 64

1B3

RETLW .128

;Retorna o valor decimal = 128

1B4

RETLW .255

;Retorna o valor decimal = 255

1B5

  

1B6

  

EXERCÍCIO 5: Contador acionado por botões com tabela BCD

Inserir nos programas 3 e 4 uma tabela Binário para BCD, eliminando a necessidade de uso de um conversor 4511 no seu hardware.

CI4511 para tabela BCD

Do modo como foi construída a placa com display para uso no kit da escola, deve ser configurada uma tabela de acordo com o mostrado abaixo:

Dígitos para tabela BCD

PORTB (bits)

7 6 5 4 3 2 1 0

            Terminais do display

h g f e d c b a

NÚMERO NO DISPLAY

VALOR BINÁRIO NA TABELA

0

B ’0 0 1 1 1 1 1 1’

1

B ’0 0 0 0 0 1 1 0’

2

B ’0 1 0 1 1 0 1 1’

3

B ’0 1 0 0 1 1 1 1’

4

B ’0 1 1 0 0 1 1 0’

5

B ’0 1 1 0 1 1 0 1’

6

B ’0 1 1 1 1 1 0 1’

7

B ’0 0 0 0 0 1 1 1’

8

B ’0 1 1 1 1 1 1 1’

9

B ’0 1 1 0 0 1 1 0’

A

B ’0 1 1 1 0 1 1 1’

B

B ’0 1 1 1 1 1 0 0’

C

B ’0 0 1 1 1 0 0 1’

D

B ’0 1 0 1 1 1 1 0’

E

B ’0 1 1 1 1 0 0 1’

F

B ’0 1 1 1 0 0 0 1’

Acesso indireto à memória

Um dos modos de acesso à memória RAM do PIC é chamado de aceso indireto, no qual se utilizam dois registradores SFR para realizar o acesso a qualquer endereço da memória RAM. São eles:

  • FSR (File Select Register): utilizado para especificação do endereço do registrador a ser acessado indiretamente;

  • INDF (Indirect Addressing File): utilizado para escrita/leitura do conteúdo do endereço especificado pelo registrador FSR.

Como estes registradores trabalham com 8 bits, podem acessar 256 posições da memória RAM, o que significa até dois bancos ao mesmo tempo, sempre nos pares 0-1 e 2-3.

Veja o exemplo a seguir utilizando o acesso indireto para fazer o apagamento da memória RAM.

OPCODE

COMENTÁRIO

MOVLW 0x20

;Primeiro endereço da memória RAM

MOVWF FSR

;Aponta o seletor para o primeiro endereço da RAM

LIMPA_RAM

 

CLRF INDF

;Faz a limpeza do endereço apontado por FSR

INCF FSR,F

;Passa para o próximo endereço

MOVF FSR,W

;Transfere o valor do próximo endereço para o WREG

XORLW 0x80

;Verifica se o último endereço +1 já chegou (resultado = 0)

BTFSS STATUS,Z

;Testa se já acabou

GOTO LIMPA_RAM

;Caso não tenha acabado retorna para a limpeza do próximo

;endereço, até que todos estejam limpos

EXERCÍCIO 6: Contador acionado por botões com tabela BCD

Inserir nos programas 3 e 4 uma rotina de limpeza da memória RAM antes de executar as demais tarefas.

No próximo artigo aprenderemos um pouco sobre interrupções no PIC. Aguardem!

Saiba mais

Curso de C com microcontroladores MCF51QE128 e MC9S08QE128 - Parte 1

PIC na IoT com ESP8266 e ThingSpeak

Microchip - Microcontroladores PIC de 8 bits

Outros artigos da série

<< Curso Básico - Microcontrolador PIC - Parte 2Curso Básico - Microcontrolador PIC - Parte 4 >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » Sistemas Digitais » Curso Básico - Microcontrolador PIC - Parte 3
Talvez você goste:
Comentários:

Deixe um comentário

avatar
  Notificações  
Notificar

Séries



Outros da Série

Menu