145
MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628A Apresentação: Eng. Antonio Carlos Lemos Júnior [email protected] FACTHUS Uberaba 02/2008

MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

  • Upload
    trannga

  • View
    260

  • Download
    10

Embed Size (px)

Citation preview

Page 1: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

MICROCONTROLADORES - PIC16F84/16F84A/16F628/16F628A

Apresentação:

Eng. Antonio Carlos Lemos Jú[email protected]

FACTHUSUberaba 02/2008

Page 2: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Qual a diferença entre Microcontrolador e Microprocessador?

Microcontrolador: É um componente eletrônico, dotado de uma inteligência programável internamente, utilizado no controle de processos lógicos. Possui internamente recursos como memória de programa (ROM/EEPROM), memória de dados (RAM), comunicação serial (USART) e temporizadores (TIMER´S). Tudo isto em uma única pastilha.

Microprocessador: É um componente eletrônico, dotado de uma inteligência não programável internamente. Depende de hardware externo tais como: memória RAM, ROM, EEPROM, USART.

2

Page 3: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Diagrama de Blocos do Microcontrolador e Microprocessador

3

a) Microcontrolador b) Microprocessador

Page 4: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Para que servem os Microcontroladores?

São utilizados em controle de processos controlando periféricos tais como: led´s, botões, display de sete segmentos, display de cristal liquido (LCD), resistências, relês, sensores diversos (pressão, temperatura, etc.)

4

Page 5: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Arquitetura HARVARD e Filosofia RISC

● Os microcontroladores PIC apresentam arquitetura interna tipo HARVARD enquanto que grande parte dos outros microcontroladores apresentam arquitetura do tipo VON-NEUMANN. ● Na arquitetura tipo VON-NEUMANN existe apenas um barramento(BUS – 8 Bits) tanto para dados quanto para instruções.● Na arquitetura HARVARD existem dois barramentos internos. Um para dados (BUS – 8 Bits) e outro para instruções (BUS – 12, 14 ou 16 Bits)● Devido o barramento de instrução ser maior do que 8 Bits este inclui o dado e o local onde ele vai atuar. Desta maneira sobrando apenas em média 35 instruções (RISC).

5

Page 6: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Estrutura interna PIC-16F84/F84A

6

Page 7: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Estrutura interna PIC-16F628/F628A

7

Page 8: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Ciclos de Máquina

8

● O clock interno de um microcontrolador é divido por quatro. Portanto um clock externo de 4 Mhz será de 1 Mhz internamente e por isso cada ciclo de máquina dura 1 μs.● Portanto teremos quatro fases Q1, Q2, Q3 e Q4. No primeiro ciclo ocorre automaticamente o incremento do contador de programa. No quarto ciclo ocorre a busca na memória da próxima instrução sendo armazenada no registrador de instruções.● A execução da instrução ocorre nos ciclos de Q1 até Q4.

Page 9: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Memórias

9

● A memória de programa dos PICs 16F84/F84A/F628/F628A são do tipo Flash. Este tipo de memória permite que o microcontrolador seja regravado.

Vetor de RESET

● Primeiro endereço de memória que será executado quando o PIC começar a rodar (Após alimentação ou RESET). O endereço é na forma hexadecimal 0x00.

Vetor de INTERRUPÇÃO

● As rotinas de interrupção são armazenadas juntamente com o resto do programa. No entanto existe um endereço para tratamento destas. O endereço é na forma hexadecimal 0x04.

Page 10: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Memórias

10

Pilha (Stack)

● Local totalmente separado da memória de programação, em que serão armazenados os endereços de retorno quando utilizarmos instruções de chamadas de rotinas. O tamanho da pilha varia de acordo com o modelo de PIC e isto irá determinar a quantidade de rotinas que poderão ser chamadas ao mesmo tempo.

Page 11: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Memórias

11

Memória de Dados

● Memória RAM utilizada para guardar todas as variáveis e registradores utilizados nos programas.

● Armazena dados de 8 bits e é volátil, ou seja, quando o PIC é desligado os dados contidos nesta memória serão perdidos.

● São agrupadas em bancos de memórias: BANK0, BANK1 ...

● Ainda podemos dividí-las em dois grupos: Registradores especiais e Registradores de uso geral.

Page 12: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Memórias

12

Registradores Especiais

● Os registradores especiais (SFR´s) são utilizados pelo processador para execução do programa e processamento na Unidade Lógica Aritmética (ULA).

● Ocupam espaço na RAM e podem ser acessados como se fossem variáveis.

● Podem ser lidos ou escritos tanto pelo usuário quanto pelo HARDWARE.

Registradores de Uso Geral

● Área destinada ao armazenamento de variáveis criadas pelo usuário.

Page 13: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Memórias

13

EEPROM

● Encontrada em alguns modelos de PIC está memória ao contrário da memória RAM não perde a informação mesmo que o PIC seja desligado.

● Este tipo de memória é ideal para armazenar senhas ou qualquer outro tipo de dado que deva ser utilizado no momento em que o PIC seja ligado.

● Nos modelos de PIC que não possuam memória EEPROM interna pode-se acrescentar uma memória EEPROM externa.

Page 14: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Interrupções

14

O que são e como funcionam ?

● São ações tratadas imediatamente pelo hardware. Desta maneira tornando-as muito rápidas.● Servem para interromper imediatamente o programa e atendê-lo em outras tarefas que sejam de importâncias imediata. ● Após o tratamento da interrupção o programa voltará ao ponto onde estava quando a interrupção ocorreu.

Interrupções existentes no PIC

● As interrupções do PIC são: estouro de tempo, externa, mudança de estado, fim da escrita na EEPROM, USART etc ...

Page 15: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Interrupções

15

Interrupção por estouro de tempo

● Normalmente utilizada para contagem de tempo. Toda vez que o contador passar da contagem 255 (8 bits TIMER0) ocorrerá esta interrupção e o contador será zerado e iniciado nova contagem.

Interrupção externa

● Esta interrupção é gerada por um sinal externo ligado ao pino RB0. Pode ser utilizada para realizar sincronismo entre periféricos, comunicação entre micros, reconhecimento de botão ou outro sinal sistema.

Interrupção por mudança de estado

● Esta interrupção está relacionada diretamente às portas RB4, RB5, RB6 e RB7. Este tipo de interrupção pode ser utilizado para sincronizar o PIC com a rede elétrica.

Page 16: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Introdução ás Interrupções

16

Interrupção por fim de escrita na EEPROM

● Serve para informar quando a escrita na memória EEPROM já terminou. Isto deve-se ao fato de que a memória EEPROM é lenta para ser escrita desta maneira utilizamos esta interrupção para não termos que ficar aguardando a escrita da EEPROM.

Interrupção por USART

● Utilizado para informar quando os dados estão prontos para enviar e quando os dados chegaram ao PIC. Também conhecida como comunicação serial.

Page 17: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

O PIC 16F84/F84A

17

● Microcontrolador de 18 pinos● 13 portas configuráveis como entrada ou saída● 4 interrupções (TMR0, Externa, Mudança de estado e EEPROM)● 1 Temporizador (8 Bits)● Memória tipo FLASH● Memória tipo EEPROM● Via de programação com 14 bits● Apenas 35 instruções

Page 18: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

O PIC 16F628/F628A

18

● Microcontrolador de 18 pinos● 16 portas configuráveis como entrada ou saída● 10 Interrupções (TMR0, TMR1, TMR2, Externa, Mudança de estado, EEPROM, USART – Transmissão e Recepção, Comparador, e Captura)● 3 Temporizador (TMR0 de 8 Bits, TMR1 de 16 Bits, TMR2 de 8 Bits)● 2 comparadores analógicos ● Memória tipo FLASH● Memória tipo EEPROM● Via de programação com 14 bits● Apenas 35 instruções● USART – Transmissão serial

Page 19: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Nomenclaturas Utilizadas

19

● 2 Conjuntos de portas:

● PORTA: RA0, RA1, RA2, RA3, RA4 p/ 16F84/84A mais RA5, RA6 e RA7 p/ 16F628/628A.

● PORTB: RB0, RB1, RB2, RB3, RB4, RB5, RB6 e RB7

● O pino RA4 pode ser utilizado para incrementar o TMR0

● O pino RB0 pode ser utilizado para gerar uma interrupção externa

● Os pinos RB4, RB5, RB6 e RB7 são utilizados para gerar interrupções de mudança de

estado.

● Os pinos VDD (+5V) e VSS (GND) são os pinos de alimentação.

● O oscilador externo deve ser ligado em OSC1 e OSC2

● O pino /MCLR dever ser deixado em nível alto para que o PIC possa prosseguir o seu funcionamento.

Page 20: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Memória de Programa

20a) PIC16F84/F84A b) PIC16F628/F628A

Page 21: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Memória de Dados 16F84/F84A

21

Page 22: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Memória de Dados 16F628/F628A

22

Page 23: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Registradores 16F84/F84A

23

Page 24: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Registradores 16F628/F628A

24

Page 25: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Registradores 16F628/F628A

25

Page 26: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Registradores 16F628/F628A

26

Page 27: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Registradores 16F628/F628A

27

Page 28: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

28

Registrador STATUS

● Este registrador serve para mostrar o estado da ULA.

IRP: Seletor de banco de memória para endereçamento indireto:0 = Banco 0 e 1 (00 h – FF h)1 = Banco 2 e 3 (100 h – 1FF h)Nos PIC´s 16F84/F84A é mantido sempre em zero.

RP1 e RP0: Seletor de banco de memória usado para endereçamento direto:00 = Banco 0 (00 h – 7F h)01 = Banco 1 (80 h – FF h)10 = Banco 2 (100 h – 17F h)11 = Banco 3 (180 h – 1FF h)

Page 29: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

29

Registrador STATUS

● Este registrador serve para mostrar o estado da ULA.

/TO: Indicação de Time-Out0 = Indica que ocorreu um estouro de Watch Dog (WDT)1 = Indica que ocorreu um power-up ou foram executadas as intruções

CLRWDT ou SLEEP

/PD: Indicação de Power-Down0 = Indica que a instrução SLEEP foi executada.1 = Indica que ocorreu um power-up ou foi executada a instrução

CLRWDT

Z: Indicação de Zero0 = Indicando que o resultado da última operação (lógica ou aritmética)

não foi zero1 = Indica que a última operação (lógica ou aritmética) resultou em zero.

Page 30: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

30

Registrador STATUS

● Este registrador serve para mostrar o estado da ULA.

DC: Digit Carry/Borrow0 = A última operação da ULA não ocasionou um estou de digito.1 = A última operação da ULA ocasionou um estouro (carry) entre o bit 3

e 4, isto é o resultado ultrapassou os 4 bits menos significativos.Utilizando quando se trabalha com números de 4 bits.

C: Carry/Borrow0 = A última operação da ULA não ocasionou um estouro (carry).1 = A última operação da ULA ocasionou um estouro (carry) no bit mais

significativo, isto é, o resultado ultrapassou os 8 bits disponíveis.

Page 31: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

31

Registrador OPTION – Acessado como OPTION_REG

● Este registrador serve para configuração opções de funcionamento do microcontrolador

/RBPU: Habilitação dos pull-ups internos do PORTB0 = Pull-ups habilitados para todos os pinos do PORTB configurados para

entrada.1 = Pull-ups desabilitados.

INTEDG: Configuração da borda que gerará a interrupção externa no RB00 = A interrupção ocorrerá na borda de descida.1 = A interrupção ocorrerá na borda de subida.

T0CS: Configuração do incremento para o TMR00 = TMR0 será incrementado internamente pelo clock da máquina.1 = TMR0 será incrementado externamente pela mudança no pino RA4/T0CKI.

Page 32: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

32

Registrador OPTION – Acessado como OPTION_REG

● Este registrador serve para configuração opções de funcionamento do microcontrolador

T0SE: Configuração da borda que incrementará o TMR0 no pino RA4/T0CKI, quando T0CS = 1

0 = O incremento ocorrerá na borda de subida.1 = O incremento ocorrerá na borda de descida.

PSA: Configuração de aplicação do prescaler:0 = O prescaler será aplicado ao TMR0.1 = O prescaler será aplicado ao WDT.

Page 33: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

33

Registrador OPTION – Acessado como OPTION_REG

● Este registrador serve para configuração opções de funcionamento do microcontrolador

PS2, PS1 e PS0

Configuração de valor de prescaler:

Bits 2, 1, 0 TMR0 WDT000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8100 1:32 1:16101 1:64 1:32110 1:128 1:64111 1:256 1:128

Page 34: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

34

Registrador INTCON

● Este registrador serve para configurar e identificar as interrupções.

GIE: Habilitação geral das interrupções (Chave Geral)0 = Nenhuma interrupção será tratada.1 = As interrupções habilitadas serão tratadas individualmente.

EEIE: Habilitação da interrupção de final de escrita na EEPROM0 = A interrupção não será tratada.1 = A interrupção será tratada.

T0IE: Habilitação da interrupção de estouro do TMR00 = A interrupção não será tratada.1 = A interrupção será tratada.

INTE: Habilitação da interrupção externa no pino RB00 = A interrupção não será tratada1 = A interrupção será tratada

Page 35: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

35

Registrador INTCON

● Este registrador serve para configurar e identificar as interrupções.

RBIE: Habilitação da interrupção por mudança de estado nos pinos RB4 a RB70 = A interrupção não será tratada.1 = A interrupção será tratada.

T0IF: Identificação da interrupção de estouro do TMR00 = Esta interrupção não ocorreu.1 = Esta interrupção ocorreu.

INTF: Identificação da interrupção externa no pino RB00 = Esta interrupção não ocorreu.1 = Esta interrupção ocorreu.

RBIF: Identificação da interrupção por mudança de estado nos pinos RB4 a RB70 = Esta interrupção não ocorreu.1 = Esta interrupção ocorreu.

Page 36: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

36

Registrador TRISA e TRISB

● Estes registradores servem para configurar o PORTA e o PORTB como entrada ou saída

● Quando os bits estiverem setados com o valor 1 o pino da porta comportará como uma entrada (1 – INPUT) e quando estiver setado o valor 0 o pino da porta comportará como saída (0 - OUTPUT)

PIC16F84/F84A

PIC16F628/F628A

Page 37: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

37

Registrador PORTA e PORTB

● Estes registradores servem para acessar as portas A e B

● Os pic´s 16F84/F84A possuem a porta A e B. Na porta A somente 5 pinos estão disponíveis. Na porta B estão disponíveis os 8 pinos.

● Os pic´s 16F628/F628A possuem a porta A e B. Na porta A estão disponíveis os 8 pinos assim como na porta B estão disponíveis os 8 pinos.

PIC16F84/F84A

PIC16F628/F628A

Page 38: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

38

Registrador TMR0, TMR1 e TMR2

● Estes registradores servem para fazer contagem

● Os pic´s 16F84/84A possuem somente 1 contador. Este contador é de 8 bits, ou seja, pode contar até 255. Este contador pode ser incrementado automaticamente ou a partir da mudança no pino RA4.

● Os pic´s 16F628/F628A possuem três contadores: TMR0, TMR1, TMR2. Os contadores são de: 8, 16 e 8 bits respectivamente. O contador TMR1 pode contar até 65535.

PIC16F84/F84A

PIC16F628/F628A

Page 39: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

39

Registrador WDT – Watchdog Timer

● Este registrador serve para ressetar o PIC caso este trave.

● O pic possui um RC interno somente para a operação do WDT.

● Seu tempo de incremento é automático e constante.

● O seu tempo padrão de estouro é de 18 ms

● O programador só pode zerá-lo utilizando o comando CLRWDT.

● Caso o WDT não for zerado e este estourar o PIC será resetado.

● Pode ser desligado, porém não pode ser ligado em tempo de execução

Page 40: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

40

PRESCALER

● É um divisor configurável que aplica-se tanto no WDT ou no TMR0.

● É configurado através do registrador OPTION através dos bits PS2, PS1 e PS0

● O bit PSA do registrador OPTION é utilizado para indicar em quem será aplicado o divisor: WDT ou TMR0

● Um exemplo prático: Caso utilizemos um clock externo de 4 Mhz internamente o clock é de 1 Mhz e terá instruções sendo rodadas a cada 1 μs. Desta forma se aplicarmos um divisor 1:4 o TMR0 será incrementado a cada 4 ciclos de máquina desta forma o seu estouro deixa de ocorrer em 256 μs e passa a ocorrer a cada 1024 μs.

● A mesma análise pode ser aplicada ao WDT. Caso seja aplicada um divisor de 1:4 ele deixa de estourar em 18 ms e passa a estourar em 72 ms

● O prescaler deve ser aplicado ao WDT para que o TMR0 utilize o divisor em 1:1

Page 41: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

41

EEPROM - EEADR

● Registrador onde será especificado o endereço fazer a leitura ou escrita na EEPROM.

EEPROM - EEDATA

● Este registrador possui duas funções: Na operação de escrita ele guarda o dado a ser gravado na EEPROM. Na operação de leitura ele guarda o dado lido da EEPROM.

● Para os PICs 16F628/F628A estes registradores são acessados pelos endereços: EEADR = 9B h e o EEDATA = 9A h.

Page 42: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

42

EECONS – EECON1 e EECON2

● São os registradores utilizados para configurar a EEPROM

EECON1

● Este registrador é responsável pela leitura e escrita na EEPROM

● Para os PICs 16F628/F628A este registrador é acessado pelo endereço: EEADR = 9B h e o EEDATA = 9C h. O bit EEIF é acessado no registrador PIE1 para verificar o fim de escrita na EEPROM.

● EEIF: Identificação de final da escrita na EEPROM0 = Esta interrupção não ocorreu1 = Esta interrupção ocorreu

Page 43: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo os Registradores

43

● WRERR: Identificação de erro durante a escrita na EEPROM0 = Não ocorreu erro, a escrita ocorreu sem problemas1 = Um erro ocorreu por uma escrita não terminada.

● WREM: Habilitação de escrita na EEPROM (Bit de segurança)0 = Não disponibilizar escrita na EEPROM1 = Disponibilizar escrita na EEPROM

● WR: Ciclo de escrita na EEPROM0 = Este bit só pode ser zerado pelo hardware , quando o ciclo de escrita

termina.1 = Inicia o ciclo de escrita.

● RD: Ciclo de escrita da EEPROM:0 = Este bit só pode ser zerado pelo hardware, quando o ciclo de leitura

termina.1 = Inicia ciclo de leitura.

Page 44: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Resumo das Condições Após Reset

44

Page 45: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo o Set de Instruções

45

Work: Registrador temporário para operações da ULA. Conhecido no Assembler do PIC como W.

File: Referência a um registrador. Será adotado a letra F para sua representação.

Literal: Um número qualquer que pode ser escrito na forma decimal, binário ou hexadecimal. Utiliza-se a letra L para representação de instruções e a letra k para seus argumentos.

Destino: Local onde deve ser armazenado o resultado da operação. São possíveis dois locais para serem guardados os resultados: O próprio registrador passado como argumento ou no registrado W.

Bit: Refere-se a um bit específico de um Byte. Utiliza-se a letra B para sua representação nos nomes de instruções e a letra b para seus argumentos.

Skip: Significa “pulo”, é utilizado para criar desvios pulando a próxima linha.

Page 46: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo o Set de Instruções

46

Set: Refere-se ao ato de setar um bit, ou seja, torná-lo igual a 1 (um) .

Clear: Refere-se ao ato de ressetar um bit, ou seja, torná-lo igual a 0 (zero).

Zero: Algumas instruções podem gerar desvio caso o resultado da operação seja igual a zero.

ADD: SomaAND: Lógica “E”CLR: Limpar, zerar(Clear)COM: ComplementoDEC: Decremento de uma unidade.INC: Incremento de uma unidade.IOR: Lógica “OU”.MOV: Mover, transferir para algum lugar.RL: Rotacionar 1 bit para a esquerda.RR: Rotacionar 1 bit para a direita.

Page 47: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Conhecendo o Set de Instruções

47

SUB: Subtração.SWAP: Inversão entre as partes alta e baixa de um registrador.XOR: Lógica “Ou exclusivo”.

Construção dos nomes das Instruções:

Os nomes das instruções são feitas fazendo a junção dos termos vistos anteriormente. Por exemplo: Realizar a função de decrementar um registrador F.

Decrementar (DEC) um registrador(F) = DECF

A partir do nome de uma instrução saber o que será feito:

DECFSZ = Decrementa (DEC) um registrador (F) pula (S) se o resultado for zero (Z).

Page 48: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Resumo das Instruções

48

Page 49: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Considerações do Hardware

49

Alimentação:

O pic deve ser alimentado com uma fonte bem estabilizada, ou seja, que não tenha tantos ruídos e nem ripples. O GND deve ser ligado ao pino 5 enquanto que o o VCC deve ser ligado ao pino 14. A tensão nominal do PIC é de 5 VCC. Recomenda-se a ligação de um capacitor cerâmico de desacoplamento entre os estes pinos no valor de 100 pF a 100 nF.

Osciladores externos:

Basicamente existem quatro tipos de osciladores: RC, RESSOADOR, CRISTAL e Híbrido ou Circuitos de Oscilação.

Page 50: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Considerações do Hardware

50

RC:

Este tipo de oscilador é o mais simples e portanto o menos preciso, variando muito com a tolerância dos componentes e a temperatura.

Neste caso somente será utilizado o pic OSC1. Se verificarmos o pino OSC2 terá freqüência quatro vezesmenor que OSC1.

Page 51: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Considerações do Hardware

51

RESSOADOR:

O ressoador cerâmico é outra opção. É bem mais estável que o RC porém não é tão barato quanto o anterior. Existe dois tipos de ressoadores, com 3 e 2 pinos, que devem ser montados conforme o esquema:

Page 52: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Considerações do Hardware

52

CRISTAIS:

Os cristais são os osciladores mais precisos porém os mais caros. Deve ser utilizado sempre que a precisão do sistema for requerida.

Page 53: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Considerações do Hardware

53

HÍBRIDO OU CIRCUITOS DE OSCILAÇÃO:

Podem ser utilizados cristais híbridos ou circuitos próprios para oscilação os quais devem ser ligados diretamente ao pino OSC1, como no esquema mostrado para o RC.

POWER-ON RESET (POR) BÁSICO:

Além da alimentação e do oscilador, o PIC precisa de um POR. O sistema básico para isto é a ligação do VCC diretamente ao pino 4 (/MCLR).

Page 54: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Programando o PIC

54

● Antes de começar a programar o PIC devemos ter em mente a organização do programa. Isto facilitará futuras revisões ou alterações no mesmo.

● A utilização de comentário é outro ponto forte na ajuda de possíveis reestruturações. Deve ser feita ao mesmo tempo em que for sendo feita a programação

● Os comentários são feitos utilizando um ; antes das frases que serão comentadas. Caso necessite de dar espaços entre código e variáveis utilize tabulação (TAB) .

Ex.: ; Isto é um comentário MOVLW B'00000000' ; Move o número binário para o

; acumulador

Page 55: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Programando o PIC

55

● As constantes e definições são declararadas da seguinte maneira:

nome_da_variável EQU endereço_de_memória

ou

nome_da_constate EQU valor_da_constante

Para informarmos um número para o assembler do PIC usamos as seguintes nomenclaturas:

Decimal: D'número' ou .númeroHexadecimal: H'número' ou 0XnúmeroBinário: B'número'ASCII: A'caracter'

Page 56: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Programando o PIC

56

Alguns exemplos de declaração:

STATUS EQU H'0003'FSR EQU H'0004'PORTA EQU H'0005'PORTB EQU H'0006'

Além do EQU existe a diretriz #DEFINE que é muito mais poderosa pois ela é utilizada para substituir uma expressão inteira.

EX.:

#DEFINE LED PORTB,1

Page 57: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Estruturação do Programa

57

; Programa ......: ACILED ; Programador .: Eng. Antonio Carlos Lemos Júnior; Versão ..........: 1.0; Objetivo ........: O programa em questão deverá acionar um LED toda vez que o pino RB1 estiver em alto.

; Arquivos e definições#INCLUDE <P16F84.INC>

; Página de memória; Definição de comandos de usuário para alterar página de memória#DEFINE BANK0 BCF STATUS,RP0 ; Seta banco zero de memória#DEFINE BANK1 BSF STATUS,RP0 ; Seta banco um de memória

; Definição de variáveisCBLOCK 0X0C ; Endereço inicial da memória de usuário

W_TEMP ; Registradores temporários para usar junto às interrupçõesSTATUS_TEMPFLAG; Novas variáveis

ENDC

; Definição de flags internos, constantes #DEFINE ESTOURO_TEMPO FLAG,0TEMPO_LED EQU .30

Page 58: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Estruturação do Programa

58

; Definição das entradas#DEFINE ACENDE_APAGA_LED PORTB,0

; 0 => O LED não será acesso; 1=> O LED será acesso

; Definição das saídas#DEFINE LED PORTB,1

; 0 => O LED ficará apagado; 1 => O LED ficará acesso

; Vetor de RESETORG 0X00 ; Endereço inicial de processamento GOTO CONFIGURACAO

; Inicio das interrupções – O primeiro procedimento é salvar o acumulador W e o registrador STATUS.ORG 0X04MOVWF W_TEMPSWAPF STATUS, WMOVWF STATUS_TEMP

; Comando de verificação de qual interrupção foi acionada

; Saída das interrupções – Os valores de W e STATUS devem ser recuperados.SAI_INTERRUPCAO

SWAPF STATUS_TEMP,WMOVWF STATUSSWAPF W_TEMP, F

Page 59: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Estruturação do Programa

59

SWAPF W_TEMP,WRETIFIE

; Início das rotinas e sub-rotinasSUB-ROTINA1

; CORPO DA ROTINA

RETURN

; Início da configuraçãoCONFIGURACAO

BANK1 ; Altera para banco 1 de memóriaMOVLW B'00000000'MOVWF TRISA ; Define as entradas e saídas da porta AMOVLW B'00000000'MOVWF TRISB ; Define as entradas e saídas da porta BMOVLW '10000100'MOVWF OPTION_REG ; Define as opções de operaçãoMOVLW '00000000'MOVWF INTCON ; Define as opções de interrupçãoBANK0 ; Retorna ao banco principal de memória

; Inicialização das variáveis

Page 60: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Estruturação do Programa

60

; Rotina PrincipalINICIO

; Corpo da rotina principalGOTO INICIO; Fim do Programa

END

Diretriz ORGUtilizada para indicar a posição da memória de início do programa e de

início do tratamento de interrupção.

Diretriz ENDUtilizada para indicar o final do programa

Diretriz CBLOCK e ENDCUtilizada para reservar espaço para as variáveis de forma seqüencial no

mapa de memória. O endereço inicial para os PICs 16F84/84A/628/628A são 0x0C

Page 61: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com Memória

61

Conhecendo os Bancos de Memória (BANK0 e BANK1):

Para trabalharmos com os bancos de memória devemos setar ou ressetar os bits RP0 e RP1 do registrador STATUS. Lembrando que para o PIC 16F84 só é necessário alterar o bit RP0. Ex.:

#DEFINE BANK0 BCF STATUS, RP0#DEFINE BANK1 BSF STATUS, RP0

Lidando com Dados:

Basicamente os comandos utilizados no PIC para manipulação de dados são os seguintes:

MOVLW k Move um literal para o registrador W (Acumulador)MOVWF f Move o valor de work (W) para um registrador (F)MOVF f,d Move o valor de um registro (F) para um local de destino (F ou W)

Para guardarmos um número em uma posição de memória primeiramente movemos para o registrador W e depois para a posição de memória desejada.

Page 62: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com Memória

62

Existem também os comandos CLRF CLRW que são usados da seguinte maneira:

CLRF f Limpa o registrador CLRW Limpa o acumulador, mais afeta o registrador STATUS

Pode-se limpar o acumulador sem afetar o registrador STATUS a maneira para se fazer isso é:

MOVLW 0x00 Limpa o acumulador sem afetar o STATUS.

Page 63: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Vetor de Reset

63

Toda vez que o PIC é iniciado ou resetado este é o endereço inicial de programa. Este endereço é 0x00. Este endereço pode mudar em dispositivos mais antigos. A diretriz que identifica o vetor de reset é a seguinte:

ORG 0x00GOTO INICIO

INICIOBANK1MOVLW B'00000000'MOVWF TRISBMOVLW B'00000001'MOVWF TRISABANK0

Page 64: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Inicializando Variáveis

64

É muito importante que as variáveis sejam inicializadas, mesmo que o seu valor seja igualado a zero(0).

;--------------------------------------------;- Inicialização das variáveis;--------------------------------------------CLRF PORTACLRF PORTBMOVLW .10MOVWF CONTADOR

Page 65: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com Rotinas

65

No PIC existem dois tipos de rotinas: rotinas de desvios e rotinas de chamadas. As rotinas de desvio são feitas utilizando o comando GOTO juntamente com um label que identificará para onde o programa deverá ser desviado. As rotinas de chamadas são acessadas através do comando CALL. Ao charmar este comando o endereço do programa PC+1 é guardado na pilha STACK, para que o sistema possa retornar a ele mais tarde utilizando o comando RETURN.

Page 66: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com Rotinas

66

Rotinas de Desvio

As rotinas de desvio são utilizadas para realizar desvios dentro do programa. A sintaxe do comando segui abaixo:

GOTO nome ; onde nome é o identificador do local onde se deseja pular

O identificador deve estar na primeira coluna do programa como segue abaixo:

INICIOMOVLW .20MOVWF TRISB

MODIFICAMOVLW .10MOVWF TRISAGOTO INICIO

Page 67: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com Rotinas

67

Rotinas de Desvio

Além disto existe a possibilidade de pularmos algumas linha utilizando o comando GOTO.

A sintaxe do comando segue abaixo:

GOTO $+3 ;Pula três linha para baixoGOTO $-2 ;Pula duas linhas para cima

OBS.: Não utilizar o comando para pulos muito grandes.

Rotinas de Chamada

As rotinas de chamadas são simplesmente funções que devem ser executadas várias vezes dentro do programa. Desta maneira quando criamos uma função iremos economizar espaço em memória, pois guardamos apenas uma vez aquela rotina.

Page 68: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com Rotinas

68

Rotinas de chamada

A sintaxe do comando segue abaixo:

CALL funcao ;onde nome é a identificação da rotina

Quando chamamos uma função o endereço de programa posterior a linha onde a função foi chamada é guardada na pilha STACK. Devemos ficar atentos a quantidade de endereços, no STACK é de apenas 8 para os PIC's 16F84/84A, 16F628/628A.

Portanto esta função deve ser utilizada com o devido cuidado. As sintaxes de retorno são:

RETURN ;finaliza a rotina voltando ao último endereço da pilha.RETLW k ;finaliza a rotina voltando ao último endereço da pilha com o

;valor k (literal) em W.

Page 69: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Tomando Decisões e Fazendo Desvios

69

A filosofia RISC tem a vantagem de ter poucas instruções a serem guardadas no entanto esta vantagem torna-se uma desvantagem principalmente quando é necessária algum comando que não esteja no set de instruções do ASSEMBLER do PIC. Desta maneira torna-se necessária a elaboração de alguns comandos utilizando os comandos básicos.

Testando BITS e FLAGS (BTFSC e BTFSS)

Os comandos utilizados para testar bits de portas ou de flags são: BTFSS e BTFSC. A sintaxe do comando segue abaixo:

BTFSC f,b ;em que f é o registrador e b o bit a ser testadoLinha1 ;passa por esta linha se o bit testado for 1Linha2 ;pula para esta linha se o bit testado for 0

BTFSS f,b ;em que f é o registrador e b o bit a ser testadoLinha1 ;passa por esta linha se o bit testado for 0Linha2 ;pula para esta linha se o bit testado for 1

Page 70: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Tomando Decisões e Fazendo Desvios

70

Além das portas, registrador, flags pode-se utilizar a diretiva DEFINE para substituir diretamente um bit, como segue abaixo:

#DEFINE BOTAO PORTA,0 ;Define o botão no pino RA0;0-> Liberado;1->Pressionado

BTFSS BOTAO ;O botão está pressionadoGOTO BT_LIB ;Não, vai tratar botão liberadoGOTO BT_PRES ;Sim, vai trata botão pressionado

Mudando BITS e FLAGS (BSF e BCF)

As instruções BSF e BCF são utilizadas para alterar o valor de um bit. A sintaxe de comando segue abaixo:

BSF f,b ;em que f é o registrador e b é o bit que será setadoBCF f,b ;em que f é o registrador e b é o bit que será ressetado

Page 71: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com as Portas

71

É através das portas que iremos ser informados ou iremos informar as condições de trabalho do microcontrolador. Desta maneira a leitura e a escrita nas portas torna-se fundamental.

Lendo uma Porta

Caso tenhamos ligado um barramento de dados paralelo a porta B do microcontrolador e queiramos fazer a leitura completa dos dados que chegam a esta porta devemos proceder da seguinte maneira:

MOVF PORTB,W ;Move o conteúdo do portb para o acumuladorMOVWF DADOS ;Escreve o valor do acumulador para o registrador

;DADOS

Page 72: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com as Portas

72

Escrevendo em uma Porta

Da mesma forma que a leitura a escrita é um processo fundamental no trabalho com o PIC. É através da escrita que podemos comunicar com o mundo exterior. A escrita é feita utilizando a seguinte sintaxe:

BANK1 ;Muda para banco 1BSF TRISB,0 ;Transforma RB0 em entradaBANK0 ;Retorna para banco 0

;Outros comandos

BSF PORTB,0 ;Escreve 1 no Latch do RB0 (Que ainda é entrada)BANK1 ;Muda para banco 1BCF TRISB,0 ;Transforma RB0 em saída. Neste momento o pino

;será inicializado em 1 devido ao LatchBANK0 ;retorna para banco 0

Page 73: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

Trabalhando com as Portas

73

Escrevendo em uma Porta

Devido a esta estrutura interna não é recomendado a escrita e posteriormente a leitura em instruções seguintes. Desta maneira utiliza-se a instrução NOP. A instrução NOP desperdiça um ciclo de máquina sem fazer nada. A sintaxe utilizando o NOP fica da seguinte maneira:

MOVLW .10 ;Escreve 10 em WMOVWF PORTB ;Transfere o valor de W (10) para o PORTBNOP ;Perde um ciclo de máquina sem fazer nadaMOVF PORTB,W ;Lê o valor do PORTB e coloca em WMOVWF DADO ;Transfere o valor de W (PORTB) para DADO

Page 74: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PRIMEIRO PROGRAMABOTÃO E LED

74

O hardware proposta acima deve funcionar da seguinte maneira: O led será usado para representar o estado do botão, isto é, aceso para botão pressionado e apagado para o botão liberado.

Page 75: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PRIMEIRO PROGRAMABOTÃO E LED - FLUXOGRAMA

75

Page 76: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PRIMEIRO PROGRAMABOTÃO E LED

76

;Programa.........: Aciona_LED;Objetivo..........: O software em questão será utilizado para demonstrar se um botão está ou não pressionado.

#INCLUDE <P16F84.INC>

#DEFINE BANK0 BCF STATUS,RP0#DEFINE BANK1 BSF STATUS,RP0

CBLOCK 0X0CW_TEMPSTATUS_TEMP

ENDC

#DEFINE BOTAO PORTA,2#DEFINE LED PORTB,0

ORG 0X00GOTO INICIOORG 0X04RETFIE

INICIOBANK1MOVLW B'00000100'MOVWF TRISAMOVLW B'00000000'MOVWF TRISB

Page 77: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PRIMEIRO PROGRAMABOTÃO E LED

77

MOVLW B'10000000'MOVWF OPTION_REGMOVLW B'00000000'MOVWF INTCON

BANK0CLRF PORTACLRF PORTB

MAINBTFSS BOTAOGOTO BOTAO_LIBGOTO BOTAO_PRES

BOTAO_LIBBCF LEDGOTO MAIN

BOTAO_PRESBSF LEDGOTO MAIN

END

Page 78: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

78

Todos os programas implementados microcontroladores necessitam de algum tipo de conta para que sua lógica funcione adequadamente. O PIC 16F84/84A/628/628A não tem instruções com pontos fortes em matemática. No entanto veremos que ele possui os recursos necessários para que possamos implementar nossas próprias funções para cálculo bem mais avançados.

SOMANDO (INCF, INCFSZ, ADDWF e ADDLW)

O PIC possui dois grupos de instruções para operação de adição sendo um usado para adições unitárias e o outro para adições diversas. Dentro desses grupos, possuímos as instruções que seguem abaixo:

INCF f,d ; em que f é o registrador e d o destino onde será guardado o resultado ; da conta (f + 1 -> d).

INCFZ f,d ; em que f é o registrador e d o destino onde será guardado o resultado ; da conta (f + 1 -> d).

ADDWF f,d ; em que f é o registrador e d o destino onde será guardado o resultado; da conta (f + k -> d).

ADDLW k ; em que k é o número que será somado ao W o resultado é mantido ; em W (W + k -> W).

Page 79: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

79

Exemplo da utilização das instruções:

INCF

CLRF CONTA ; zera o contadorLOOP

CALL BIP ; chama a rotina BIP que emitirá um SOMINCF CONTA,F ; incrementa o contador (CONTA = CONTA + 1)BTFSS CONTA,3 ; testa o BIT número 3 do contador. Quando este BIT for

; igual a 1, significa que contador = 8.GOTO LOOP ; contador ainda não é 8, retorna para LOOP.

END ; contador igual 8, acabou o exemplo.

Page 80: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

80

Exemplo da utilização das instruções:

INCFSZ

MOVLW .246 ; move 246 para o acumuladorMOVWF CONTA ; inicia o contador com 246 (256 - 10).

LOOPCALL BIP ; chama a rotina BIP que emitirá um som.INCFSZ CONTA,F ; incrementa o contador (CONTA = CONTA + 1).

; resultado = 0 (estourou?).GOTO LOOP ; não, retorna para LOOP pois não passou 10 vezes.

END ; sim, acabou o exemplo pois já passou 10 vezes.

Page 81: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

81

Exemplo da utilização das instruções:

ADD

MOVLW .10MOVWF NUM_1 ; inicia NUM_1 com valor 10MOLW .20MOVWF NUM_2 ; inicia NUM_1 com valor 20CLRF RESULTADO ; inicia RESULTADO com zero

SOMA1 ; resposta = NUM_1 + 5MOVF NUM_1,W ; coloca o NUM_1 dentro do acumulador(W)ADDLW .5 ; soma 5 ao acumulador (W)MOVWF RESULTADO ; coloca a resposta em resultado

SOMA2 ; resposta = NUM_1 + NUM_2MOVF NUM_1,W ; coloca o valor NUM_1 no acumulador (W) ADDWF NUM_2,W ; soma o valor NUM_2 ao acumulador(W) e guarda o

; resultado no acumuladorMOVWF RESULTADO ; coloca o valor da resposta no RESULTADO

END ; término do programa.

Page 82: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

82

As instruções anteriores afetam diretamente os flags relacionados a ULA. Os flags são: STATUS: C, DC e Z. Se desejarmos somar dois números quaisquer de 8 bits necessitaríamos de pelo menos 10 bits para guardarmos estes valores. Para sabermos que o resultado da soma necessita de pelo menos 10 bits utilizamos o bit de CARRY (STATUS, C) para verificarmos esta necessidade. O exemplo abaixo mostra a soma de três números guardando a resposta em dois bytes.

Suponha que NUM_1, NUM_2 e NUM_3 tenha valores quaisquer:

CLRF BYTE_BAIXO ;Inicia BYTE_BAIXO com zeroCLRF BYTE_ALTO ;Inicia BYTE_ALTO com zero

MOVF NUM_1,W ;Move NUM_1 para dentro do acumuladorADDWF NUM_2,W ;Soma NUM_2 com o NUM_1 que está no acumuladorBTFSC STATUS,C ;Verifica se houve um estouro?INCF BYTE_ALTO ;Se sim incrementa o BYTE_ALTO

MOVWF BYTE_BAIXO ;Move o acumulador para o BYTE_BAIXOADDWF NUM_3,W ;Soma NUM_3 ao acumulador

BTFSC STATUS,C ;Verifica se houve estouro?INCF BYTE_ALTO,F ;Se sim incrementa o BYTE_ALTO

MOVWF BYTE_BAIXO ;Move o acumulador para o BYTE_BAIXOEND

Page 83: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

83

SUBTRAINDO (DECF, DECFSZ, SUBWF e SUBLW)

As instruções de subtração do PIC seguem a mesma idéia das instruções de adição.

DECF f,d ; em que f é o registrador e d o destino onde será guardado o resultado da ; conta (f – 1 -> d).

DECFSZ f,d ; em que f é o registrador e d o destino onde será guardado o resultado ; da conta (f - 1 -> d).

SUBWF f,d ; em que f é o registrador e d o destino onde será guardado o resultado; da conta (f - k -> d).

SUBLW k ; em que k é o número que será somado ao W o resultado é mantido ; em W (k - W -> W).

Page 84: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

84

UTILIZANDO A INSTRUÇÃO DECFSZ

MOVLW .10 ; Inicia o contador com 10MOVWF CONTA ; Move o valor 10 para a variável CONTA

LOOP

CALL BIP ; Chama rotina de emissão de somDECFSZ CONTA,F ; Decrementa a variável conta (CONTA = CONTA -1)

; Resultado é igual a zero (Acabou ?)GOTO LOOP ; Não, continua até zerar

END ; Sim, termina o programa

Page 85: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

85

UTILIZANDO A SUBWF SUBLW

MOVLW .10MOVWF NUM_1 ; Inicia NUM_1 com 10MOVLW .20MOVWF NUM_2 ; Inicia NUM_2 com 20CLRF RESULTADO ; Inicia RESULTADO com zero

SUB1MOVF NUM_1,W ; Move o valor de NUM_1 para o acumuladorSUBLW .30 ; Subtrai de 30 o valor de WMOVWF RESULTADO ; Guarda a resposta em RESULTADO

SUB2MOVF NUM_1,W ; Move o valor de NUM_1 para WSUBWF NUM_2,W ; Subtrai de NUM_2 o valor de WMOVWF RESULTADO

END

Page 86: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

86

Diferentemente da adição a ordem da subtração afeta diretamente o resultado. Em somas o resultado pode ser zero ou positivo. Na subtração ele pode ser zero, positivo ou negativo. Por meio da análise do flag de carry podemos concluir qual o resultado correto da subtração:

Negativo: Sempre que o resultado da subtração for um número negativo, o carry será zero (0). Neste caso, o valor da resposta não será diretamente o número negativo, e sim sua diferença para 256.

Positivo: Sempre que o resultado for positivo o carry será 1

Zero: Sempre que o resultado for zero, o carry será 1.

Page 87: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

87

Supondo dois números NUM_1 e NUM_2

CLRF RESP ; Limpa registrador RESPSUB1 ; Subtrai NUM_2 – NUM_1 = RESP

MOVF NUM_1,W ; Move NUM_1 para WSUBWF NUM_2,W ; Subtrai NUM_2 - WBTFSS STATUS,C ; Testa carry. Resultado negativo?GOTO TRATA_NE ; Sim, pula para tratar número negativo

; Não, resultado positivo ou zeroMOVWF RESP ; Move diretamente para RESPBCF NEG ; Limpa flag de número negativoGOTO FIM ; Finaliza

TRATA_NEG ; Como resultado foi negativo, então RESP = 256 - W; Como o número máximo para 8 bits é 255, então; 256 -> 0

SUBLW.0 ; 0 - WMOVWF RESP ; Coloca o resultado em RESPBSF NEG ; Seta o flag de número negativo

END ; Fim do programa

Page 88: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

88

AS COMPARAÇÕES MAIOR QUE, MENOR QUE E IGUAL

As instruções SUB afetam diretamente o flag de carry, e desta forma podemos verificar se um número é positivo, negativo ou zero. Partindo deste principio podemos identificar também se um número é maior, menor ou igual a outro.

COMPARA1MOVF NUM_1,WSUBWF NUM_2,W

BTFSS STATUS,CGOTO RESP1GOTO RESP2END

Page 89: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

89

MULTIPLICANDO

A instrução RLF, (Rotate Left File) é utilizada para fazer multiplicação utilizando potência de 2, ou seja somente podemos multiplicar o número por 2.

REGISTRADOR FBYTE INICIAL => 01011011

REGISTRADOR FBYTE FINAL => 10110111

Deslocamento de apenas um bit.

Page 90: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

90

MULTIPLICANDO

E se quisermos multiplicarmos fatores que sejam diferentes das potências de 2? Para isto devemos utilizar o método de somas sucessivas.

CLRF BYTE_BAIXO ; Limpa o registrador BYTE_BAIXOCLRF BYTE_ALTO ; Limpa o registrador BYTE_ALTO

MULT ; NUM_1 X NUM_2MOVWF NUM_2,W ; Move o valor de NUM_2 para WADDWF BYTE_BAIXO,F ; Soma NUM_2 ao valor já existenteBTFSC STATUS,C ; Houve estouro?INCF BYTE_ALTO,F ; Sim, incrementa o BYTE_ALTO

; NãoDECFSZ NUM_1,F ; Decrementa NUM_1. Acabou?GOTO MULT ; Não, continua somando

; Sim, soma sucessiva terminadaEND

Page 91: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

FAZENDO OPERAÇÕES ARITMÉTICAS BÁSICAS

91

DIVIDINDO

A instrução RRF, (Rotate Right File) é utilizada para fazer divisão utilizando potência de 2, ou seja somente podemos dividir o número por 2.

REGISTRADOR FBYTE INICIAL => 01011011

REGISTRADOR FBYTE FINAL => 10101101

Deslocamento de apenas um bit.

No caso da divisão, a parte inteira caberá em um único registrador de 8 bits, mas o resto da divisão poderá ser perdido por meio de carry.

DIV4BCF STATUS,C ; Limpa o carryRRF NUM_1,F ; Divide por 2 (NUM_1 = NUM_1 / 2)RRF NUM_1,F ; Divide por 2 (Num_1 = Num_1 / 4)END

Page 92: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

SEGUNDO PROGRAMACONTADOR SIMPLIFICADO

92

O código que se segue é um contador simplificado onde a contagem deve ser feita de um valor mínimo até um valor máximo. Estes valores são duas constantes (MIN e MAX) as quais são utilizadas para fazermos a checagem dos valores.

Será necessário a utilização das técnicas de comparação para verificarmos se chegamos ao valor máximo. Além disso utilizaremos um filtro para fazer a análise quando o botão foi pressionado. A constante chama-se T_FILTRO e é ajustada para verificar a quantidade de vezes em que o botão ficou pressionado.

Quando a contagem chegar ao valor máximo devemos fazer a contagem regressiva até chegar ao valor mínimo.

O pino RA2 é responsável em fazer o incremento ou decremento do contador. Além disto a contagem depende de um flag dentro do sistema que diz se estamos subtraindo ou somando.

Page 93: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

SEGUNDO PROGRAMA - CONTADORCRESCENTE-DECRESCENTE - FLUXOGRAMA

93

Page 94: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

SEGUNDO PROGRAMA - CONTADORCRESCENTE-DECRESCENTE - PROGRAMA

94

;Programa.........: Contador Crescente Decrescente;Objetivo..........: O software em questão será utilizado para fazer um contador que conte até um valor máximo e decremente este valor até um valor mínimo quando este chegar ao valor máximo. O funcionamento depende de RA2 e do flag de sentido.

#INCLUDE <P16F84.INC>

#DEFINE BANK0 BCF STATUS,RP0#DEFINE BANK1 BSF STATUS,RP0

CBLOCKW_TEMPSTATUS_TEMPCONTATORFLAGSFILTRO

ENDC

#DEFINE SENTIDO FLAGS,0#DEFINE BOTAO PORTA,2

MIN EQU .10MAX EQU .30T_FILTRO EQU .230

ORG 0X00GOTO INICIO

Page 95: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

SEGUNDO PROGRAMA - CONTADORCRESCENTE-DECRESCENTE - PROGRAMA

95

ORG 0X04RETFIE

INICIOBANK1MOVLW B'00000100'MOVWF TRISA

MOVLW B''00000000'MOVWF TRISBMOVLW B'10000000'MOVWF OPTION_REG

MOVLW B'00000000'MOVWF INTCONBANK0

CLRF PORTACLRF PORTBMOVLW MINMOVWF CONTADOR

MAINMOVLW T_FILTROMOVWF FILTRO

CHEGA_BTBTFSC BOTAOMOVWF MAIN

Page 96: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

SEGUNDO PROGRAMA - CONTADORCRESCENTE-DECRESCENTE - PROGRAMA

96

DECFSZ FILTRO,FGOTO CHECA_BT

TRATA_BTBTFSS SENTIDOGOTO SOMA

SUBTRAIDECFCONTADOR,FMOVLW MINSUBWF CONTADOR,WBTFSC STATUS,CGOTO ATUALIZAINCF CONTADOR,FBCF SENTIDOGOTO MAIN

SOMAINCF CONTADOR,FMOVLW MAXSUBWF CONTADOR,WBTFSS STATUS,CGOTO ATUALIZABSF SENTIDOGOTO MAIN

ATUALIZAMOVF CONTADOR,WMOVWF PORTB

Page 97: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

SEGUNDO PROGRAMA - CONTADORCRESCENTE-DECRESCENTE - PROGRAMA

97

BTFSC BOTAOGOTO $-1GOTO MAIINEND

Page 98: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TRABALHANDO DIRETAMENTE COM BYTES

98

AND (ANDWF e ANDLW)

A operação AND é uma operação lógica entre dois bytes. Cada bit da seqüência de um número é comparado a seqüência de bits do segundo. Esta operação ira resultar em um terceiro byte contendo a operação lógica AND entre os dois primeiros.

ANDWF e ANDLW

A operação ANDWF faz uma operação AND entre o acumulador (W) e o registrador informado.

ANDWF f,d ; f é o registrador e d é o destino onde será guardado o resultado da operação

A operação ANDLW faz uma operação AND entre o literal (L) e o acumulador (W).

ANDLW K ; K é um número literal e o resultado é guardado no prório acumulador.

OR (IORWF e IORLW)

A operação OR é uma operação lógica entre dois bytes. Cada bit da seqüência de um número é comparado a seqüência de bits do segundo. Esta operação ira resultar em um terceiro byte contendo a operação lógica OR entre os dois primeiros.

IORWF e IORLW

A operação IORWF faz uma operação OR entre o acumulador (W) e o registrador informado.

IORWF f,d ; f é o registrador e d é o destino onde será guardado o resultado da operação

A operação IORLW faz uma operação OR entre o literal (L) e o acumulador (W).

ANDLW K ; K é um número literal e o resultado é guardado no prório acumulador.

Page 99: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TRABALHANDO DIRETAMENTE COM BYTES

99

XOR (XORWF e XORLW)

A operação XOR é uma operação lógica entre dois bytes. Cada bit da seqüência de um número é comparado a seqüência de bits do segundo. Esta operação ira resultar em um terceiro byte contendo a operação lógica EXCLUSIVE OR entre os dois primeiros.

XORWF e XORLW

A operação XORWF faz uma operação OU EXCLUSIVO entre o acumulador (W) e o registrador informado.

XORWF f,d ; f é o registrador e d é o destino onde será guardado o resultado da operação

A operação XORLW faz uma operação OU EXCLUSIVO entre o literal (L) e o acumulador (W).

XORLW K ; K é um número literal e o resultado é guardado no prório acumulador.

OBS.: XOR é muito utilizado na verificação de mudança de um BYTE. Verificando a o resultado da operação de subtração entre o registrador e ele mesmo através do registrador STATUS, Z.

COMPLEMENTO (COMF)

COMPF f,d faz o complemento do registrador f e guarda o resultado no registrador d.

ByteByte 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0Complemento 1 1 0 1 0 0 0 1Complemento 1 1 0 1 0 0 0 1

Page 100: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TRABALHANDO DIRETAMENTE COM BYTES

100

INVERSÃO (SWAPF)

A operação SWAPF serve para inverter o nibble superior com o nibble inferior de um byte.operação XOR é uma operação lógica entre dois bytes. Cada bit da seqüência de um número é comparado a seqüência de bits do segundo. Esta operação ira resultar em um terceiro byte contendo a operação lógica EXCLUSIVE OR entre os dois primeiros.

Page 101: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

CONTANDO TEMPO E CRIANDO DELAYS

101

A contagem de tempo em um microcontrolador é muito preciso. Logicamente esta precisão irá depender da precisão do oscilador. Com esta precisão torna-se fácil mensurar o tempo que determinadas tarefas levam para serem executadas ao mesmo tempo em que se pode determinar o tempo em que um tarefa deve permanecer em execução.

O tempo no PIC pode ser contado basicamente de três formas:

● Contando os ciclos de máquina por meio de loops

● Contando os ciclos de máquina por intermédio do contador timer 0 (TMR0); ou

● Contando pulsos externos por meio da entrada T0CLK e do TMR0

As duas primeiras são mais utilizadas e dependem exclusivamente do sistema de oscilação. A terceira depende de estímulos externos e pode ser facilmente utilizada para medir tempo com base na rede de 60 Hz.

UTILIZANDO O TIMER PARA MARCAR TEMPO:

Para configurarmos o TMR0 primeiramente precisamos saber qual é a freqüência do oscilador. Para nosso exemplo vamos adotar a freqüência de 4 MHz. O ciclo de máquina do PIC é quatro vezes menor do que a freqüência do oscilador. Neste caso nossa freqüência interna é de 1 MHz e o tempo é 1/f ou seja 1 us . Para nosso exemplo vamos supor que queiramos um tempo de 1 ms. Para isso usaremos o TMR0 e o Prescaler na configuração de 1:4. A conta a ser feita segue abaixo:

Tempo de ciclo (1 us) x prescaler(4) x TMR0 (250) = 1 ms

Page 102: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

CONTANDO TEMPO E CRIANDO DELAYS

102

Exemplo de contagem:

DELAYCLRF TMR0

DL_1MOVLW .250SUBWF TMR0,WBTFSS STATUS,CGOTO DL_1RETURN

A rotina acima funciona porém a sua precisão ainda não é das melhores uma vez que a comparação é feita na forma de igualdade de estouro. Isto ocorre porque o TMR0 pode ser incrementado em qualquer uma destas linhas e a precisão acaba.

UTILIZANDO REGISTROS TEMPORÁRIOS PARA CRIAR DELAYS:

Podemos criar estruturas para contagem de tempo utilizando registradores temporários. Desta maneira podemos liberar o TMR0 e o prescaler. A idéia básica é criar contadores dentro de outros contadores para contar corretamente a quantidade de ciclos de máquinas e conseqüentemente o tempo. OBS.: Instruções tais como: GOTO, CALL, BTFSS, BTFSC, DECFSZ e INCFSZ podem durar 2 cilcos de máquinas

Rotina para 1 ms:

DELAYMOVLW .250MOVWF TEMP1

DL_1NOPDECFSZ TEMP1,FGOTO DL_1RETURN

OBS.: 2 NOPs seguidos podem ser substituidos pro GOTO $+1, que também perde 2 ciclos.

Page 103: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TERCEIRO PROGRAMA – PISCA – PISCA

103

Neste exemplo será usado delays e inversão de estados utilizando a operação XOR. Será utilizado uma constante chamada DISPLAY para fazer a inversão. Os botões 1 e 2 (RA1 e RA2) serão utilizados para alterar o valor da variável CONTADOR, mudando com isso a freqüência do pisca pisca. As constantes MIN e MAX determinam o limite para o contador e conseqüentemente a freqüência.

Page 104: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TERCEIRO PROGRAMA – PISCA – PISCA (FLUXOGRAMA)

104

Page 105: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TERCEIRO PROGRAMA – PISCA – PISCA

105

;Programa.........: Pisca - Pisca;Objetivo..........: O software destina-se a piscar 5 leds formando a letra H em um displasy de 7 segmentos formados por leds

#INCLUDE <PIC16F84.INC>

#DEFINE BANK0 BCF STATUS,RP0#DEFINE BANK1 BSF STATUS,RP0

CBLOCK 0X0CW_TEMPSTATUS_TEMPCONTADORFILTROTEMPO1TEMPO2TEMPO3

ENC

MIN EQU .10MAX EQU .240STEP EQU .5MULTIPLOEQU .5

; a; *********; f * * b; * g *; *********; e* * c; * *; *********; d

Page 106: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TERCEIRO PROGRAMA – PISCA – PISCA

106

DISPLAY EQU B'10101011' ; LETRA H

#DEFINE BT1 PORTA,1#DEFINE BT2 PORTA,2

ORG 0X00GOTO INICIOORG 0X04RETFIE

DELAYMOVWF TEMPO2

DL1MOVLW .200MOVWF TEMPO1

DL2NOPNOPDECFSZ TEMPO1,FGOTO DL2

DECFSZ TEMPO2,FGOTO DL1

RETURN

Page 107: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TERCEIRO PROGRAMA – PISCA – PISCA

107

INICIOBANK1MOVLW B'00000110'MOVWF TRISAMOVLW B'00000000'MOVWF TRISBMOVLW B'10000000'MOVWF OPTION_REG

MOVLW B'00000000'MOVWF INTCONBANK0CLRF PORTAMOVLW DISPLAYMOVWF PORTBMOVLW MINMOVWF CONTADOR

MAINMOVLW MULTIPLOMOVWF TEMPO3

MAIN1MOVF CONTADOR,WCALL DELAYBTFSS BT1GOTO INCREMENTABTFSS BT2GOTO DECREMENTADECFSZ TEMPO3,FGOTO MAIN1MOVLW DISPLAY

Page 108: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TERCEIRO PROGRAMA – PISCA – PISCA

108

XORWF PORTB,FGOTO MAIN

DECREMENTAMOVLW STEPSUBWF CONTADOR,FMOVLW MINSUBWF CONTATOR,WBTFSC STATUS,CGOTO MAINMOVLW MINMOVWF CONTADORBTFSS BT2GOTO $-1GOTO MAIN

INCREMENTAMOVLW STEPADDWF CONTATOR,FMOVLW MAXSUBWF CONTADOR,WBTFSS STATUS,CGOTO MAINMOVLW MAXMOVWF CONTADORBTFSS BT1GOTO $-1GOTO MAINEND

Page 109: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

USANDO O PCL PARA ESCOLHER ENTREVÁRIAS ROTINAS

109

O PCL é um registrador de uso especial (SFR) que contém o endereço da memória de programa que será executado em seguida. Podemos utilizá-lo para retornar diferentes valores ou mesmo executar diferentes funções:

Um exemplo clássico seria o tratamento de funções que seriam executadas dependendo de um tecla específica. Imaginemos um teclado com 6 teclas com funções específicas. O número do botão pressionado é colocado na variável TECLA.

TRATA_TECLAMOVLW B'00000111'ANDWF TECLA,WADDWF PCL,FGOTO SEM_TECLAGOTO TECLA1GOTO TECLA2GOTO TECLA3GOTO TECLA4GOTO TECLA5GOTO TECLA6GOTO ERRO

Page 110: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO

110

Este exemplo é um aperfeiçoamento do exemplo 2. Será utilizado dois botões para fazer o incremento e outro o decremento unitariamente. Outra diferença é que agora será mostrado no display o valor em hexadecimal e não mais em leds.

Page 111: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO (FLUXOGRAMA)

111

Page 112: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO (FLUXOGRAMA)

112

Page 113: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO

113

;Programa.........: Contador Melhorado;Objetivo..........: O software destina-se a mostrar uma contagem hexadecimal em um display de 7 segmentos

#INCLUDE <PIC16F84.INC>

#DEFINE BANK0 BCF STATUS,RP0#DEFINE BANK1 BSF STATUS,RP1

CBLOCK 0X0CW_TEMPSTATUS_TEMPCONTADORFLAGSFILTRO1FILTRO2

ENDC

#DEFINE ST_BT1 FLAGS,0#DEFINE ST_BT2 FLAGS,1

MIN EQU .0MAX EQU .15T_FILTRO EQU .255

#DEFINE BOTAO1, PORTA,1#DEFINE BOTAO2, PORTA,2

Page 114: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO

114

ORG 0X00GOTO INICIOORG 0X04RETFIE

; a; *********; f * * b; * g *; *********; e* * c; * *; *********; d

CONVERTEMOVF CONTADOR,WANDLW B'00001111'ADDWF PCL,F

; B'EDC.BAFG'RETLW B'11101110'RETLW B'00101000'RETLW B'11001101'RETLW B'01101101'RETLW B'00101011'RETLW B'01100111'RETLW B'11100111'RETLW B'00101100'RETLW B'11101111'RETLW B'01101111'RETLW B'10101111'

Page 115: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO

115

RETLW B'11100011'RETLW B'11000110'RETLW B'11101001'RETLW B'11000111'RETLW B'10000111'

INICIOBANK1MOVLW B'00000110'MOVWF TRISAMOVLW B'00000000'MOVWF TRISBMOVLW B'10000000'MOVWF OPTION_REGMOVLW B'00000000'MOVWF INTCONBANK0

CLRF PORTACLRF PORTBCLRF FLAGSMOVLW MINMOVWF CONTADORGOTO ATUALIZA

MAINMOVLW T_FILTROMOVWF FILTRO1MOVWF FILTRO2

Page 116: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO

116

CHECA_BT1BTFSC BOTAO1GOTO BT1_LIBDECFSZ FILTRO1,FGOTO CHECA_BT1BTFSS ST_BT1GOTO DECGOTO CHECA_BT2

BT1_LIBBCF ST_BT1

CHECA_BT2BTFSC BOTAO2GOTO BT2_LIBDECFSZ FILTRO2,FGOTO CHECA_BT2BTFSS ST_BT2GOTO INCGOTO MAIN

BT2_LIBBCF ST_BT2GOTO MAIN

DECBSF ST_BT1MOVF CONTADOR,WXORLW MIN

Page 117: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 4 – CONTADOR MELHORADO

117

BTFSC STATUS,ZGOTO MAINDECFCONTADOR,FGOTO ATUALIZA

INCBSF ST_BT2MOVF CONTADOR,WXORLW MAX

BTFSC STATUS,ZGOTO MAININCF CONTADOR,FGOTO ATUALIZA

ATUALIZACALL CONVERTEMOVWF PORTBGOTO MAINEND

Page 118: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

EXPLORANDO AS INTERRUPÇÕES

118

O PIC possui algumas interrupções que são extremamente necessárias quando não queremos utilizar certos artifícios que param a execução do programa . Estas interrupções são usadas para contar tempo, informar o final de escrita na EEPROM, mudança de estado dos pinos por exemplo do PORTB entre outras.

LIGANDO AS CHAVES CORRETAS:

Primeiramente devemos habilitar o PIC para que o mesmo possa tratar tais interrupções. Basicamente temos duas chaves que devemos ficar atentos: A chave individual e a chave global.

Individual: São as chaves (BITS) que habilitam ou desabilitam cada interrupção individualmente.

Global: É a chave (BIT) responsável em habilitar ou desabilitar todas as interrupções de uma só vez.

OBS.; Para podermos tratar um interrupção primeira a chave individual referente a ela deverá estar ligada assim como a chave global.

ESTRUTURA BÁSICA DA INTERRUPÇÃO:

Quando ocorre um interrupção o hardware do PIC desvia o programa automaticamente para o endereço 0x04. A partir deste momento podemos inserir os códigos de programas que trataram cada interrupção individualmente. A rotina de interrupção acaba quando o programa chega ao mnemônico RETFIE.

Exemplo:

ORG 0X04MOVWF W_TEMPSWAPF STATUS,WMOVWF STATUS_TEMP

AQUI FICAM OS CÓDIGO DE PROGRAMA

SAI_INTERRUPCAOSWAPF STATUS_TEMP,WMOVWF STATUSSWAPF W_TEMP,FSWAPF W_TEMP,W

RETFIE

Page 119: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

CHECANDO QUE INTERRUPÇÃO OCORREU

119

Agora com o conhecimento básico da estrutura do tratamento das interrupções como fazer para verificar qual interrupção ocorreu? Abaixo segue algoritmo executado pelo hardware do PIC quando uma interrupção ocorre.

Page 120: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TRATANDO A INTERRUPÇÃO DE TIMER

120

ROTINA DE INTERRUPÇÃO

TESTE1BTFSS INTCON,T0IF ;FOI INTERRUPÇÃO DE TIMERGOTO SAI_INT ; NÃO, FINALIZABCF INTCON,T0IF ;LIMPA FLAG DE INTERRUPÇÃODECFSZ TEMPO1,F ;DECREMENTA TEMPO, ACABOU?GOTO SAI_INT ;NÃO, SAI DA INTERRUPÇÃOBTFSS LED ;LED, ESTÁ ACESO?GOTO LED_ON ;NÃO, ENTÃO ACENDE

LED_OFFBCF LED ;APAGA LEDGOTO FIM_TMR0 ;VAI PARA FIM DA INTERRUPÇÃO

LED_ONBSF LED ;ACENDE O LED

FIM_TMR0MOVLW .100MOVWF TEMPO1 ;REINICIA BASE DE TEMPOGOTO SAI_INT ;FINALIZA A INTERRUPÇÃO

Page 121: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TRATANDO A INTERRUPÇÃO EXTERNA

121

A interrupção externa é uma das mais usadas. Ela é empregada na recepção de dados, sinais que precisam ser tratados imediatamente, sincronismo e muito mais. A interrupção pode ser tratada na borda de descida ou na borda de subida. Para configurarmos isto usamos o registrador OPTION e setar o bit INTEDG. 1 = Subida, 0 = Descida. Para habilitarmos a chave individual INTCON,INTIE deverá estar setada com nível 1. Para verificarmos se a interrupção ocorreu devemos utilizar o bit INTF do registrador INTCON.

TRATANDO A INTERRUPÇÃO DE MUDANÇA DE ESTADO

Esta interrupção deve ser usada em sinais que devem ser tratados tanto na subida como na descida. Um sincronismo com a rede elétrica é um bom exemplo. Para habilitarmos setamos 1 no bit INTCON,RBIE. Para sabermos se a interrupção ocorreu devemos verificar o bit INTCON,RBIF

Page 122: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO

122

O seguinte exemplo é um temporizador usando a interrupção de estouro de tempo. O valor será decrementado a cada segundo da variável V_INICIO até zero. Um botão é usado para iniciar o timer e outro para pará-lo. Enquanto o timer estiver funcionanod o led deverá permanecer ligado. A base do prescaler (1:64), na inicialização do TMR0(256-125) e um contador auxiliar (TEMP1) que é inicializado com 125. A interrupção ocorrerá a cada 8 ms (64 us x 125). O contador auxiliar multiplicará este tempo por 125, resultando em 1 segundo (8 ms x 125 = 1s).

Page 123: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO (FLUXOGRAMA)

123

Page 124: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO (FLUXOGRAMA)

124

Page 125: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO (FLUXOGRAMA)

125

Page 126: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO

126

;Programa.........: Timer Simplificado;Objetivo..........: O software destina-se a contar tempo e mostrar a contagem em um display de 7 segmentos

#INCLUDE <P16F84.INC>

#DEFINE BANK0 BCF STATUS,RP0#DEFINE BANK0 BSF STATUS,RP1

CBLOCK 0X0CW_TEMPSTATUS_TEMPTEMPOFLAGSTEMP1TEMP2FILTRO1FILTRO2

ENDC

#DEFINE F_FIM FLAGS,0#DEFINE ST_BT1 FLAGS,1#DEFINE ST_BT2 FLAGS,2

V_INICIO EQU .9T_FILTRO EQU .255

#DEFINE BOTAO1 PORTA,1#DEFINE BOTAO2 PORTA,2

#DEFINE LED PORTA,3

Page 127: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO

127

ORG 0X00GOTO INICIO

ORG 0X04

MOVWF W_TE,MPSWAPF STATUS,WMOVWF STATUS_TEMP

BTFSS INTCON,T0IFGOTO SAI_INT

BCF INTCON,T0IFMOVLW (.256-,125)MOVWF TMR0DECFSZ TEMP1,FGOTO SAI_INT

MOVLW .125MOVWF TEMP1BTFSC F_FIMGOTO SAI_INT

BSF F_FIM

SAI_INTSWAPF STATUS_TEMP,WMOVWF STATUSSWAPF W_TEMP,FSWAPF W_TEMP,WRETFIE

Page 128: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO

128

; a; *********; f * * b; * g *; *********; e* * c; * *; *********; d

CONVERTEMOVF TEMPO,WANDLW B'00001111'ADDWF PCL,F

; B'EDC.BAFG'RETLW B'11101110'RETLW B'00101000'RETLW B'11001101'RETLW B'01101101'RETLW B'00101011'RETLW B'01100111'RETLW B'11100111'RETLW B'00101100'RETLW B'11101111'RETLW B'01101111'RETLW B'10101111'RETLW B'11100011'RETLW B'11000110'RETLW B'11101001'RETLW B'11000111'RETLW B'10000111'

Page 129: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO

129

ATUALIZACALL CONVERTEMOVWF PORTBRETURN

DESL_TIMERBCF INTCON,GIEBCF LEDRETURN

LIGA_TIMERBTFSC INTCON,GIERETURNBCF INTCON,T0IFMOVLW .256-,125MOVWF TMR0MOVLW ,125MOVWF TEMP1BSF INTCON,GIEBSF LEDRETURN

INICIOBANK1MOVLW B'00000110'MOVWF TRISA

MOVLW B'00000000'MOVWF TRISB

MOVLW B'10000101'MOVWF OPTION_REG

Page 130: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO

130

MOVLW B'00100000'MOVWF INTCON

BANK0

CLRF PORTACLRF PORTBCLRF FLAGSMOVLW V_INICIOMOVWF TEMPOCALL ATUALIZA

MAINBTFSC F_FIMCALL DESL_TIMERCALL ATUALIZAMOVLW T_FILTROMOVWF FILTRO1MOVWF FILTRO2

CHECA_BT1BTFSC BOTAO1GOTO BT1_LIB

DECFSZ FILTRO1,F

GOTO CHECA_BT1

BTFSS ST_BT1GOTO ACAO_BT1GOTO CHECA_BT2

Page 131: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 5 – TIMER SIMPLIFICADO

131

BT1_LIBBCF ST_BT1

CHECA_BT2BTFSC BOTAO2GOTO BT2_LIB

DECFSZ FILTRO2,F

GOTO CHECA_BT2

BTFSS ST_BT2GOTO ACAO_BT2GOTO MAIN

ACAO_BT1BSF ST_BT1CALL LIGA_TIMERGOTO MAIN

ACAO_BT2BSF ST_BT2CALL DESL_TIMERGOTO MAINEND

Page 132: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

UTILIZANDO A EEPROM

132

O PIC 16F84/84A/628/628A possui uma EEPROM interna. A quantidade desta memória varia de modelo para modelo. Esta memória é muito importante quando necessitamos de armazenar dados que não podem ser perdidos mesmo com o desligamento do sistema.

ESCREVENDO NA EEPROM

A escrita da EEPROM é mais complexa que a leitura. Isto deve-se ao fato da proteção em que esta está submetida. Isto torna o sistema muito mais robusto e seguro.

Procedimento para a escrita na EEPROM:

● O Endereço para a escrita deve ser colocado em EEADR. Como existem 64 bytes disponíveis, esse endereço deve estar entre 0 e 63.● O dado a ser gravado deve ser colocado na EEDATA. Só podemos escrever um byte de cada vez.● As interrupções devem ser desligadas para evitarmos conflitos.● A escrita deve ser habilitada por meio do bit EECON1,WREN(1).● O registrador EECON2 deve ser carregado com os valores 0x55 e 0xAA, seqüencialmente Este procedimento é obrigatório e utilizado para a proteção da escrita.● A escrita deve ser iniciada setando o bit EECON1,WR(1) e limpando o bit EECON1,WREN(0).● As interrupções podem ser novamente ligadas.● A operação de escrita é um pouco demorada, e ela só terá terminado quando o bit EECON1,WR tiver sido limpo automaticamente pelo HARDWARE.

Page 133: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

UTILIZANDO A EEPROM

133

Por isso, normalmente ficamos esperando que isso aconteça. No caso de não podermos ficar esperando pelo fim de escrita, podemos ligar a interrupção de escrita na EEPROM por meio do bit INTCON,EEIE, e esperamos que ela aconteça para considerarmos finalizada a escrita.● Caso algum erro ocorra durante a operação de escrita, o bit EECON1,WRERR será setado (1). No caso de sucesso na operação, esse bit será mantido em zero(0).

ROTINA DE ESCRITA NA EEPROM;

ESCR_E2PROMMOVWF EEDATABCF INTCON,GIEBANK1BSF EECON1,WRENMOVLW 0X55MOVWF EECON2MOVLW 0XAAMOVWF EECON2BSF EECON1,WRBCF EECON1,WRENBTFSC EECON 1,WERRGOTO ESCR_E2PROM+1BTFSC EECON1,WRGOTO $-3BANK0BSF INTCON,GIERETURN

OBS.: A rotina acima não é perfeita, pois se ocorrer um erro, o sistema tenta escrever o dado novamente, mas não limita o número de tentativas e isto pode travar o sistema caso um erro grave ocorra na escrita da memória

Page 134: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

TRATANDO INTERRUPÇÃO FINAL DE ESCRITA NA EEPROM

134

Esta interrupção é utilizada em sistemas que não podem ficar parados esperando o final da escrita na EEPROM.

Para ativar esta interrupção o bit INTCON,EEIE deve estar setado em nível lógico alto.

Para verificar se a interrupção ocorreu devemos utilizar o bit EECON1,EEIF

Page 135: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

LENDO DA EEPROM

135

Após a escrita da EEPROM o normal é que queiramos ler a informação que outrora fora escrita. O procedimento é mais simples do que a escrita.

O roteiro para leitura segue abaixo:

● O endereço para leitura deve ser colocado em EEADR. Como existem 64 bytes disponíveis, este endereço deve estar entre 0 e 63.● A leitura deve ser ligada por meio do bit EECON1,RD (1). A leitura terminará quando este bit voltar automaticamente para zero, o que acontece quase que imediatamente.● O dado lido será colocado em EEDATA.

Segue abaixo a rotina:

LE_E3PROMBANK1BSF EECON1,RDBANK0MOVF EEDATA,WRETURN

Page 136: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL

136

O contador final consiste em armazenar o valor atual na memória EEPROM. Caso ocorra uma queda de energia o valor não será perdido.

Page 137: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL (FLUXOGRAMA)

137

Page 138: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL (FLUXOGRAMA)

138

Page 139: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL

139

;Programa.........: Contador Final;Objetivo..........: O software em questão destina-se a fazer uma contagem e armazená-la na EEPROM desta maneira caso haja uma queda de energia a contagem não será perdida.

#INCLUDE <P16F84.INC>

#DEFINE BANK0 BCF STATUS,RP0#DEFINE BANK0 BSF STATUS,RP1

CBLOCK 0X0CW_TEMPSTATUS_TEMPCONTADORFLAGSFILTRO1FILTRO2

ENDC

#DEFINE ST_BT1 FLAGS,0#DEFINE ST_BT2 FLAGS,1

MIN EQU .0MAX EQU .15T_FILTRO EQU .255POS_MEM EQU .0

#DEFINE BOTAO1 PORTA,1#DEFINE BOTAO2 PORTA,2

ORG H'2100'+POS_MEM

Page 140: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL

140

DE .5

ORG 0X00GOTO INICIO

ORG 0X04RETFIE

CONVERTEMOVF TEMPO,WANDLW B'00001111'ADDWF PCL,F

; B'EDC.BAFG'RETLW B'11101110'RETLW B'00101000'RETLW B'11001101'RETLW B'01101101'RETLW B'00101011'RETLW B'01100111'RETLW B'11100111'RETLW B'00101100'RETLW B'11101111'RETLW B'01101111'RETLW B'10101111'RETLW B'11100011'RETLW B'11000110'RETLW B'11101001'RETLW B'11000111'RETLW B'10000111'

Page 141: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL

141

LE_E2PROMBANK1BSF EECON1,RDBANK0MOVF EEDATA,WRETURN

ESCR_E2PROMMOVWF EEDATABCF INTCON,GIEBANK1BSF EECON1,WRENMOVLW 0X55MOVWF EECON2MOVLW 0XAAMOVWF EECON2BSF EECON1,WRBCF EECON1,WRENBTFSC EECON1,WRGOTO $-1BANK0BSF INTCON,GIERETURN

LE_CONTAMOVLW POS_MEMMOVWF EEADRCALL LE_E2PROMMOVWF CONTADORRETURN

Page 142: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL

142

ESCR_CONTAMOVLW POS_MEMMOVWF EEADRMOVF CONTADOR,WCALL ESCR_E2PROMRETURN

INICIOBANK1MOVLW B'00000110'MOVWF TRISA

MOVLW B'00000000'MOVWF TRISBMOVLW B'10000000'MOVWF OPTION_REG

MOVLW B'00000000'MOVWF INTCONBANK0

CLRF PORTACLRF PORTBCLRF FLAGSCALL LE_CONTA

GOTO ATUALIZA

MAINMOVLW T_FILTROMOVWF FILTRO1MOVWF FILTRO2

Page 143: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL

143

CHECA_BT1BTFSC BOTAO1GOTO BT1_LIBDECFSZ FILTRO1,FGOTO CHECA_BT1BTFSS ST_BT1GOTO DECGOTO CHECA_BT2

BT1_LIBBCF ST_BT1

CHECA_BT2BTFSC BOTAO2GOTO BT2_LIBDECFSZ FILTRO2,FGOTO CHECA_BT2BTFSS ST_BT2GOTO INCGOTO MAIN

BT2_LIBBCF ST_BT2GOTO MAIN

DECBSF ST_BT1MOVF CONTADOR,WXORLW MIN

Page 144: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

PROGRAMA 6 – CONTADOR FINAL

144

BTFSC STATUS,ZGOTO MAINDECFCONTADOR,FCALL ESCR_CONTAGOTO ATUALIZA

INCBSF ST_BT2MOVF CONTADOR,WXORLW MAXBTFSC STATUS,ZGOTO MAININCF CONTADOR,FCALL ESCR_CONTA

ATUALIZACALL CONVERTEMOVWF PORTBGOTO MAINEND

Page 145: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo

BIBLIOGRAFIA:

● Data Sheets: www.microchip.com (16F84/F84A/F628/F628A)

● Desbravando o PIC – Baseado no Microcontrolador PIC16F84 – David José de Souza – Ed. Érica 4ª Edição - 2001

● Programação em C – Baseado nos compiladores CCS – Fábio Pereira – Ed. Érica 1ª Edição - 2003

145