86
Universidade do Grande ABC Carlos Antônio Ra:29292629 Claudio Roberto Calheiro Ra : 29293270 Leandro Franzo Ra: 30025287 Cristiano Cícero DA Silva RA:30024566 Danilo Tiburcio Dias RA:30023035 ATPS – Atividades Práticas Supervisionadas Microprocessadores e Microcontroladores

Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Embed Size (px)

Citation preview

Page 1: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Universidade do Grande ABC

Carlos Antônio Ra:29292629 Claudio Roberto Calheiro Ra : 29293270

Leandro Franzo Ra: 30025287 Cristiano Cícero DA Silva RA:30024566

Danilo Tiburcio Dias RA:30023035

ATPS – Atividades Práticas Supervisionadas

Microprocessadores e Microcontroladores

Santo André

de 2012

Page 2: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Universidade do Grande ABC

Carlos Antônio Ra:29292629

Claudio Roberto Calheiro Ra : 29293270

Leandro Franzo Ra: 30025287

Cristiano Cícero DA Silva RA:30024566

Danilo Tiburcio Dias RA:30023035Autores:

ATPS – Atividades Práticas Supervisionadas

Trabalho apresentado pelos alunos do curso de

Engenharia de Controle e Automação –, para a

disciplina de Microcontroladores e

Microprocessadores.

Professor orientador Vlamir Belfante.

Santo André

de 20122

Page 3: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Índice

1 - Introdução - Descrição do Trabalho .......................................................................... 5

2 – Algoritmo ................................................................................................................... 6

3 - Fluxograma ................................................................................................................. 7

4 - Linguagem de Programação ....................................................................................... 8

5 - Processador ................................................................................................................. 8

6 - Editor e Compilador ................................................................................................... 9

7 - Versões para Otimização ............................................................................................ 9

8 - Programa / Software ................................................................................................... 9

9 - Hardware ..................................................................................................................... 16

9.1 - Diagrama em Blocos ................................................................................................ 16

9.2 - Fotografias ............................................................................................................... 14

10 - Anexos ...................................................................................................................... 25

10.1 - Set Instruções ......................................................................................................... 60

10.2 - Programa Exemplo................................................................................................ 65

11 - Bibliografia................................................................................................................ 66

1 - Introdução - Descrição do Trabalho

3

Page 4: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

A atividade prática supervisionada elaborada para o curso de Engenharia de Controle e

Automação, com relação à disciplina Microcontroladores e Microprocessadores propõem que

desenvolvamos um programa para controle de acesso com senha. Para tanto devemos utilizar

um microcontrolador para, mediante um uso correto de uma senha, liberar esse acesso; de

maneira mais prática, podemos compreender esse controle de acesso como os utilizados em

catracas, portas e acessos que exigem que o usuário digite a senha correta para ter o acesso

liberado.

Foram definidos alguns parâmetros para a execução deste trabalho:

- A senha deve ter no mínimo três dígitos e no máximo seis;

- O sistema terá apenas uma senha válida, não lê código de barras ou sensor biométrico e

armazena apenas uma senha na memória.

Desenvolvemos um programa que simula este controle de acesso onde, uma vez pressionado

os botões corretos o microcontrolador aciona alguns leds simulando a abertura de uma porta.

Aprimoramos este programa ao longo das aulas para melhorar a interface entre usuário e

programa. Além de utilizarmos os leds para simular a liberação do controle de acesso,

utilizamos o display disponível no kit para fazer essa interface. Por exemplo, para solicitar a

senha ao usuário a mensagem "Uni ABC - SENHA?" fica ativa até que usuário digite sua

senha. E, após a digitação dos quatro dígitos, o microcontrolador faz a comparação com a

senha previamente definida e exibe as seguintes informações para o usuário:

"SENHA INCORRETA" caso os quatro dígitos digitados não sejam idênticos aos da senha

previamente armazenada ou,

"SENHA CORRETA" caso os quatro dígitos digitados sejam iguais ao da senha previamente

armazenada. Neste caso os leds também acendem simulando a liberação do acesso.

2 - Algoritmo

4

Page 5: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Um algoritmo é uma sequência infinita de instruções bem definidas e não ambíguas,

cada uma das quais pode ser executada mecanicamente num período de tempo finito e com

uma quantidade de esforço finita.O conceito de algoritmo é frequentemente ilustrado pelo

exemplo de uma receita culinária, embora muitos algoritmos sejam mais complexos. Eles

podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações

ou lógica) até que a tarefa seja completada. Um algoritmo corretamente executado não irá

resolver um problema se estiver implementado incorretamente ou se não for apropriado ao

problema.

Um algoritmo não representa, necessariamente, um programa de computador, e sim os

passos necessários para realizar uma tarefa. Sua implementação pode ser feita por

um computador, por outro tipo de autômato ou mesmo por um ser humano. Diferentes

algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instruções em

mais ou menos tempo, espaço ou esforço do que outros. Tal diferença pode ser reflexo

da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao

algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que você vista primeiro

as meias e os sapatos antes de vestir a calça enquanto outro algoritmo especifica que você

deve primeiro vestir a calça e depois as meias e os sapatos. Fica claro que o primeiro

algoritmo é mais difícil de executar que o segundo apesar de ambos levarem ao mesmo

resultado.

Abaixo segue um algoritmo de exemplo para que seja realizada a soma de dois números

inteiros inseridos pelo usuário.

Algoritmo "SomaDeDoisValores";

Variável:

SOMA,A,B:inteiro;

Ìnicio

Escreva("Digite um numero"); Leia(A);

Escreva("digite

outro numero"); Leia(B);

SOMA←A+B;

Escreva(SOMA);

Fim

5

Page 6: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

03 – Fluxograma

6

Page 7: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

4 - Linguagem de Programação

Foram apresentadas as seguintes linguagens de programação para que executássemos este

trabalho: linguagem C e Assembly.

Fizemos a opção de trabalhar em linguagem C. uma vez que já tivemos a oportunidade de

trabalhar com essa linguagem nas disciplinas de ‘Programação de Computadores’ e ‘Lógica

de Programação e Algoritmos’. Também fizemos essa escolha, por apresentar uma linguagem

mais fácil em comparação com o Assembly, que possui uma quantidade maior de comandos

que, por sua vez, exige que os conheçamos para elaborarmos o programa.

5 - Processador

Vamos utilizar o processador PIC16F628A neste trabalho.

Este é um microprocessador fabricado pela Microchip Technology com as seguintes

características:

- composto de 18 pinos;

- possui somente 35 instruções no seu microcódigo;

- sinal de clock de frequência até 20 MHz;

- memória de programa do tipo Flash de 2048 words (1word=32 bits);

- 224 bytes de memória RAM para dados;

- 128 bytes de memória EEPROM para dados;

- instruções de 14 bits com 200ns de tempo de execução;

- dados de 8 bits por endereço de memória;

- 15 registradores especiais;

- pinos os quais podem ser configurados como entrada e/ou saída;

- outras características especiais como programação in-circuit serial, proteção por código,

watchdog timer (temporizador cão de guarda), módulo CCP, comparador interno, USART,

entre outras.

6 - Editor e Compilador

7

Page 8: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Utilizaremos o Mikro C for PIC como editor, conforme necessidade do processador em

questão. Também se faz necessário o uso do compilador MPLAB para trabalhar com o

processador 16F682A.

7 - Versões para Otimização

Conforme orientação do professor, alteramos a nomenclatura de alguns comandos

inicialmente em inglês para o português. É uma medida para facilitar a compreensão e assim

otimizar a programação.

8 - Programa / Software

/*

Engenharia de Controle e Automação 7NA - UniABC

Programa para a ATPS de Microcontroladores.

*/

// Declaração dos terminais do display LCD16x2

sbit LCD_RS at P3_6_bit;

sbit LCD_EN at P3_7_bit;

sbit LCD_D4 at P1_4_bit;

sbit LCD_D5 at P1_5_bit;

sbit LCD_D6 at P1_6_bit;

sbit LCD_D7 at P1_7_bit;

// Declaração das variáveis

char txt1[] = "Uni ABC - SENHA?";

char txt2[] = "SENHA INCORRETA";

char txt3[] = "SENHA CORRETA";

char txt4[] = "*";

int tempo=0;

// Declaração da senha de usuário

// Senha do Usuário 1

int A1=1;

8

Page 9: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

int A2=2;

int A3=3;

int A4=4;

// Declaração das variáveis de comparação

int C1=0;

int C2=0;

int C3=0;

int C4=0;

// Limpar display LCD e variáveis de comparação

void limpar()

{

Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD

Lcd_Out(1,1,txt1); // Escreve o texto Uni ABC - Senha?

C1=0; C2=0; C3=0; C4=0; // Limpa variáveis de comparação

tempo=0;

P2=0xFF; // Apaga Leds

}

// Rotina principal

voidmain(){

P2=0xFF; // Apaga Leds ao iniciar a MCU

C1=0;C2=0;C3=0;C4=0;

Lcd_Init(); // Inicializa o display Lcd

Lcd_Cmd(_LCD_CLEAR); // Limpa o display LCD

//Lcd_Cmd(_LCD_CURSOR_OFF); // Desliga o Cursor do display LCD

Lcd_Out(1,1,txt1); // Escreve o texto Uni Abc - Senha?

while (1)

{

9

Page 10: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

for (tempo=0; tempo<=1000; tempo++) // Tempo para digitar a senha

{

// Armazena o primeiro digito

//Delay_ms(5);

if ((P0!=0xFF)&&(P0!=0x7F)&&(P0!

=0xBF)&&(C1==0)&&(C2==0)&&(C3==0)&&(C4==0))

{

if (P0==0xFE){ C1=1; }

if (P0==0xFD){ C1=2; }

if (P0==0xFB){ C1=3; }

if (P0==0xF7){ C1=4; }

if (P0==0xEF){ C1=5; }

if (P0==0xDF){ C1=6; }

Lcd_Out(2,7,txt4); // Escreve o caracter *

while (P0!=0xFF){ }

Delay_ms(5);

}

// Armazena o segundo dígito

//Delay_ms(5);

if ((P0!=0xFF)&&(P0!=0x7F)&&(P0!=0xBF)&&(C1!

=0)&&(C2==0)&&(C3==0)&&(C4==0))

{

if (P0==0xFE){ C2=1; }

if (P0==0xFD){ C2=2; }

if (P0==0xFB){ C2=3; }

if (P0==0xF7){ C2=4; }

if (P0==0xEF){ C2=5; }

10

Page 11: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

if (P0==0xDF){ C2=6; }

Lcd_Out(2,8,txt4); // Escreve o caracter *

while (P0!=0xFF){}

Delay_ms(5);

}

// Armazena o terceiro digito

//Delay_ms(5);

if ((P0!=0xFF)&&(P0!=0x7F)&&(P0!=0xBF)&&(C1!=0)&&(C2!

=0)&&(C3==0)&&(C4==0))

{

if (P0==0xFE){ C3=1; }

if (P0==0xFD){ C3=2; }

if (P0==0xFB){ C3=3; }

if (P0==0xF7){ C3=4; }

if (P0==0xEF){ C3=5; }

if (P0==0xDF){ C3=6; }

Lcd_Out(2,9,txt4); // Escreve o caracter "*"

while (P0!=0xFF){}

Delay_ms(5);

}

// Armazena o quarto digito

//Delay_ms(5);

if ((P0!=0xFF)&&(P0!=0x7F)&&(P0!=0xBF)&&(C1!=0)&&(C2!=0)&&(C3!

=0)&&(C4==0))

{

if (P0==0xFE){ C4=1; }

if (P0==0xFD){ C4=2; }

11

Page 12: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

if (P0==0xFB){ C4=3; }

if (P0==0xF7){ C4=4; }

if (P0==0xEF){ C4=5; }

if (P0==0xDF){ C4=6; }

Lcd_Out(2,10,txt4); // Escreve o caracter "*"

while (P0!=0xFF){}

Delay_ms(5);

}

// Tecla ENTER pressionada

// Verifica se a senha esta correta

if ((P0!=0xFF)&&(P0==0xBF)&&(A1==C1)&&(A2==C2)&&(A3==C3)&&(A4==C4))

{

Lcd_Out(2,3,txt3); // Escreve o texto senha correta

for (tempo=0; tempo<=24; tempo++)

{

P2=~P2;

Delay_ms(250);

}

limpar();

}

// Verifica se a senha esta incorreta

if ((P0!=0xFF)&&(P0==0xBF)&&((A1!=C1)||(A2!=C2)||(A3!=C3)||(A4!=C4)))

{

Lcd_Out(2,1,txt2); // Escreve o texto senha incorreta

Delay_ms(3000);

limpar();

}

12

Page 13: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

// Tecla CLEAR pressionada

if ((P0!=0xFF)&&(P0==0x7F))

{

limpar();

}

Delay_ms(10); // Delay x o tempo do for = tempo p/ digitar

}

limpar();

}

}

9 – Hardware

Segue abaixo o diagrama de blocos e imagens do circuito utilizado neste trabalho.

13

Page 14: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

09.1Diagramaem Blocos0011

14

Page 15: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

9.2-Fotografias

9.2.1 Descrição da Placa Smartlab

9.2.1.1 Resistores de Pull-Down

Usados para garantir nível lógico zero nas entradas do PIC quando as chaves estiverem

abertas.

São resistores usados no projeto de circuitos lógicos eletrônicos para garantir que entradas

para sistemas lógicos se ajustem em níveis lógicos esperados se dispositivos externos são

desconectados.

15

Page 16: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

9.2.1.2 Relê

Usado para acionamento de cargas externas.

Um relé é um interruptor acionado eletricamente. A movimentação física deste "interruptor"

ocorre quando a corrente elétrica percorre as espiras da bobina do relé, criando assim

um campo magnético que por sua vez atrai a alavanca responsável pela mudança do estado

dos contatos. O relé é um dispositivo eletromecânico ou não, com inúmeras aplicações

possíveis em comutação de contatos elétricos. Servindo para ligar ou desligar dispositivos. É

normal o relé estar ligado a dois circuitos elétricos. No caso do Relé eletromecânico, a

comutação é realizada alimentando-se a bobina do mesmo. Quando uma corrente originada no

primeiro circuito passa pela bobina, um campo eletromagnético é gerado, acionando o relé e

possibilitando o funcionamento do segundo circuito. Sendo assim, uma das aplicabilidades do

relé é utilizar-se de baixas correntes para o comando no primeiro circuito, protegendo o

operador das possíveis altas correntes que irão circular no segundo circuito (contatos).

A mudança de estado dos contatos de um relé ocorre apenas quando há presença de tensão na

bobina que leva os contatos a movimentarem-se para a posição normal fechado (NF) ou

normal abertos (NA) quando esta tensão é retirada - este princípio aplica-se para relés tudo ou

nada.

9.2.1.5 Display de 7 segmentos

Permite a visualização de mensagens.

Um display de sete segmentos, é um tipo de display (mostrador) barato usado como

alternativa a displays de matriz de pontos mais complexos e dispendiosos. Displays de sete

segmentos são comumente usados em eletrônica como forma de exibir uma informação

alfanumérica (binário, octadecimal, decimal ou hexadecimal) que possa ser prontamente

16

Page 17: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

compreendida pelo usuário sobre as operações internas de um dispositivo. Seu uso é

corriqueiro por se tratar de uma opção barata, funcional e de fácil configuração.

9.2.1.6 Controlador Pic16 F 628ª

Este componente faz todo o controle da placa.

9.2.1.7 Transistores

Servem para fazer o chaveamento dos displays. O Pic aciona um display de cada vez através

do PORTB usado como barramento de dados. Como a freqüência de chaveamento é alta, nos

parece que estão sendo acionados ao mesmo tempo. No caso do nosso programa, usamos um

tempo de 10 milissegundos para esse chaveamento.

O transistor é um componente eletrônico que começou a popularizar-se na década de 1950,

tendo sido o principal responsável pela revolução da eletrônica na década de 1960. São

utilizados principalmente como amplificadores e interruptores de sinais elétricos. O termo

vem de transfer resistor (resistor/resistência de transferência), como era conhecido pelos seus

inventores.

O processo de transferência de resistência, no caso de um circuito analógico, significa que

a impedância característica do componente varia para cima ou para baixo da polarização pré-

estabelecida. Graças a esta função, a corrente elétrica que passa entre coletor e emissor do

transistor varia dentro de determinados parâmetros pré-estabelecidos pelo projetista

do circuito eletrônico. Esta variação é feita através da variação de corrente num dos terminais

chamados base, o que, consequentemente, ocasiona o processo de amplificação de sinal.

17

Page 18: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Entende-se por "amplificar" o procedimento de tornar um sinal elétrico mais fraco num mais

forte. Um sinal elétrico de baixa intensidade, como os sinais gerados por um microfone, é

injetado num circuito eletrônico (transistorizado por exemplo), cuja função principal é

transformar este sinal fraco gerado pelo microfone em sinais elétricos com as mesmas

características, mas com potência suficiente para excitar os alto-falantes. A este processo todo

dá-se o nome de ganho de sinal.

Introdução ao microcontrolador PIC:Portas de E/S

18

Page 19: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Objetivos Apresentar a estrutura de um microcontrolador PIC;

Apresentar o conjunto de instruções do microcontrolador PIC;

Compreender como os registradores de configuração afetam o funcionamento do

microcontrolar PIC;

INTRODUÇÃO

O PIC pertence a uma classe de microcontroladores de 8 bits, com uma arquitetura RISC. Os blocos básicos de uma estrutura genérica do PIC são:

MEMÓRIA DE PROGRAMA (FLASH): Para armazenar as rotinas de programa. Como a memória FLASH pode ser programada e limpa mais que uma vez. ela torna-se adequada para o desenvolvimento de dispositivos.

EEPROM: Memória dos dados que necessitam ser mantidos quando a alimentação é desligada.

RAM: Memória de dados usada por um programa, durante a sua execução.Na RAM, são guardados todos os resultados intermédios ou dados temporários durante a execução do programa e que não são cruciais para o dispositivo, depois de ocorrer uma falha na alimentação.

PORTAS DE E/S: São ligações físicas entre o microcontrolador e o mundo exterior.

CONTADOR/TEMPORIZADOR: São registros de 8 bits no interior do microcontrolador que trabalham independentemente do programa. No fim de cada conjunto de quatro ciclos de relógio do oscilador, ele incrementa o valor armazenado.

UNIDADE DE PROCESSAMENTO CENTRAL: Faz a conexão com todos os outros blocos do microcontrolador. Ele coordena o trabalho dos outros blocos durante a execução do programa.

19

Page 20: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

PORTA A PORTA B

Esquema de um microcontrolador PIC com duas portas de E/S

Arquiteturas Harvard versus Von Neumann

A diferença principal entre microcontroladores e microprocessadores é a sua funcionalidade. Para que um microprocessador possa ser usado, outros componentes devem ser adicionados ao circuito, tais como, memória e componentes para receber e enviar dados. O microcontrolador foi projetado para ter tudo em só dispositivo, podendo operar sem outros componentes externos.

Outro aspecto que pode diferenciar microcontroladores e microprocessadores é a sua arquitetura. Os microcontroladores PIC apresentam uma arquitetura Harvard, onde a

20

Page 21: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

memória de dados está separada da memória de programa. Assim, é possível um acesso concorrente as duas memórias e assim, obter uma maior velocidade de funcionamento. A separação da memória de dados da memória de programa, faz com que as instruções possam ser representadas por palavras de mais que 8 bits. O PIC16F877, usa 14 bits para cada instrução, o que permite que todas as instruções ocupem uma só palavra de instrução. É também típico da arquitetura Harvard ter um conjunto reduzido de instruções, geralmente executadas em apenas um ciclo de máquina. No caso do PIC 16F877 este conjunto é formado por apenas 35 instruções. Esta característica lhe rende também a designação de dispositivo RISC (Reduced Instruction Set Computer). Todas as instruções são executadas num único ciclo de máquina, exceto no caso de instruções de salto e de ramificação.

Estrutura do PIC 16F877

Memória flash para instruções (program memory) com 14 bits/palavra (cada instrução do PIC16F8X tem 14 bits!);

8K x 14 bits de memória flash;

368 x 8 bits de4 memória RAM;

256 x 8 bits de memória EEPROM;

Pilha implementada por hardware com 8 níveis (até 8 chamadas de rotinas aninhadas)

5 Portas de E/S;

14 fontes de interrupção (internas e externas);

Dois módulos de Captura/Comparação/PWM;

Conversor A/D de 10 bits com entradas multiplexadas;

Porta serial síncrona com SPI (máster mode) e I2C (master/slave);

USART/SCI;

Porta paralela com 8 bits de dados e sinais de controle externos (RD, WR e CS);

Timer/Counter programável e um Watchdog Timer embutidos, este com seu próprio oscilador, para aplicações de Tempo Real críticas;

Recursos de hardware para proteção de código, modo de operação com baixo consumo de energia (sleep), programação "in-circuit", alta corrente de saída para LEDs (25 mA), power-on-reset, power-up timer, etc

21

Page 22: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Relógio / Ciclo de instrução

O relógio (clock), que determina a freqüência de operação do PIC é dividido internamente em quatro fases, Q1, Q2, Q3 e Q4 que não se sobrepõem. Estas quatro fases compõem um ciclo de instrução (também chamado ciclo de máquina), durante o qual uma instrução é executada.A execução de uma instrução, é antecedida pela extração da instrução que está na linha seguinte. O código da instrução é extraído da memória de programa em Q1 e é escrito no registro de instrução em Q4. A decodificação e execução dessa mesma instrução, fazem-se entre as fases Q1 e Q4 seguintes. No diagrama abaixo, pode-se observar a relação entre o ciclo de instrução e o clock do oscilador (OSC1) assim como as fases Q1-Q4.O contador de programa (ProgramCounter ou PC) guarda o endereço da próxima instrução a ser executada.

Cada ciclo de instrução inclui as fases Q1, Q2, Q3 e Q4. A extração do código de uma instrução da memória de programa, é feita num ciclo de instrução, enquanto que a sua decodificação e execução, são feitos no ciclo de instrução seguinte. Contudo, devido à sobreposição – pipelining (o microcontrolador ao mesmo tempo em que executa uma instrução extrai simultaneamente da memória o código da instrução seguinte), pode-se considerar que, para efeitos práticos, cada instrução demora um ciclo de instrução para ser executada. No entanto, se a instrução provocar uma mudança no conteúdo do contador de programa (PC), ou seja, se o PC não tiver que apontar para o endereço seguinte na memória de programa, mas sim para outro (como no caso de saltos ou de chamadas de subrotinas), então deverá considerar-se que a execução desta instrução demora dois ciclos. Isto acontece, porque a instrução vai ter que ser processada de novo, mas, desta vez, a partir do endereço correto. O ciclo de chamada começa na fase Q1, escrevendo a instrução no registro de instrução (InstructionRegister – IR). A decodificação e execução continuam nas fases Q2, Q3 e Q4 do clock.

22

Page 23: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Fluxograma das Instruções no Pipeline

TCY0: É lido da memória o código da instrução MOVLW 55h;

TCY1: É executada a instrução MOVLW 55h e é lida da memória a instrução MOVWF PORTB;TCY2: Éexecutada a instrução MOVWF PORTB e lida a instrução CALL SUB_1;TCY3: É executada a chamada (call) de um subprograma CALL SUB_1 e é lida a instrução BSF PORTA,BIT3. Como esta instrução não é a próxima instrução a ser executada (primeira instrução do subprograma SUB_1), a leitura de uma instrução tem que ser feita de novo. Este é um exemplo de uma instrução que precisa de mais que um ciclo.TCY4: este ciclo de instrução é totalmente usado para ler a primeira instrução do subprograma no endereço SUB_1;

TCY5: É executada a primeira instrução do subprograma SUB_1 e lida a instrução seguinte.

Unidade Central de Processamento

A unidade central de processamento (CPU) é o cérebro do microcontrolador. Essa parte é responsável por extrair a instrução da memória de programa, decodificar essa instrução e executá-la.

23

Page 24: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Direto

Registros

Registro

Registro

Indireto

Esquema da unidade central de processamento – CPU

A principal função da unidade central de processamento é a de decodificar as instruções do programa. A cada uma das instruções do conjunto do microcontrolador, corresponde um conjunto de ações para a implementação da instrução. Estas ações podem envolver transferências de dados de um local de memória para outro, de um local de memória para as portas, e diversos cálculos.

Unidade Lógica e Aritmética (ULA)

A ULA do PIC possui 8 bits de largura e um único acumulador denominado w (“workingregister”). Ela faz operações aritméticas de soma e subtração (em 2- complemento) e operações lógicas como rotate, and, or, xoretc.

Nas operações lógicas e aritméticas com 2 operandos, o acumulador w é sempre um dos operandos e qualquer um dos 80 registradores f pode ser o 2º operando (ou uma constante de 8 bits ou literal, codificada na própria instrução).

Instruções lógico/aritméticas com um só operando (por exemploinc, dec, clr, com, bit set, etc) tomam como operando ou o acumulador w ou um registrador f.

As instruções lógicas e aritméticas podem atualizar os bits Z (zero) ,C (carry) e DC (digitcarry) do registrador de estado (f = 03).

Uma característica interessante das instruções com dois operandos envolvendo w e um registrador f é que um bit na instrução permite escolher se o resultado vai para o acumulador w (bit= 0) ou para o registrador f (bit = 1), permitindo algumas operações pouco convencionais como: f - w => w.

24

Page 25: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Nos mnemônicos das instruções do PIC o destino do resultado é designado genericamente pela letra d e especificamente pelas letras f ou w (é conveniente, portanto, definir nos programas em assembler duas constantes w e f com as diretivas: w equ0 e f equ 1). Por exemplo: a instrução movf f, w move o conteúdo de um registrador genérico f para o acumulador w, a instrução movwf f move o conteúdo do acumulador w para um registrador genérico f e a instrução movlw k move uma constante k para w.

Obs: Existem dois paradigmas largamente utilizados para codificação simbólica de instruções com dois operandos: o paradigma da Intel, onde uma instrução genérica do tipo:

opr dest, source significa: dest <= destoprsource

(interprete o símbolo <= como "recebe" e opr como a operação feita pela instrução)

e o paradigma do minicomputador PDP11 e seus seguidores como os microprocessadores Motorola MCHC11 e MC68000, onde uma instrução do tipo:

oprsource, dest significa: sourceoprdest =>dest

( interprete o símbolo => como "vai para" )

O PIC 16F8X adota o paradigma do PDP11, porém de forma não ortogonal como pode ser notado claramente nas 3 instruções vistas anteriormente.

Unidade lógica-aritmética

Diagrama de blocos do PIC 16F877

25

Page 26: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

26

Page 27: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Registradores “f” especiais (SFR - Special File Registers)

Os registradores f de número 0 a 0xb são especiais, mas podem ser (na sua maioria) lidos/alterados por qualquer instrução envolvendo um registrador f. Alguns refletem o estado da CPU e são particularmente importantes para o programador assembler:

Registrador STATUS

Bit 0 C (Carry) Transporte: Este bit é afetado pelas operações de adição, subtração e deslocamento. É setado (assume o valor 1), quando na subtração X – Y, X é menor que Y e é resetado (assume o valor 0), quando na subtração X-Y, X é maior que Y.

1= Ocorreu um transporte no bit mais significativo

0= Não ocorreu transporte no bit mais significativo

O bit C é afetado pelas instruções ADDWF, ADDLW, SUBLW e SUBWF.

Bit 1 DC (DigitCarry) Transporte de dígito: Este bit é afetado pelas operações de adição e subtração. Ao contrário do anterior, DC assinala um transporte do bit 3 para o bit 4 do resultado. Este bit recebe o valor ‘1’, quando na subtração X – Y, X é menor que Y e recebe o valor ‘0’, quando na subtração X-Y, X é maior que Y.

1= Ocorreu um transporte no quarto bit mais significativo

0= Não ocorreu transporte nesse bit

O bit DC é afetado pelas instruções ADDWF, ADDLW, SUBLW e SUBWF.

Bit 2 Z (bit Zero) Indicação de resultado igual a zero: Este bit recebe o valor ‘1’ quando o resultado da operação lógica ou aritmética executada é igual a 0.

1= resultado igual a zero

0= resultado diferente de zero

27

Page 28: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Bit 3PD (Bit de queda de tensão – Power Down): Este bit recebe ‘1’ quando o microcontrolador é alimentado e começa a trabalhar, depois de um reset normal e depois da execução da instrução CLRWDT. A instrução SLEEP põe este bit em ‘0’ ou seja, quando o microcontrolador entra no regime de baixo consumo / pouco trabalho. Este bit pode também ser setado (assume o valor 1), no caso de ocorrer um impulso no pino RB0/INT, uma variação nos quatro bits mais significativos da porta B, ou quando é concluída uma operação de escrita na DATA EEPROM ou ainda pelo watchdog.

1 = depois de ter sido ligada a alimentação

0 = depois da execução de uma instrução SLEEP

Bit 4TO (Time-out - transbordo do Watchdog): Este bit recebe ‘1’, depois da alimentação ser ligada e depois da execução das instruções CLRWDT e SLEEP. O bit recebe ‘0’ quando o watchdog consegue chegar ao fim da sua contagem (overflow = transbordar), o que indica que qualquer coisa não esteve bem.

1 = não ocorreu transbordo

0 = ocorreu transbordo

bits 5 e 6RP1:RP0 (bits de seleção de banco de registros): Estes dois bits são a parte mais significativa do endereço utilizado para endereçamento direto. Como as instruções que endereçam diretamente a memória dispõem somente de sete bits, é preciso mais um ou dois bits para poder endereçar todos os registros (memória RAM) do PIC16F8X.

11 = banco de registros 3

10 = banco de registros 2

01 = banco de registros 1

00 = banco de registros 0

Bit 7 IRP (Bit de seleção de banco de registros):Este bit é utilizado no endereçamento indireto da RAM interna, como oitavo bit 1 = bancos 2 e 3 0 = bancos 0 e 1 (endereços de 00h a FFh)

O registro de estado (STATUS), contém o estado da ALU (C, DC, Z), estado de RESET (TO, PD) e os bits para seleção do banco de memória (IRP, RP1, RP0). Considerando que a seleção do banco de memória é controlada através deste registro, ele tem que estar presente em todos os bancos.

28

Page 29: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Registrador OPTION

Bits 0 a 2 PS0, PS1, PS2 (bits de seleção do divisor Prescaler): Estes três bits definem o fator de divisão do prescaler.

Bit 3 PSA (Bit de Atribuição do Prescaler): Bit que atribui o prescaler ao TMR0 ou ao watchdog.1 = prescaler atribuído ao watchdog

0 = prescaler atribuído ao temporizador TMR0

Bit 4 T0SE (bit de seleção de borda ativa em TMR0): Se for permitido aplicar impulsos em TMR0, a partir do pino RA4/TOCK1, este bit determina se os impulsos ativos são os impulsos ascendentes ou os impulsos descendentes.

1 = Borda descendente

0 = Borda ascendente

Bit 5 TOCS (bit de seleção de fonte de clock em TMR0): Este pino escolhe a fonte de impulsos que vai ser ligada ao temporizador. Esta fonte pode ser o clock do microcontrolador (freqüência de clock a dividir por 4) ou impulsos externos no pino RA4/TOCKI.1 = impulsos externos

0 = ¼ do clock interno

29

Page 30: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Bit 6 INDEDG (bit de seleção de borda de interrupção): Se esta interrupção estiver habilitada, é possível definir a borda que vai ativar a interrupção no pino RB0/INT.1 = borda ascendente

0 = borda descendente

Bit 7 RBPU (Habilitação dos resistores de pull-up nos bits da porta B): Este bit introduz ou retira as resistências internas de pull-up da porta B.

1 = resistências de “pull-up” desligadas

0 = resistências de “pull-up” ligadas

Organização da Memória

O PIC16F877 tem dois blocos de memória separados, um para dados e o outro para o programa. A memória EEPROM e os registros de uso genérico (GPR) na memória RAM constituem o bloco para dados e a memória FLASH constitui o bloco de programa.

Memória de programa

A memória de programa é implementada usando tecnologia FLASH, o que torna possível programar o microcontrolador muitas vezes antes de se obter a versão definitiva do programa. No PIC 16F877 o tamanho da memória de programa é de 8192 endereços de palavras de 14 bits, destes, os endereços zero e quatro estão reservados respectivamente para o reset e para o vetor de interrupção.

Memória de dados

A memória de dados compreende memória EEPROM e memória RAM. A memória EEPROM consiste em 256 posições para palavras de oito bits. A memória EEPROM não faz parte diretamente do espaço de memória mas é acessada indiretamente através dos registros EEADR e EEDATA. Como a memória EEPROM serve em geral para armazenar dados que devem ser mantidos mesmo após o desligamento do sistema onde o microcontrolador está inserido, existe um procedimento específico para escrever na EEPROM que tem que ser seguido de modo a evitar uma escrita acidental. A memória RAM para dados, ocupa um espaço no mapa de memória que varia de acordo com o banco de memória usado, conforme indicado na tabela abaixo

Banco Faixa de endereços da RAM

30

Page 31: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

0 0x20 a 0x7F

1 0xA0 a 0xEF

2 0x110 a 0x16F

3 0x190 a 0x1F0

Os locais da memória RAM são também chamados registros GPR (General Purpose Registers = Registros de uso geral). Os registros GPR podem ser acessados sem referenciar o banco de memória em que o mesmo se encontra.

Registros SFR

Os registros que ocupam 12 primeiras localizações nos bancos 0 a 4 são registros especiais e têm a ver com a manipulação de certos blocos do microcontrolador. Estes registros são os SFR (Special Function Registers ou Registros de Funções Especiais).

31

Page 32: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Mapa de Registros do PIC 16F877

32

Page 33: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Contador de Programa

O contador de programa (PC = Program Counter), é um registro de 13 bits que contém o endereço da instrução que vai ser executada.

PilhaO PIC16F877 tem uma pilha (stack) de 13 bits e 8 níveis de profundidade, o que corresponde a 8 locais de memória com 13 bits de largura. O seu papel básico é guardar o valor do contador de programa quando ocorre um salto do programa principal para o endereço de um subprograma a ser executado. Depois de ter executado o subprograma, para que o microcontrolador possa continuar com o programa principal a partir do ponto em que o deixou, ele tem que buscar na pilha esse endereço e carregá-lo no contador de programa. Quando ocorre o desvio de um programa para um subprograma, o conteúdo do contador de programa é salvo na da pilha (um exemplo disto é a instrução CALL). Quando são executadas instruções tais como RETURN, RETLW ou RETFIE no fim de um subprograma, o contador de programa é retirado da pilha, de modo que o programa possa continuar a partir do ponto em que a seqüência foi interrompida. Estas operações de colocar e extrair da pilha o contador de programa, são designadas por PUSH (colocar na pilha) e POP (retirar da pilha), estes dois nomes provêm de instruções com estas designações, existentes em alguns microcontroladores de maior porte.

Programação no Sistema

Para programar a memória de programa, o microcontrolador tem que entrar num modo especial de funcionamento no qual o pino MCLR é posto a 13,5V e a voltagem da alimentação Vdd deve permanecer estável entre 4,5V e 5,5V. A memória de programa pode ser programada em série, usando dois pinos ‘data/clock’ que devem ser previamente separados do dispositivo em que o microcontrolador está inserido, de modo que não possam ocorrer erros durante a programação.

Modos de endereçamento

Os locais da memória RAM podem ser acessados direta ou indiretamente.

Endereçamento Direto

O endereçamento direto é feito através de um endereço de 9 bits. Este endereço é obtido juntando aos sete bits do endereço direto de uma instrução, mais dois bits (RP1 e RP0) do registro STATUS, como pode ser visto na figura que se segue. Qualquer acesso aos registros especiais (SFR), pode ser um exemplo de endereçamento direto.

33

Page 34: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Bsf STATUS, RP0 :banco 0

movlw 0xFF :w = 0xFF

movwf TRISA :o endereço do registro TRISA é retirado do código da instrução movwf TRISA

Seleção de Banco

Seleção de Registro

Registro

Endereçamento Direto

Endereçamento Indireto

O endereçamento indireto, não retira um endereço do código da instrução. O endereço é obtido com a ajuda do bit IRP do registro STATUS e do registro FSR. O local endereçado é acessado através do registro INDF e coincide com o endereço contido em FSR (qualquer instrução que use INDF como registro, na realidade acessa os dados apontados pelo registro FSR). Por exemplo, considere que o registro de uso genérico de endereço 0Fh contém o valor 20. Escrevendo o valor 0Fh no registro FSR, obtém-se um ponteiro para o registro 0Fh e, ao ler o registro INDF, obtém-se o valor 20, o que significa que foi lido o conteúdo do registro 0Fh, sem o mencionar explicitamente (mas através de FSR e INDF).

34

Page 35: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Registro FSR

Registro

Seleção de Banco

Seleção de Registro

Endereçamento Indireto

Interrupções

As interrupções são um mecanismo que o microcontrolador possui e que torna possível responder a alguns eventos no momento em que eles ocorrem. Geralmente, cada interrupção muda a direção de execução do programa, suspendendo a sua execução, enquanto o microcontrolador executa um subprograma que é a rotina de atendimento de interrupção. Depois deste subprograma ter sido executado, o microcontrolador continua com o programa principal, a partir do local em que o tinha abandonado.

Programa sendoexecutado

Interrupção externa e seqüência de desvios para atendimento da interrupção e retorno ao programa principal.

35

Page 36: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

O registro que controla as interrupções é chamado INTCON e tem o endereço 0Bh. O papel do INTCON é permitir ou impedir as interrupções e, mesmo no caso de elas não serem permitidas, ele registra os pedidos de interrupção, mudando o valor de alguns dos seus bits.

Registrador INTCON

Bit 0 RBIF (flag que indica variação na porta B): Bit que informa que houve mudança nos níveis lógicos nos pinos 4, 5, 6 e 7 da porta B.

1= pelo menos um destes pinos mudou de nível lógico

0= não ocorreu nenhuma variação nestes pinos

Bit 1 INTF (flag de interrupção externa INT): Ocorrência de uma interrupção externa 1= ocorreu uma interrupção externa

0= não ocorreu uma interrupção externa

Se uma transição ascendente ou descendente for detectada no pino RB0/INT, o bit INTF ajustado para ‘1’ (o tipo de sensibilidade, ascendente ou descendente é definida através do bit INTEDG do registro OPTION). O subprograma de atendimento desta interrupção, deveresetar este bit, afim de que a próxima interrupção possa ser detectada.

Bit 2 TOIF (Flag de interrupção por transbordo de TMR0): O contador TMR0, transbordou.1= o contador mudou a contagem de FFh para 00h

0= o contador não transbordou

Para que esta interrupção seja detectada, o programa deve resetar este bit.

Bit 3 RBIE (bit de habilitação de interrupção por variação na porta B): Habilitação da interrupção por variação dos níveis lógicos nos pinos 4, 5, 6 e 7 da porta B.

36

Page 37: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

1= habilita a interrupção por variação dos níveis lógicos

0= inibe a interrupção por variação dos níveis lógicos

A interrupção só pode ocorrer se RBIE e RBIF estiverem simultaneamente em ‘1’ lógico.

Bit 4 INTE (bit de habilitação da interrupção externa INT): Bit que habilita uma interrupção externa no bit RB0/INT.

1= interrupção externa habilitada

0= interrupção externa desabilitada

A interrupção só pode ocorrer se INTE e INTF estiverem simultaneamente em‘1’ lógico.

Bit 5 TOIE (bit de habilitação de interrupção por transbordo de TMR0): Bit que habilita a interrupção por transbordo do contador TMR0.

1= interrupção habilitada

0= interrupção desabilitada

A interrupção só pode ocorrer se TOIE e TOIF estiverem simultaneamente em ‘1’ lógico.

Bit 6 PEIE (bit de habilitação de interrupção dos periféricos): Bit que habilita as interrupções geradas pelos periféricos.

1= habilita todas as interrupções dos periféricos

0= desabilita todas as interrupções dos periféricos

Se EEIE e EEIF (que pertence ao registro EECON1) estiverem simultaneamente em ‘1’, a interrupção pode ocorrer.

Bit 7 GIE (bit de habilitação global de interrupção): Bit que habilita ou desabilita todas as interrupções. 1= todas as interrupções são permitidas

0= todas as interrupções impedidas

37

Page 38: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

De um modo geral, cada fonte de interrupção tem dois bits associados. Um habilita a interrupção e o outro assinala quando a interrupção ocorre. Existe um bit comum a todas as interrupções chamado GIE que pode ser usado para desabilitar ou habilitar todas as interrupções, simultaneamente. Este bit é muito útil quando se está escrevendo um programa porque permite que todas as interrupções sejam impedidas durante um período de tempo, de tal maneira que a execução de uma parte crítica do programa não possa ser interrompida. Quando a instrução que faz GIE= 0 é executada (GIE= 0 impede todas as interrupções), todos os pedidos de interrupção pendentes, serão ignorados.

Memória de dados EEPROM

O PIC16F877 tem 256 bytes de localizações de memória EEPROM, correspondentes aos endereços de 00h a FFh e onde podemos ler e escrever. A característica mais importante desta memória é de não perder o seu conteúdo quando a alimentação é desligada. Na prática, isso significa que os dados escritos permanecem no microcontrolador, mesmo quando a alimentação é desligada. Sem alimentação, estes dados permanecem no microcontrolador durante mais de 40 anos (especificações do fabricante do microcontrolador PIC), além disso, esta memória suporta até 10000 operações de escrita.

A memória EEPROM é colocada num espaço de memória especial e pode ser acessada através dos registros especiais:

EEDATA (endereço 10Ch): Contém o byte menos significativo do dado de 14 bits a ser lido/escrito na EEPROM;

EEDATAH (endereço 10Eh): Contém o byte mais significativo do dado de 14 bits a ser lido/escrito na EEPROM;

EEADR (endereço 10Dh): Contém o byte menos significativo do endereço de 13 bits da posição de memória da EEPROM a ser lida/escrita;

EEADRH (endereço 10Fh): Contém o byte mais significativo do endereço de 13 bits da posição de memória da EEPROM a ser lida/escrita;

EECON1 (endereço 18Ch): Registrador de controle de acesso a memória EEPROM;

EECON2 (endereço 18Dh): Este registro não existe fisicamente e serve para proteger a EEPROM de uma escrita acidental.

38

Page 39: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

O registro EECON1 ocupa o endereço 18Ch e é um registro de controle com cinco bits implementados.Os bits 4, 5 e 6 não são usados e, se forem lidos, são sempre iguais a zero.

Os bits do registro EECON1, devem ser interpretados do modo que se segue.

Bit 0 RD (bit de controle de leitura): Ao setar este bit (Bit 0 = 1), tem início a transferência do dado do endereço definido em EEADRH:EEADR para o registro EEDATAH:EEDATA. Como o tempo não é essencial, tanto na leitura como na escrita, o dado de EEDATAH: EEDATA pode já ser usado na instrução seguinte.

1 = inicia a leitura

0 = não inicia a leitura

Este bit é resetado, (Bit 0 = 0) por hardware uma vez que a escrita tenha terminado.

Bit 1 WR (bit de controle de escrita): Ao setar este bit ( Bit 1 = 1), tem início a escrita do dado a partir do registro EEDATAH:EEDATA para o endereço especificado no registro EEADRH:EEADR.

1 = inicia a escrita

0 = não inicia a escrita

Este bit é resetado, (Bit 1 = 0) por hardware uma vez que a escrita tenha terminado.

Bit 2 WREN (bit de habilitação de escrita na EEPROM): Permite a escrita na EEPROM.Se este bit não estiver em um lógico, o microcontrolador não permite a escrita na EEPROM.

1 = a escrita é permitida

0 = não se pode escrever

39

Page 40: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Bit 3 WRERR (Erro de escrita na EEPROM): Erro durante a escrita na EEPROMEste bit é setado (Bit 3 = 1) quando a escrita na EEPROM for interrompida por um sinal de reset ou por um transbordo no temporizador do watchdog (no caso deste estar ativo).

1 = ocorreu um erro

0 = não houve erros

Bit 7 EEPGD (Bit que indica acesso a memória de programa (FLASH) ou a memória de dados EEPROM)

1 = Acesso a memória de programa (FLASH)

0 = Acesso a memória de dados (EEPROM)

Portas de E/S

Alguns pinos das portas de E/S são multiplexados com uma função alternativa de um periférico do microcontrolador. Em geral, quando o periférico é habilitado este pino não pode ser utilizado como um pino de E/S de propósito geral.

Porta A e o registrador TRISA

A porta A é uma porta de E/S bidirecional de 6 bits de largura. A direção que os pinos assumem (entrada ou saída) é determinada pelos bits do registrador TRISA, setando um bit de TRISA, faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como saída. Uma operação de leitura da porta, lê o valor dos pinos, enquanto em uma escrita o dado é copiado para o “latch” da porta.

O pino RA4 é multiplexado com a entrada de clock do módulo Timer0 (pino RA4/T0CKI). Outros pinos da porta A são multiplexados com entradas analógicas e entradas analógicas VREF. A operação de cada pino é selecionada setando/resetando os bits de controle no registradorADCON1 (A/D Control Register1). O registrador TRISA controla a direção dos pinos da porta A mesmo quando eles são usados como entradas analógicas, neste caso os respectivos bits do TRISA devem estar setados.

EXEMPLO: Inicialização da porta A

40

Page 41: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

BCF STATUS, RP0 ;

BCF STATUS, RP1 ; Bank0

CLRF PORTA ;Initialize PORTA byclearing output data latches

BSF STATUS, RP0 ;Select Bank 1

MOVLW 0x06 ; Configure all pins

MOVWF ADCON1 ; as digital inputs

MOVLW 0xCF ; Valueusedtoinitialize data direction

MOVWF TRISA ; Set RA<3:0> as inputs; RA<5:4> as outputs; TRISA<7:6> are always; read as ’0’.

Tabela: Funções dos pinos da porta A

Resumo dos registradores associados a porta A

Porta B e o registrador TRISB

A porta B é uma porta de E/S bidirecional de 8 bits de largura. A direção que os pinos assumem (entrada ou saída) é determinada pelos bits do registrador TRISB, setando um bit de TRISB, faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como saída. Uma operação de leitura da porta, lê o valor dos pinos, enquanto em uma escrita o dado é copiado para o “latch” da porta.

41

Page 42: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Três pinos da porta B são multiplexados com a função de Programação em Baixa Tensão (RB3/PGM, RB6/PGC e RB7/PGD). Cada pino da porta B pode ser ajustado para funcionar com um resistor de pull-up. O bit RBPU (OPTION_REG<7>) controla esta configuração, quando resetado ativa os resistores de pull-up.

Os pinos de RB7 a RB4 podem gerar interrupções quando configurados como pinos de entrada. Os valores dos pinos são comparados com o valor da última leitura destes pinos, gravada no latch. As diferenças dos quatro pinos passa por uma operação lógica OU, para gerar a interrupção “RB PortChange” e ajustar o respectivo bit de flag RBIF (Bit 0 do registrador INTCON). RB0/INT pode ser configurado também como um pino de interrupção. A borda que identifica a interrupção é configurada a partir do bit INTEDG (bit 6) do registrador OPTION.

Tabela: Funções dos pinos da porta B

Resumo dos registradores associados a porta B

42

Page 43: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Porta C e o registrador TRISC

A porta C é uma porta de E/S bidirecional de 8 bits de largura. A direção que os pinos assumem (entrada ou saída) é determinada pelos bits do registrador TRISC, setando um bit de TRISC faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como saída. Uma operação de leitura da porta, lê o valor dos pinos, enquanto em uma escrita o dado é copiado para o “latch” da porta.

Quando funções de periféricos forem habilitadas, deve ser observado se não há uma sobreposição de configurações,já que alguns periféricos sobrepõem sua configuração originalmente definida no registrador TRISC.

Tabela: Funções dos pinos da porta C

Resumo dos registradores associados a porta C

Porta D e o registrador TRISD

43

Page 44: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

A porta D é uma porta de E/S bidirecional de 8 bits de largura. A direção que os pinos assumem (entrada ou saída) é determinada pelos bits do registrador TRISD, setando um bit de TRISD faz com que o correspondente pino da porta funcione como entrada. Resetando o bit, o respectivo pino funciona como saída. Uma operação de leitura da porta, lê o valor dos pinos, enquanto em uma escrita o dado é copiado para o “latch” da porta.

A porta D pode ser configurada como uma porta paralela de 8 bits, setando o bit de controle

PSPMODE (bit 4) do registrador TRISE. Nesse modo, os buffers de entrada são TTL.

Tabela: Funções dos pinos da porta D

Resumo dos registradores associados a porta D

A porta E tem três pinos, RE0/RD/AN5, RE1/WR/AN6 e RE2/CS/AN7, que são individualmente configurados como entrada ou como saída. A porta de E torna-se entrada de controle para a porta paralela (porta D), quando o bitPSPMODE (bit 4 de TRISE) é setado. Nesse modo, os bits de 2 a 0 de TRISE devem estar setados para configurar os respectivos pinos da porta E como entradas digitais e os bits PCFG3:PCFG0 do registrador ADCON1 deve estar ajustados para configurar RE2:RE0 como E/S digital.

44

Page 45: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Os pinos da porta E são multiplexados com entradas analógicas. Quando selecionados como uma entrada analógica, leituras desses pinos retornam 0. O TRISE controla a direção dos pinos RE mesmo quando eles estão sendo usados como entradas analógicas (deve ser garantido que os pinos estão configurados como entradas pelo TRISE, quando os mesmos funcionam como entradas analógicas ).

Função dos bits do registrador TRISE (Endereço 89h)

45

Page 46: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Tabela: Funções dos pinos da porta E

Resumo dos registradores associados a porta E

Características especiais da CPU

O PIC16F877 possui um conjunto de características que permite customizar a sua operação sem a necessidade de componentes externos. São elas:

Seleção de Oscilador

Seleção do modo de Reset

o Power-on Reset (POR)

o Power-up Timer (PWRT)

o OscillatorStart-up Timer (OST)

o Brown-out Reset (BOR)

Interrupções46

Page 47: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Watchdog Timer (WDT)

SLEEP

Proteção de código

ID locations

Programação serial In-Circuit

Programação serial In-Circuit em baixa tensão

In-CircuitDebugger

O WatchDog timer pode ser desligado apenas ajustando alguns bits de configuração. O mesmo possui o próprio oscilador. Há dois Timers que geram os atrasos necessários quando o microcontrolador é ativado, o OST (OscilatorStart-up Timer), que mantém o PIC em RESST até o oscilador a cristal estabilizar e o PWRT (Power-up Timer), que gera um atraso fixo de 72 ms quando o PIC é energizado (mantém o PIC em RESET enquanto a tensão da fonte estabiliza).

O modo SLEEP foi desenvolvido para oferecer um consume muito baixo quando o PIC está no modo “power-down”. A saída do modo SLEEP pode ocorrer por reset externo, “Watchdog Timer Wake-up” ou através de uma interrupção.

Diferentes opções de osciladores são disponibilizadas, para permitir uma perfeita adequação do PIC ao sistema. A opção RC diminui custos, enquanto a opção LC economiza energia. Um conjunto de bits de configuração são usados para selecionar as opções.

Bits de configuração

Os bits de configuração são mapeados na memória de programa, no endereço 2007h. O endereço 2007h está dentro do espaço de memória de programa do usuário (pertence ao espaço de memória especial de teste e configuração – 2000h a 3FFFh), que pode ser acessado apenas durante a programação.

Palavra de configuração

47

Page 48: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Tipos de osciladores

O PIC 16F87X pode ser operado em quatro modos distintos de oscilação. O usuário pode programar um dos modos abaixo a partir dos bits (FOSC1 and FOSC0):

LP Low Power Crystal

XT Crystal/Resonator

HS High Speed Crystal/Resonator

RC Resistor/Capacitor

48

Page 49: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Nos modos XT, LP ou HS,um cristal deve ser conectado aos pinos OSC1/CLKIN e OSC2/CLKOUT para estabelecer a oscilação. Quando nos modos XT, LP ou HS, o dispositivo pode ter um fonte externa de clock para acionar o pino OSC1/CLKIN.

Para aplicações insensíveis a variações de tempo, a opção RC apresenta baixo custo de implementação, no entanto, a freqüência do oscilador variará em função de variações da tensão da fonte e dos valores de R e C

Reset

The PIC16F87X pode operar com vários tipos de reset:

Power-on Reset (POR)

MCLR reset during normal operation

MCLR reset during SLEEP

WDT Reset (during normal operation)

WDT Wake-up (during SLEEP)

Brown-out Reset (BOR)

Alguns registradores não são afetados em algumas condições de reset, Neste caso o status desses registradores é desconhecido no POR e não são alterados pelos outros modos de reset. Muitos outros registradores são ajustados para um estado de “reset” no POR, no MCLR e WDT reset, no NCLR durante o SLEEP e no BOR. Eles são afetados pro um WDT Wake-up, que é visto como um reinício de uma operação normal. Os bits TO e PD são setados ou resetados em diferentes situações de reset como indicado na tabela abaixo. Esses bits são usados para determinar o modo de reset.

Bits de status e seu significado 49

Page 50: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Power-On Reset (POR)

Um Power-on Reset pulso é gerado internamente ao chip quando uma subida de VDD é detectada (na faixa de 1,2V – 1,7V).

Power-up Timer (PWRT)

O Power-up Timer fornece um time-out nominal fixo de 72 ms na energização do PIC, após um POR. O chip é mantido em reset enquanto PWRT está ativo. O atraso gerado pelo PWRT’s time, permite o VDD atingir um nível aceitável de tensão para operação. Um bit de configuração é provido para permitir habilitar/desabilitar o PWRT.

Oscillator Start-up Timer (OST)

O OscillatorStart-up Timer (OST) fornece 1024 ciclos de oscilação de atraso (da entrada OSC1) ao fim do atraso do PWRT. Isso garante que o circuito de oscilação a cristal atingiu a sua estabilidade. O OST time-out é invocado apenas nos modos XT, LP e HS e apenas no Power-on Reset ou wake-up de SLEEP.

Brown-Out Reset (BOR)

O bit de configuração, BODEN, pode habilitar ou desabilitar o circuito Brown-out Reset. Se VDD cai abaixo de VBOR (parâmetro D005, aproximadamente4V) por mais do que TBOR (parâmetro #35, aproximadamente 100mS), a situação de brown-out resetará o PIC. If VDD cai abaixo de VBOR por menos que TBOR, um reset não poderá ocorrer.

Uma vez que o brown-out ocorra, o dispositivo permanecerá em brown-out reset até VDD subir acima deVBOR. O power-up timer então mantém o dispositivo em reset por TPWRT (parâmetro #33, aproximadamente 72mS). Se VDD deve cair abaixo de VBOR durante TPWRT, o processo de brown-out reset reinicia quando VDD sobe acima de VBOR com o

50

Page 51: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

power-up timer reset. O power-up timer está sempre habilitado quando o circuito de brown-out reset está habilitado, independente do estado do bit de configuração PWRT

A tabela abaixo mostra a condição de reset para os registradores de STATUS, PCON e PC .

51

Page 52: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

As tabelas abaixo mostram as condições de reset para todos os outros registradores.

52

Page 53: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

53

Page 54: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Power Control/Status Register (PCON)

O registrador Power Control/Status, PCON, tem até dois bits, dependendo do dispositivo. O Bit0 é o bit de Brown-out Reset Status, BOR. O bit BOR é desconhecido no Power-on Reset. Ele deve ser setado pelo usuário e checado em subseqüentes resets para ver se o bit BOR está apagando, indicando que um BOR ocorreu. O bit BOR é um bit "don’tcare" e é necessário predizer se a circuitaria do Brown-out Reset está desabilitada (apagando o bit BODEN na palavra de configuração).

O bit 1 é o POR (Power-on Reset Status bit). Ele é apagado no Power-on Reset e não é afetado. O usuário deve setar este bit após um Power-on Reset.

Referências

1 – Microcontrolador PIC 16F8X - Resumo da Arquitetura, ,MC404B - Nov 2001 - Prof. Célio Guimarães.

2 – PIC16F87X Datasheet – Microchip Technology Incorporated. USA. Nov 1999.

3 - MicrocontroladoresPIC – mikroElektronika , 2003

54

Page 55: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

PREPARAÇÃO1. Quantos ciclos de clock no total são gastos para realizar a busca e execução de uma

instrução no PIC?

2. Descreva a condição indicada por cada Flag (bits de 0 a 4) do registrador de “STATUS” do PIC.

3. Identifique os bits do registrador “OPTION” que configuram o preescalonador do clock que alimenta o TIMER0 ou WatchDog.

4. Identifique a faixa de endereços de cada bloco de memória de dados (memória RAM) do PIC.

5. O que deve ser feito para programar o pino de uma porta de I/O como:

a) Entrada digital;

b) Saída digital.

6. Quais os pinos da porta B podem gerar interrupções?

7. Indique em que condição ocorre o “Power-on-Reset” e o “Brown-Out-Reset”.

8. Explique que operação é realizada pelas instruções C para PIC abaixo:

OUTPUT_HIGH (PIN);

OUTPUT_LOW (PIN);

OUTPUT_BIT (PIN, VALUE);

OUTPUT_X (VALUE) (X=A, B, C,...);

9. Explique que operação é realizada pelas instruções C para PIC abaixo:

INPUT (PIN);

INPUT_X ( ), (X=A, B, C,...);

10. Explique que operação é realizada pelas instruções C para PIC abaixo:

DELAY_MS(VALOR);

DELAY_US(VALOR);

55

Page 56: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

11. Explique que operação é realizada pelas instruções C para PIC abaixo:

SET_TRIS_x (VALOR) (x=a,b,c,d ou e, representa uma porta de I/O)

12. Elabore uma rotina em C que ao pressionar um botão, acenda um LED da placa de experimentos do PIC e ao apertar um segundo botão, apague o respectivo LED. Considere como pinos de entrada para leitura dos botões os pinos A3 e A4 da porta A. Considere como saída para acender o LED o pino B0 da porta B.

13. Elabore uma rotina em C que incremente um contador (variável do tipo int, 8 bits) a cada 0,1s (use a instrução delay_ms para gerar o atraso de 0,1s) e o escreva na porta D do PIC quando for pressionado um botão (use o código do item 12).

14. Elabore uma rotina em C que calcule o complemento de 2 do valor de 8 bits gerado pelo contador da rotina acima. Esse valor é selecionado a aplicar um sinal 0 (zero) a entrada B0 (conecte um botão ao pino B0 do PIC). Ao pressionar o botão o valor selecionado deve ser apresentado através de LED’s usando os 8 bits da porta D e 1 (um) segundo depois, deve ser apresentado o complemento de 2 do número, usando também a porta D como saída de dados.

9.2.1.8 Buzzer

Usado para geração de sinais sonoros.

O buzzer é um componente composto de duas camadas de metal e uma camada interna de

cristal piezoeléctrico. Ao ser alimentado com uma fonte de sinal, vibra na mesma frequência

recebida, funcionando como uma sirene ou alto-falante.Existem várias versões e tamanhos.

56

Page 57: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Sua vantagem em relação a alto-falantes comuns é que consome pouca energia em relação à

potência sonora, sendo facilmente alimentado com pequenas baterias.

Principais entradas para o Pic.

9.2.1.10 Jumper

Para seleção de Leds ou displays.

Jumper é uma ligação móvel entre dois pontos de um circuito eletrônico. É, geralmente, uma

pequena peça plástica isolante que contém uma peça metálica em seu interior, responsável

pela condução de eletricidade. Em circuitos impressos (PCB em inglês) são responsáveis por

desviar, ligar ou desligar o fluxo elétrico permitindo configurações específicas por meio físico

do hardware em questão. Em discos rígidos (HD) eles configuram o modo como a placa-

mãe reconhece o disco rígido no sistema. Podendo configurá-los como "master" ou "slave",

ou mesmo pode limitá-los a 32GiB de capacidade.

Também denomina-se "Jumper" a um segmento de fio condutor soldado diretamente às ilhas

de uma placa de circuito impresso com a função de interligar dois pontos do circuito.

9.2.1.11 Resistores

Para controle da corrente dos Leds

Um resistor é um dispositivo elétrico muito utilizado em eletrônica, ora com a finalidade de

transformar energia elétrica em energia térmica por meio do efeito joule, ora com a finalidade

de limitar a corrente elétrica em um circuito.

Resistores são componentes que têm por finalidade oferecer uma oposição à passagem

de corrente elétrica, através de seu material. A essa oposição damos o nome de resistência

elétrica, que possui como unidade o ohm. Causam uma queda de tensão em alguma parte de

um circuito elétrico, porém jamais causam quedas de corrente elétrica. Isso significa que a

corrente elétrica que entra em um terminal do resistor será exatamente a mesma que sai pelo

57

Page 58: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

outro terminal, porém há uma queda de tensão. Utilizando-se disso, é possível usar os

resistores para controlar a corrente elétrica sobre os componentes desejados.

Um resistor ideal é um componente com uma resistência elétrica que permanece constante

independentemente da tensão ou corrente elétrica que circular pelo dispositivo.

Os resistores podem ser fixos ou variáveis. Neste caso são chamados

de potenciômetros ou reostatos. O valor nominal é alterado ao girar um eixo ou deslizar uma

alavanca.

O valor de um resistor de carbono pode ser facilmente identificado de acordo com as cores

que apresenta na cápsula que envolve o material resistivo, ou então usando um ohmímetro.

Alguns resistores são longos e finos, com o material resistivo colocado ao centro, e um

terminal de metal ligado em cada extremidade. Este tipo de encapsulamento é chamado de

encapsulamento axial. A fotografia a direita mostra os resistores em uma tira geralmente

usados para a pré-formatação dos terminais. Resistores usados em computadores e outros

dispositivos são tipicamente muito menores, freqüentemente são utilizadas tecnologia de

montagem superficial (Surface-mounttechnology), ou SMT, esse tipo de resistor não tem

"perna" de metal (terminal). Resistores de maiores potências são produzidos mais robustos

para dissipar calor de maneira mais eficiente, mas eles seguem basicamente a mesma

estrutura.

9.2.1.12 Interface para gravação do Pic

Conectado a um computador através de cabo USB, permite a transferência e gravação de

programas para a memória do controlador.

58

Page 59: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

9.2.1.13 Cristal e capacitores cerâmicos

Usados para geração de clock para o controlador de gravação.

Capacitor é um componente que armazena energia num campo elétrico, acumulando um

desequilíbrio interno de carga elétrica.

9.2.1.14 Controlador

Usado para efetuar a gravação do Pic.

59

Page 60: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

10 - Anexos

10.1 - Set Instruções

Cada instrução do PIC16F628A tem o tamanho de 14 bits, onde alguns destes bits são usados

para especificar o OPCODE (nome dado ao "comando" assembly), e de zero até dois

operandos. Por conveniência, a ultima categoria foi dividida em literal e controle.

O formato das instruções pode variar de acordo com o tipo, abaixo o formato da instrução do

PIC para cada tipo. A figura abaixo mostra os formatos de instrução do PIC16F628A.

As tabelas seguintes apresentam todas as instruções do PIC16F628A, com os seus respectivos

operandos.

60

Page 61: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Orientadas a bit00011

Orientadas a byte

61

Page 62: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

De controle (quando efetuam desvios gastam 2 ciclos)

62

Page 63: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Operações com literais

63

Page 64: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

Legenda:

X = não importa o valor do bit

k = o bit pertence a um literal

f = O bit pertence a um endereço de registrador

d = onde o resultado será armazenado W(d=0) ou F(d=1)

64

Page 65: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

10.2 - Programa Exemplo

Este programa foi inicialmente desenvolvido e serviu de modelo para o programa

aperfeiçoado neste trabalho no item 8 – Programa / Software.

/*Programa para a ATPS de Microcontroladores.

Este programa simula um controlador de acesso, onde ao se pressionar os botões corretos, o

microcontrolador aciona leds simulando a abertura de uma porta.*/

voidmain()

{

CMCON=0x07; // CONFIGURA I/Os DIGITAIS

TRISA=0xFF; // CONFIGURA TODO O PORT A COMO ENTRADA

TRISB=0x00; // CONFIGURA TODO O PORT B COMO SAÍDA

PORTB=0; // INICIA O PORT B DESLIGADO

while(1)

{

if(PORTA.RA4&&PORTA.RA1==1) // TESTA A SENHA

{

PORTB.RB6=1; // ACENDE O LED VERDE 3

PORTB.RB0=1; // ACENDE O LED VERDE 8

PORTB.RB7=0; // APAGA O LED VERMELHO 1

PORTB.RB2=0; // APAGA O LED VERMELHO 6

} // FECHA A INSTRUÇÃO if

else

{

PORTB.RB7=1; // ACENDE O LED VERMELHO 1

PORTB.RB2=1; // ACENDE O LED VERMELHO 6

PORTB.RB0=0; // APAGA O LED VERDE 8

PORTB.RB6=0; // APAGA O LED VERDE 3

65

Page 66: Sumário · Web viewA atividade prática supervisionada elaborada para o curso de Engenharia de Controle e Automação, com relação à disciplina Microcontroladores e Microprocessadores

} // FECHA A INSTRUÇÃO else

} // FECHA A INSTRUÇÃO while

} // FECHA INSTRUÇÃO voidm

11. Bibliografia

http://pt.wikipedia.org/wiki/Rel%C3%A9

http://www.trajanocamargo.com.br/arquivos/eletroeletronica/

apostila_Microcontroladores_PIC16F84_PIC16F6288.pdf

http://www.cp.utfpr.edu.br/chiesse/Sistemas_Digitais/PIC16f628a.pdf

http://pt.wikipedia.org/wiki/Resistores_pull-up

http://pt.wikipedia.org/wiki/Diodo_emissor_de_luz

http://www.arnerobotics.com.br/eletronica/Microcontrolador_PIC_teoria_2.htm

http://pt.wikipedia.org/wiki/Display_de_sete_segmentos

http://pt.wikipedia.org/wiki/Trans%C3%ADstor

http://en.wikipedia.org/wiki/Buzzer

http://pt.wikipedia.org/wiki/Jumper

http://pt.wikipedia.org/wiki/Capacitor

66