Controle de Tráfego Ferroviario com o Microcontrolador PIC 16F628
MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I -...
Transcript of MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I -...
![Page 1: MICROCONTROLADORES - PIC 16F84/16F84A/16F628/16F628Aeducatec.eng.br/engenharia/Eletiva I - microprocessadores e... · Os microcontroladores PIC apresentam arquitetura interna tipo](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/1.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/2.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/3.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/4.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/5.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/6.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/7.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/8.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/9.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/10.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/11.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/12.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/13.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/14.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/15.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/16.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/17.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/18.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/19.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/20.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/21.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/22.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/23.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/24.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/25.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/26.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/27.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/28.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/29.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/30.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/31.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/32.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/33.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/34.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/35.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/36.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/37.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/38.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/39.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/40.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/41.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/42.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/43.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/44.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/45.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/46.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/47.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/48.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/49.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/50.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/51.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/52.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/53.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/54.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/55.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/56.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/57.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/58.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/59.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/60.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/61.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/62.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/63.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/64.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/65.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/66.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/67.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/68.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/69.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/70.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/71.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/72.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/73.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/74.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/75.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/76.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/77.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/78.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/79.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/80.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/81.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/82.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/83.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/84.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/85.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/86.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/87.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/88.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/89.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/90.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/91.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/92.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/93.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/94.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/95.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/96.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/97.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/98.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/99.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/100.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/101.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/102.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/103.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/104.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/105.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/106.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/107.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/108.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/109.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/110.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/111.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/112.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/113.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/114.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/115.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/116.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/117.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/118.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/119.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/120.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/121.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/122.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/123.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/124.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/125.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/126.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/127.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/128.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/129.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/130.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/131.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/132.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/133.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/134.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/135.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/136.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/137.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/138.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/139.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/140.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/141.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/142.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/143.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/144.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022052206/5be55d0b09d3f28a428c15d9/html5/thumbnails/145.jpg)
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