Vous êtes sur la page 1sur 41

Fundamentos e Programao Bsica de Microcontroladores PIC

MDULO 1

Prof. Msc. Tcio Luiz de Souza Barbeiro

Contedo

s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s

Motivao Fabricantes de Microcontroladores MICROCHIP Reviso Arquitetura de Microcontroladores Filosofia RISC Estruturao Interna Diagrama de Blocos do PIC16F877 Unidade Lgica Aritmtica (ULA) Ciclos de Mquina Memria de Programa Memria de Dados Mapa das Memrias Interrupo Interrupes no PIC O PIC16F877 Principais Caractersticas Eltricas Pinagem do PIC16F877 Descrio dos pinos Registradores Especiais (SFR) Portas Contadores Parmetros de Configurao Linguagens de Programao Ambiente de Desenvolvimento MPLAB Compiladores CCS C Criando um novo projeto Definindo a Linguagem de Programao Associando um arquivo fonte Compilando o projeto

Motivao
s

Desenvolvimento de Sistemas Eletrnicos Microprocessados Embbeded Systems; Mercado de microcontroladores em expanso Novos chips e famlias; Estima-se que, em poucos anos, em mdia uma pessoa interagir com 300 dispositivos microcontroladores diariamente; Aplicao em diversas reas: Automao, Controle e Instrumentao de Processos, etc.

Fabricantes de Microcontroladores
s s s s s s s s

INTEL (80C51) - www.intel.com/design/MCS51/ MOTOROLA (HC908) - www.mot-sps.com MICROCHIP (PIC) - www.microchip.com TEXAS INSTRUMENTS (MSPs) - www.ti.com MITSUBISHI - www.mitsubishichips.com ATMEL - www.atmel.com PHILIPS - www.philips.com NATIONAL - www.national.com

MICROCHIP
A Microchip uma empresa norte americana, fundada em 1989, com sede na cidade de Chandler, Arizona. Desenvolve, fabrica e comercializa microcontroladores (PIC), memrias seriais (I2C e SPI), produtos para segurana (Keeloq), identificadores por RF (RFID), conversores A/D, circuitos integrados de superviso (Bronw out) e amplificadores operacionais. Principais Endereos: Estados Unidos: Corporate Headquarters Microchip Technology Inc 2355 West Chandler Blvd. Chandler, Arizona, USA 85224-6199 T.: (480) 786-7200 (480) FAX: 899-9210
s

Brasil: A Microchip representada no Brasil pela empresa Artimar. Distribuidores autorizados: Aut-Comp, Future e Hitech.
s

Reviso
Um microcontolador um sistema computacional completo, no qual esto includos uma CPU (Central Processor Unit), memria, um sistema de clock, sinais de I/O (Input/Output), alm de outros possveis perifricos, tais como, mdulos de temporizao e conversores A/D entre outros, integrados em um mesmo componente (chip). As partes mais integrantes de qualquer computador, e que tambm esto presentes, em menor escala, nos microcontroladores so: s Unidade Central de Processamento (CPU); s Sistema de Clock para dar seqncia s atividades da CPU; s Memria para armazenamento de instrues e manipulao de dados; s Entradas para interiorizar na CPU informaes do mundo externo; s Sadas para exteriorizar as informaes processadas pela CPU para o mundo externo; s Programa (Software) para que o sistema faa alguma coisa til.

Arquiteturas de Microcontroladores
A arquitetura de um sistema digital define quem so e como as partes que compe o sistema esto interligadas. As duas arquiteturas mais comuns para sistemas computacionais digitais so as seguintes: Arquitetura de Von Neuman : A Unidade Central de Processamento interligada memria por um nico barramento (bus). O sistema composto por uma nica memria onde so armazenados dados e instrues;
s

Arquitetura de Harvard: A Unidade Central de Processamento interligada a memria de dados e a memria de programa por barramento especfico.
s

O PIC possui arquitetura Harvard. A memria de dados do tipo RAM (voltil) e , no caso do 16F877, a memria de programa do tipo Flash (letra F no cdigo). O barramento de dados de 8 bits e o de instrues composto de 16 bits. Este tipo de arquitetura permite que, enquanto uma instruo executada, outra seja buscada da memria, o que torna o processamento mais rpido.

FILOSOFIA RISC
Como o barramento de instrues maior do que 8 bits, o OPCODE da instruo j inclui o dado e o local onde ela vai operar (quando necessrio), o que significa que apenas uma posio de memria utiizada por instruo, economizando assim muita memria de programa. Dessa forma, podemos observar que dentro da palavra do OPCODE, que pode ser de 12, 14 ou 16 bits, no sobra muito espao para o cdigo da instruo propriamente dito. Por isso, os PICs utilizam uma tecnologia chamada RISC, que significa Reduced Instruction Set Computer (Computador com Set de Instrues Reduzido). PICs: s RISC s Cerca de 35 instrues s Aprendizado mais fcil e dinmico s Desvantagem com a ausncia de determinadas funes (Ex: Funes de multiplicao e diviso devem ser implementadas)

Estruturao Interna
s s s s s s s s s s s s s

ULA (Unidade Lgica Aritmtica); Registrador W (work = trabalho); Memria de Programa Bus de 14 bits; Memria de Dados RAM Bus de 8 bits; Portas: PORTA, B, C e D Pinos de I/O; EEPROM (Memria de Dados No voltil); Timers: TIMER0, TIMER1 e TIMER2 Comparador - Mdulo CCP (Capture, Compare e PWM); Porta Serial USART; Registrador STATUS; Contador de Linha de Programa PC (Program Counter); Pilha de 8 Nveis STACK; Circuitos Internos: Reset, Osciladores, Watchdog Timer (WDT), Power-up e Brown-out.

Diagrama de Blocos do PIC 16F877

Unidade Lgica Aritmtica (ULA)


s

Unidade Lgica Aritmtica (ULA): onde todas as operaes lgicas (funes lgicas booleanas: e ou, exclusivo e complemento) e aritmticas (soma e subtrao) so efetuadas. O registrador W sempre estar envolvido de alguma forma em toda operao lgica ou aritmtica. Existem dois destinos possveis para estas operaes: o W (work) ou um registrador (posio da memria de dados) definido no argumento da instruo. Timer: O PIC possu internamente um recurso de hardware denominado Timer0. Trata-se de um contador de 8bits incrementado internamente pelo ciclo de mquina ou por um sinal externo (borda de subida ou descida), sendo esta opo feita por software durante a programao (SFR). Como o contador possui 8 bits ele pode assumir 256 valores distintos (0 at 255). Caso o ciclo de mquina seja de 1us, cada incremento do Timer corresponder a um intervalo de 1us. Caso sejam necessrio intervalos de tempos maiores para o mesmo Ciclo de Mquina, utilizamos o recurso de PRE-SCALE.

Ciclos de Mquina
s

Nos microcontroladores PIC, o sinal de clock internamente dividido por quatro. Portanto, para um clock externo de 4MHz, temos um clock interno de 1 MHz e, conseqentemente, cada ciclo de mquina dura 1s; A diviso do clock por quatro forma as fases Q1, Q2, Q3 e Q4. O program Counter incrementado automaticamente na fase Q1 do ciclo de mquina e a instruo seguinte buscada da memria de programa e armazenada no registrador de instrues no ciclo Q4. Ela decoficada e executada no prximo ciclo, no intervalo de Q1 e Q4. Essa caracterstica de buscar a informao em um ciclo de mquina e execut-la no prximo chamada de PIPELINE. Ela permite que quase todas as instrues sejam executadas em apenas um ciclo, gastando assim 1 s (para um clock de 4 MHz) e tornando o sistema muito mais rpido. As nicas exees referem-se s instrues que geram saltos no program counter, como chamadas de rotinas e retornos.

Ciclos de Mquina

Toda instruo do PIC demanda um Ciclo de Mquina para ser executada, exceto aquelas que provocam desvio no programa (demandam dois Ciclos de Mquina).

Memria de Programa
s

A memria de programao onde as instrues do programa so armazenadas. No caso do 16F877 esta memria de 8192 palavras (words) (8Kb) de 14 bits cada uma. Parte destes 14 bits informam o OPCODE (cdigo da instruo) e o restante traz consigo o argumento da instruo correspondente. Na familia PIC existem trs tipos de memria de programa: EPROM (O.T.P. One Time Programable), EEPROM (janelado) e FLASH. Existem duas posies da memria do programa que recebem nomes especiais: vetor de reset e vetor de interrupo. O vetor de reset para onde o programa vai quando ele inicializado, enquanto que o vetor de interrupo a posio da memria de programa para onde o processamento desviado quando ocorre uma interrupo.

Memria de Programa
s

Vetor de Reset: Trata-se do primeiro endereo de programa que ser executado quando o PIC comear a funcionar (aps a alimentao ou um reset). Aponta para o endereo 0x00. Vetor de Interrupo: As rotinas de interrupes sero armazenadas na rea de programao, juntamente com todo resto do programa. No, entanto existe um endereo que reservado para o incio do tratamento de todas as interrupes. Vetor de Interrupo aponta para o endereo 0x04. Pilha (STACK): A pilha um local, totalmente separado da memria de programao, em que sero armazenados os endereos de retorno quando utilizarmos instrues de chamadas de rotinas.

Memria de Dados
s s

A memria de dados uma memria voltil do tipo RAM (Random Access Memory). O mapa de memria divido em duas partes: Registadores especiais (Special Function Register - SFR) e Registradores de uso geral (General Purpose Register GPR). Como o ponteiro da memria de programa tem capacidade de enderear somente 128 posies de memria de cada vez (7 bits), a memria de programa dividida em bancos (banco 0,1,2 e 3 no 16F877). Esta diviso implica em termos posies de memria que somente podero ser acessadas caso o banco a que ela pertena seja previamente selecionado atravs de um bit especfico do SFR STATUS.

Mapas das Memrias


Memria de Programa Memria de Dados

Interrupo
s

As Interrupes so causadas atravs de eventos assncronos (podem ocorrer a qualquer momento) que causam um desvio no processamento. Este desvio tem como destino o vetor de interrupo. Uma boa analogia para melhor entendermos o conceito de interrupo a seguinte: voc est trabalhando digitando uma carta no computador quando o seu ramal toca. Neste momento voc, interrompe o que est fazendo, para atender ao telefone e verificar o que a pessoa do outro lado da linha est precisando. Terminada a conversa, voc coloca o telefone no gancho novamente e retoma o seu trabalho do ponto onde havia parado. Observe que no precisamos verificar a todo instante, se existe ou no algum na linha, pois quando o ramal chamado, o telefone toca avisando que existe algum querendo falar com voc.

Interrupes no PIC
s s s s s s

Interrupes de TIMERS (3); Interrupo de fim de escrita na EEPROM; Interrupo de comparador; Interrupes de USART (2); Interrupo de CCP; Interrupo externa: Essa interrupo gerada por um sinal externo ligado a uma porta especfica que no caso a porta RB0. Ela utilizada para diversas finalidades, como, por exemplo o reconhecimento de um boto ou outro sinal do sistema que necessite de uma ao imediata. Funciona somente na borda de subida ou descida dependendo da configurao. Interrupo por mudana de estado: Ocorre tanto em borda de subida quanto em borda de descida. Ligada s portas RB4, RB5, RB6 e RB7 simultaneamente.

O PIC16F877
s s s s s s

s s s s s

Microcontrolador RISC de 40 pinos; Memria de Programa FLASH (8K de 14 bits); Memria de dados 368 bytes; Memria EEPROM 256 bytes; Freqncia de operao at 20MHz; 33 I/O (Entradas/Sadas) configurveis: PORT A: RA0 RA5 (6 PINOS) PORT B: RB0 RB7 (8 PINOS) PORT C: RC0 RC7 (8 PINOS) PORT D: RD0 RD7 (8 PINOS) PORT E: RE0 RE2 (3 PINOS); 14 Interrupes; 3 Timers; 2 Mdulos CCP (Capture/Compare/PWM); Comunicao Serial USART; 8 canais de entrada de conversores A/D de 10 bits.

Principais Caractersticas Eltricas


s s s s

Temperatura de trabalho: -40C at +125C; Temperatura de Armazenamento: -65C at 150C; Tenso de Trabalho: 3.0Va 5.5V; Voltagem Mxima nos demais pinos (em relao ao Vss): -0.3V at (VDD + 0.3V); Dissipao mxima de potncia: 1.0 W; Corrente mxima de sada no pino Vss: 350 mA; Corrente mxima de sada no pino VDD: 250 mA; Corrente mxima de entrada de um pino: 25 mA; Corrente mxima de sada de um pino: 25 mA.

s s s s s

Pinagem do PIC 16F877

Descrio dos Pinos


Nome PINO
OSC1/CLKIN OSC2/CLKOU T MCLR/VPP 1 RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/SS/AN4 RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

N PINO
13 14 1 2 3 4 5 6 7 33 34 35 36 37 38 39 40

TIPO
I O I/P I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O

Descrio
Entrada para ceristal externo (fonte de clock) Sada para cristal exetrno MAster Clear (reset) externo. Lgica baixa para reset I/O digital bidirecional ou entrada analgica 0 I/O digital bidirecional ou entrada analgica 1 I/O digital bidirecional ou entrada analgica 2 ou tenso de referncia analgica negativa I/O digital bidirecional ou entrada analgica 3 ou tenso de referncia analgica positiva I/O digital bidirecional ou entrada de clock para contador TMR0 I/O digital bidirecional ou entrada analgica 4 ou slave select para a porta de comunicao serial sncrona I/O digital bidirecional ou entrada para interrupo externa I/O digital bidirecional I/O digital bidirecional I/O digital bidirecional ou entrada para programao em baixa tenso I/O digital bidirecional I/O digital bidirecional I/O digital bidirecional ou clock da programao serial (ICSP) I/O digital bidirecional ou dados da programao serial (ICSP)

Descrio dos Pinos


Nome PINO
RC0/T1OSO/ T1CK1 RC1/T1OSI/ CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX//CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

N PINO
15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

TIPO
I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O

Descrio
I/O digital bidirecional ou sada para cristal esxterno para TMR1 ou entrada de clock para contador TMR1 I/O digital bidirecional ou entrada para cristal esxterno para TMR1 ou I/O para Capture, Compare, PWM 2 I/O digital bidirecional ou I/O para Capture, Compare, PWM 1 I/O digital bidirecional ou entrada de clock serial sncrono ou saida para os modos SPI e I2C I/O digital bidirecional ou entrada de dados SPI ou I/O de dados I2C I/O digital bidirecional ou sada de dados SPI I/O digital bidirecional ou Transmisso para comunicao USART assncrona ou via de clock para para comunicao USART sncrona I/O digital bidirecional ou Recepo para comunicao USART assncrona ou via de dados para para comunicao USART sncrona I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava I/O digital bidirecional ou Porta paralela escrava

Descrio dos Pinos


Nome PINO
RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 VSS VDD

N PINO
8 9 10 12,31 11,32

TIPO
I/O I/O I/O P P

Descrio
I/O digital bidirecional ou Controle de Leitura para a Porta paralela escrava ou entrada analgica 5 I/O digital bidirecional ou Controle de Escrita para a Porta paralela escrava ou entrada analgica 6 I/O digital bidirecional ou Select Control para a Porta paralela escrava ou entrada analgica 7 Referncia TERRA Alimentao Positiva (+5V)

LEGENDA:

I = Input (Entrada)

O = Output (Sada)

I/O = Input/Output (Entrada/Sada)

P = Power (Alimentao)

Registradores Especiais (SFR)


s

s s s s

Status: As funes mais utilizadas desse registrador esto relacionadas s operaes matemticas, pois ele indica estouros de registradores (C-Carry) e resultados iguais a zero (Z). bom observar que, no caso da subtrao, o Carry trabalha com lgica invertida. PCON: A principal funo deste registrador diz respeito escolha da frequncia do oscilador interno (OSCF): 37KHz ou 4MHZ. OPTION INTCON, PIR1 e PIE1 PCL PCLATH

Portas
s

TRIS: Esses registradores servem para configurar os pinos das portas como entrada ou sada. Quando colocado 1 em um bit do TRIS, o pino relacionado a ele configurado como entrada. Para configurar o pino como sada, voc deve escrever 0 no bit relacionado. Uma maneira prtica para memorizar essa regra associar 1 ao I de Input (entrada) e o 0 ao O de Output (sada). Para configurar o PORTA, deve ser utilizado o registrador TRISA, o PORTB o TRISB, etc. PORTS: PORTA, PORTB, PORTC, PORTD e PORTE Quando um pino dessas portas configurado como entrada, ao lermos o seu bit relacionado, encontramos diretamente o nvel lgico aplicado a esse pino. Da mesma maneira, ao configurarmos um pino como sada, podemos alterar o seu estado, escrevendo diretamente no bit relacionado.

Contadores
s

Timer: O PIC possu internamente um recurso de hardware denominado Timer0. Trata-se de um contador de 8bits incrementado internamente pelo ciclo de mquina ou por um sinal externo (borda de subida ou descida), sendo esta opo feita por software durante a programao (SFR). Como o contador possui 8 bits ele pode assumir 256 valores distintos (0 at 255). Caso o ciclo de mquina seja de 1us, cada incremento do Timer corresponder a um intervalo de 1us. Caso sejam necessrio intervalos de tempos maiores para o mesmo Ciclo de Mquina, utilizamos o recurso de PRE-SCALE. PRE-SCALE: O Pre Scale um divisor de frequncia programvel do sinal que incrementa o Timer0. Quando temos um pre scale de 1:1, cada ciclo de mquina corresponde a um incremento do Timer0 (unidade de Timer0). Ao alterarmos o pre scale para, por exemplo 1:4 (os valores possveis so as potencias de dois at 256), o Timer0 ser incrementado uma vez a cada quatro ciclos de mquina.

Parmetros de Configurao
s

Tipo de Oscilador: 2 grupos: Internos e Externos Oscilador Interno: 32 KHz ou 4 MHz (Seleo por software) Osciladores Externos: - RC_CLKOUT: Para oscilador externo tipo RC com o pino 15 operando como CLKOUT, isto , com uma onda quadrada de da freqncia; - RC_I/O: Para oscilador externo tipo RC com o pino 15 operando como I/O (RA6); - INTOSC_CLKOUT: Para oscilador interno com o pino 15 operando como I/O (RA6); - EC_I/O: Para clock externo (circuito auto-oscilante) com o pino 15 operando como I/O (RA6); - XT: Para osciladores externos tipo cristal ou ressoadores; - HS: Para cristais ou ressoadores externos com frequencias elevadas (acima de 4 MHz); - LP: Para cristais ou ressoadores externos com baixas freqncias (abaixo de 200 KHz). Utilizado para minimizar consumo.

Parmetros de Configurao
s

WATCHDOG (WDT) um recurso disponvel no PIC que parte do princpio que todo sistema passvel de falha. Se todo sistema pode falhar, cabe ao mesmo ter recursos para que, em ocorrendo uma falha, algo seja feito de modo a tornar o sistema novamente operacional. Dentro do PIC existe um contador incrementado por um sinal de relgio (clock) independente. Toda vez que este contador extrapola o seu valor mximo retornando a zero, provocado a reinicializao do sistema (reset). Clear Watchdog: Se o sistema estiver funcionado da maneira correta, de tempos em tempos uma instruo denominada clear watchdog timer (CLRWDT) zera o valor deste contador, impedindo que o mesmo chegue ao valor mximo. Desta maneira o Watchdog somente ir "estourar" quando algo de errado ocorrer.

Parmetros de Configurao
s

POWER UP TIMER: um temporizador que faz com que o PIC, durante a energizao (power up), aguarde alguns ciclos de mquina (72 ms) para garantir que todo o sistema perifrico (display, teclado, memrias, etc) estejam operantes quando o processamento estiver sendo executado. BROWN OUT DETECT: O Brown Out monitora a diferena de tenso entre VDD e VSS, provocando a reinicializao do PIC (reset) quando esta cai para um valor inferior ao mnimo definido em manual (4V tipco por mais de 100s). LOW VOLTAGE PROGRAM: Trata-se do sistema de programao do PIC (gravao da memria de programa) em baixa tenso: 5V. Normalmente essa programao habilitada por uma alta (13 V) no pino MCLR. CDIGO DE PROTEO: Para gravao em srie muito importante que esta opo esteja ativada, pois impedir que qualquer pessoa consiga ler o programa gravado dentro do PIC.

Configurao no Programa
s

DIRETRIZ: _CONFIG

_CP_ON: Para code protection ligado


_CP_OFF: Para code protection desligado _DATA_CP_ON: Para acesso externo EEPROM habilitado _DATA_CP_OFF: Para acesso exerton EEPROM desbilitado _PWRTE_ON: Power Up ligado _PWRTE_OFF: Power Up desligado _WDT_ON: Para WatchDog ligado _WDT_OFF: Para WatchDog desligado _LVP_ON: Para sistema de programao em baixa tenso ativado _LVP_OFF: Para sistema de programao em baixa tenso desativado _MCLRE_ON: Para Master Clear externo ativado _MCLRE_OFF: Para Master Clear externo desativado _RC_OSC_CKOUT: Para RC externo com sada CKOUT _RC_OSC_NOCKOUT: Para RC externo sem sda CKOU (com I/O) _EXTCLK_OSC: Para clock externo sem sada CKOUT (com I/O) _LP_OSC: Para oscilador tipo LP _XT_OSC: Para oscilador tipo XT _HS_OSC: Para oscilador tipo HS Exemplo: _CONFIG _CP_ON&_PWRTE_ON&WDT_OFF&_INTOSC_OSC_NOCKOUT

Linguagens de Programao
s

Assembly (Baixo Nvel): - Maior Eficincia; - Maior Velocidade de Execuo; - Alta Complexidade; - Baixa Portabilidade. Linguagem C (Alto Nvel): - Programao Estruturada (funes); - Maior velocidade na criao de novos projetos; - Maior Portabilidade; - Eficincia Considervel.

Ambiente de Desenvolvimento MPLAB

s s s s s s s s

Software Gratuito www.microchip.com; Verso Atual: 7.00; Linguagem de programao: Assembly; Gerenciamento de projetos; Compilao; Simulao; Emulao; Gravao do chip;

Compiladores CCS C
s s

PCB: para dispositivos 12 bits (sries PIC12 e PIC16C5X); PCM: para dispositivos de 14 bits (sries PIC14000 e PIC16xXXX); PCH: para dispositivos de 16 bits (srie PIC18).

Caractersticas: - Compatibilidade com a padronizao ANSI e ISSO; - Grande eficincia no cdigo gerado; - Grande diversidade de funes e bibliotecas da linguagem C (padro ANSI), tais como: entrada/sada serial, funes matemticas, etc,; - Grande portabilidadade de cdigo; - Integrao com o MPLAB.

Criando um novo projeto

Definindo a linguagem de programao

Linguagem Assembly

Definindo a linguagem de programao

Linguagem C

Associando um arquivo fonte

Compilando o projeto

Bibliografia
s

Desbravando o PIC Ampliado e atualizado para PIC16F628A Autor: David Jos de Souza Editora: rica Microcontroladores PIC Programao em C Autor: Fbio Pereira Editora: rica

Vous aimerez peut-être aussi