Você está na página 1de 21

Escola Politcnica

Universidade de So Paulo

PCS2031 Laboratrio de
Microprocessadores

Experincia
Microcontroladores PIC

_Engenharia de Computao Cooperativo 2005


Autores
:: Etienne Amrico Cartolano Jnior
:: Priscila Barreira Avegliano

So Paulo, 10 Setembro de 2004.

Experincia Microcontroladores PIC

Escola Politcnica USP

1. Objetivos
Esta experincia tem a finalidade de aproximar o aluno, ao universo
dos microcontroladores, utilizando como exemplo a famlia PIC da
Microchip. Iremos implementar nesta experincia, um programa para gerar
uma onda quadrada em um pino de sada do PIC.
2. Introduo famlia de microcontroladores PIC
Tipicamente um microcontrolador se caracteriza por incorporar no
mesmo encapsulamento um microprocessador, memria de programa e
dados e vrios perifricos como temporizadores, watchdog timers,
comunicao serial, conversores Analgico/Digital, geradores de PWM, etc,
fazendo com que o hardware final fique extremamente complexo.
A Microchip uma empresa precursora no uso de tecnologia RISC
(Reduced Instruction Set Computer) em microcontroladores. Diferente da
arquitetura Von Neumann, a estrutura RISC baseada em barramentos
independentes para dados e para programa, e tem como caracterstica
fundamental os tamanhos diferenciados (por ex: no PIC16C55X o
barramento de dados de 8 bits, enquanto o de programa de 14 bits) o
que significa que uma instruo est empacotada em uma nica palavra
de programa (no caso do PIC16C55X de 14 bits), que alm de conter o
opcode (instruo) contm os operandos (dados para execuo da
instruo).

Preo
LINHA BASE
Palavras de Instruo
12 bits

PIC 16C5X
TMR0

INTERMEDIRIO
Palavras de Instruo
14 bits

PIC 16CXXX
TMR0/1/2, EEPROM,
Interface Serial, A/D
LCD

TOPO DE LINHA
Palavras de Instruo
16 bits

PIC 17CXXX
TMR0/1/2, Captura,
Interface Serial, A/D
PWM

PIC 12CXX
TMR0, Oscilador Int.

Desempenho Relativo
Figura 1 Evoluo dos Microcontroladores PIC

_2

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

A Microchip oferece 4 (quatro) famlias de microcontroladores de 8 bits


no barramento de dados que se adaptam aos mais variados projetos. Estas
famlias so:

PIC12CXXX: Linha Compacta.

PIC16C5X/PIC16C55X: Linha Base.

PIC16CXX: Linha Intermediria.

PIC17CXX: Topo de Linha.

Todas as famlias oferecem diversas opes de memria de programa:


OTP (One Time Programable) e EPROM (Erasable and Programmable Read
Only Memory utilizada para desenvolvimento). Alm disso, oferecem
opes de baixa tenso e diversos tipos de circuito osciladores, assim como
vrias opes de baixa tenso e diversos tipos de circuito osciladores, assim
como vrias opes de encapsulamento. Alguns componentes esto
disponveis em ROM (mascarados) e EEPROM/FLASH (reprogramveis).
3. Arquitetura do microcontrolador
O alto desempenho da famlia de microcontroladores PIC pode ser
atribudo as seguintes caractersticas de arquitetura RISC:

Mapa de Registradores verstil

Todas as instrues com palavras simples

Palavra de instruo Longa

Arquitetura de instrues em Pipeline

Instrues de apenas um ciclo de mquina

Conjunto de instrues reduzido

Conjunto de instrues ortogonal (simtrico)

PCS2031 Laboratrio de Microprocessadores

_3

Experincia Microcontroladores PIC

Escola Politcnica USP

A arquitetura von-Neumman tradicional utiliza o mesmo barramento


para fazer a busca a instrues na memria de programa e para acessar
(escrever ou ler) a memria de dados.

CPU
8

Memria
Programa
& Dados

Figura 2 - Arquitetura Von-Neumman

A arquitetura do microcontrolador utiliza dois


endereos distintos para acessar instrues e dados.

Memria
Dados

CPU
8

barramentos

12
14
16

de

Memria
Programa

Figura 3 Arquitetura do microcontrolador PIC

4. Formato das instrues no microcontrolador PIC


A entrada de clock (pino OSC1/CLKIN) internamente dividida por
quatro para gerar quatro clocks em quadratura sem sobreposio,
nomeados Q1, Q2, Q3, e Q4. Internamente, o Contador de Programa (PC)
incrementado em Q1 e a instruo retirada da memria de programa e
colocada no registrador de instrues em Q4. Ela decodificada e
executada no ciclo seguinte de Q1 at Q4.

Figura 4 Ciclo de instrues do microcontrolador

_4

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

Um ciclo de instrues consiste de quatro ciclos Q (Q1, Q2, Q3, Q4). A


busca e execuo da instruo so feitas em linha, de tal forma que a busca
leva um ciclo de instruo e a execuo leva outro ciclo. Contudo, devido a
caracterstica de pipeline, cada instruo executada efetivamente em um
ciclo, pois simultaneamente ocorrem a execuo de uma instruo e a
busca a instruo seguinte. Se uma instruo causa a alterao do Contador
de programa ento dois ciclos so necessrios para completar a instruo.

Figura 5 Pipeline no microcontrolador PIC

A arquitetura em pipeline sobrepe busca e execuo, tornando a


execuo de instrues possvel de se realizar em um nico ciclo de
mquina. Qualquer instruo de desvio (tais como GOTO, CALL, ou escrever
no PC) leva dois ciclos de mquina.
A arquitetura com barramentos separados para instrues e dados
permitem larguras diferentes, com isso o barramento de instrues
otimizado para uma palavra de comprimento nica. O nmero de bits do
barramento de instrues depende de quantas instrues so
implementadas e do nmero de registradores disponveis em cada famlia
de microcontroladores.

PCS2031 Laboratrio de Microprocessadores

_5

Experincia Microcontroladores PIC

Escola Politcnica USP

5. Mapa de registradores
Todas as instrues aritimticas e booleanas so feitas atravs do
registrador de trabalho W. O destino da operao pode ser o prprio
registrador W ou um dos registradores disponveis no microcontrolador,
dependendo unicamente da instruo executada.

ULA

INDFTMR0PCLSTATU
SFSRPORTAOutros
SFRsRegistradores
de uso geral
(RAM)

Figura 6 Mapa de registradores

6. Interrupes

Mltiplas fontes de interrupes interna/externa

Prioridade de interrupo setada por software

Habilitao global e individual das interrupes

Diversas interrupes despertam o processador do estado de


dormncia (SLEEP)

Tempo de latncia da interrupo fixada em 3 ciclos de instruo

7. Famlia 16F84A
Alm das caractersticas gerais da arquitetura dos microcontroladores
PIC vistas at agora, existem outros aspectos peculiares aos membros de
cada famlia. Como a diversidade de componentes muito grande, vamos
analisar as caractersticas dos componentes da famlia 16F84A.

_6

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

7.1.

Experincia Microcontroladores PIC

Arquitetura de Hardware da famlia PIC16F84A

Na figura abaixo apresentada de forma simplificada a arquitetura


interna da famlia PICF84. Ela baseada em registradores, com o
barramento de memria de dados separado do barramento de memria de
programa (arquitetura RISC). Este conceito permite ter um conjunto de
instrues simples, mas extremamente poderoso que enfatiza as operaes
bit, byte e de registradores.

Figura 7 Arquitetura de Hardware da famlia PIC18F8X

PCS2031 Laboratrio de Microprocessadores

_7

Experincia Microcontroladores PIC

7.2.

Escola Politcnica USP

Principais membros da famlia

Device

PIC16F83
PIC16F84
PIC16CR83
PIC16CR84

Program
Memory
(words)

Data
RAM
(bytes)

Data
EEPROM
(bytes)

Max.
Freq.
(MHz)

512 Flash
1K Flash
512 ROM
1K ROM

36
68
36
68

64
64
64
64

10
10
10
10

Diversas freqncias de operao e empacotamento esto disponveis.


Dependendo da aplicao e dos requisitos de produo existe uma opo de
dispositivo mais apropriado para ser selecionado. Para maiores detalhes
consulte o datasheet do componente que voc utilizar.
7.3.

Apenas 35 palavras de instruo para aprender

Todas instrues com um ciclo exceto para desvios que levam dois
ciclos

Velocidade de operao: DC at 20 Mhz de clock

Instrues com 14 bits de largura

Barramento de dados de 8 bits

16 registradores de funes especiais de hardware

Pilha com 8 nveis de profundidade

Modos de endereamento direto, indireto e relativo para dados e


instrues.

Capacidade de interrupo

7.4.

_8

Caractersticas Gerais

Caractersticas dos perifricos

13 pinos de I/O individualmente configurados

Temporizador/Contador de 8 bits com 8 bits de pr-escala

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

Power-On Reset (POR)

Temporizador Watch-Dog (WDT) com oscilador prprio para


operaes seguras

Proteo de Cdigo Programvel

Modo SLEEP para diminuio de consumo de energia.

Opes de oscilador selecionvel:


o

RC oscilador RC de baixo custo

XT cristal padro

HS Cristal de alta velocidade

LP Cristal de baixa freqncia (reduo de consumo)

Programao Serial in-circuit (atravs de dois pinos)

4 bytes de identificao (ID) programveis pelo usurio

7.5.

Organizao da Memria de Programa

A famlia PIC16F84A tem um contador de programa (PC) de 13 bits


capaz de enderear at 8K x 14 bits de memria de programas. O vetor de
RESET est localizado no endereo 0000h e o vetor de interrupo no
endereo 0004h. Outra caracterstica importante a ser salientada a
impossibilidade de se ler diretamente da memria de programa. A maneira
com que isso feito na arquitetura do PIC utilizando a instruo RETLW
k, que ser visto mais adiante na apresentao do conjunto de instrues.
7.6.

Organizao da Memria de Dados

A memria de dados composta de registradores e RAM para uso


geral. Os registradores so divididos em 2 grupos funcionais: Registradores
de Funes Especiais (32 endereos iniciais de cada banco) e Registradores
de Uso Geral (endereos restantes de cada banco). Entre os registradores
de funes especiais esto: o registrador TMR0, o contador de programa
(PC), o registrador de Status (STATUS), os registradores I/O (ports) e o
registrador de seleo (FSR). Alm disso, os registradores de funes
especiais so usados para controlar a configurao dos ports de I/O e as
opes de pr-escala. Os registradores de uso geral so usados para dados
e controle de informao sob comando das instrues.

PCS2031 Laboratrio de Microprocessadores

_9

Experincia Microcontroladores PIC

7.7.

Escola Politcnica USP

Registradores de Funes Especiais

Figura 8 Mapa de registradores especiais

7.7.1. INDF : Registrador de Endereamento Indireto (Indirect


Data Addressing Register)
O registrador INDF no um registrador fisicamente alocado e
utilizado em conjunto com o registrador FSR para realizar endereamento
indireto. Qualquer instruo usando o registrador INDF acessa um dado cujo
endereo est contido no registrador FSR.

_10

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

7.7.2. TMR0: Relgio de Tempo Real (Real Time Clock/Counter)


O contedo desse registrador sucessivamente incrementado
utilizando um clock, que tanto pode ser interno (derivado do sistema de
clock de microcontrolador) quanto externo (aplicado ao pino RA4/T0CKI).
Pode-se utilizar uma pr-diviso interna que permite ampliar (multiplicar) a
contagem.
7.7.3. PC(PCL e PCLATH): Contador de Programa (Program
Counter)
O registrador PC responsvel pela gerao do endereo de busca
instrues na memria de programa. Normalmente incrementado de uma
unidade aps a execuo de uma instruo, com exceo das instrues
que utilizavam desvios como GOTO e CALL. Como o PC tem 13 bits de
largura, o byte menos significativo vem do registrador PCL, que um
registrador de escrita e leitura e os 5 bits mais significativos esto
armazenados no registrador PCLATH.

Figura 9 Contador de programa

O PC tem todos os bits resetados durante o Reset. Durante a


execuo do programa ele auto-incrementado juntamente com a
execuo da instruo, a menos que o resultado da instruo o altere. Uma
rotina em software com GOTO computado acompanhada da adio de um
deslocamento (offset) ao contador de programas (ADDWF PCL).

PCS2031 Laboratrio de Microprocessadores

_11

Experincia Microcontroladores PIC

Escola Politcnica USP

7.7.4. STACK: Pilha (Stack)


A famlia PIC 16F84A implementa uma estrutura de pilha de oito nveis
de profundidade por 13 bits da lergura. A rea de pilha no faz parte da
memria de programa, nem da memria de dados e tambm no pode ser
lida ou escrita. O empilhamento feito quando chamada uma subrotina
utilizando a instruo CALL. O desempilhamento feito utilizando-se a
instruo RETLW. Dados no podem ser empilhados, prtica muito tuilizada
em outras famlias de microcontroladores que no possuem arquitetura
RISC.
7.7.5. STATUS
o registrador que possui os flags que indicam resultados de
operaes da unidade lgica e aritmtica (ULA), a condio de RESET e o bit
de pr-seleo do banco de memria de dados. Os bits C, D e Z (bits 0, 1 e
2) indicam o estado de uma operao aritmtica na ULA. Os bits PD# (bit 3)
e TO# (bit 4) indicam o estado de Reset. Os bits TO# e PD# so somente
para leitura, no so possveis de serem alterados por software. Quando na
apresentao do sistema de Reset e do Conjunto de Instrues iremos
detalhar mais esse registrador.
7.7.6. OPTION
O registrador OPTION tem 6 bits de largura e contm vrios bits de
controle para configurar a pr-escala que ser utilizada pelo TMR0 ou WDT.
Nele tambm definido o valor da pr-escala e o tipo de contagem. Aps
um Reset, todos os bits so configurados com 1.
7.7.7. Registrador de Trabalho
o registrador mais utilizado, pois toda a transferncia de dados
feita atravs dele. Alm disso, todas as operaes aritmticas e booleanas o
utilizam como sendo um dos operandos. Ele parecido com o acumulador
de outras famlias de microcontroladores. Este registrador no
enderevel.
7.7.8. Registrador de Seleo (File Select Register)
Na famlia PIC 16F84X os Bits 0 a 6 selecionam um dos 128
registradores de uso geral disponveis no modo de endereamento indireto.
O mapa de registradores de uso geral pode ser acessado tanto diretamente

_12

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

quanto indiretamente atravs do registrador de seleo (FSR). Uma


instruo utilizando o registrador INDF vai operar com o endereo que est
contido no registrador de seleo (FSR). Isto um endereamento indireto.
Por exemplo:

Registrador 05 contm o valor 10h

Registrador 06 contm o valor 0Ah

Carregue o valor 05 no registrador FSR

Uma leitura ao registrador INDF retornar o valor 10h

Incrementa o valor do registrador FSR de um (FSR = 06)

Uma leitura ao registrador INDF retornar o valor 0Ah

7.7.9. Registradores de I/O


Os Registradores de I/O podem ser escritos ou lidos sobre o controle
do programa como qualquer outro registrador. Na condio Reset todos os
I/Os so definidos como entrada, assim como todos os registradores de
controle de I/O (TRISA e TRIS) so configurados com 1.
7.7.10. PORTA
Esse registrador tem correspondncia direta com os pinos RA4:RA0 do
microcontrolador. Ele possui somente 5 bits (RA0 a RA4); os demais 3 bits
no so implementados e so lidos como zero. Cada bit desse PORT pode
ser individualmente configurado como entrada ou sada. O pino RA4/T0CK1
uma entrada Schimitt Trigger e uma sada com dreno aberto. O port RA4
multiplexado com a entrada de clock T0Ck1. Todos os outros pinos de
PORTA tem nveis de entrada Schimmit Trigger e drivers de sada CMOS
completos.
7.7.11. 16.9.2. PORTB
Esse registrador tem correspondncia direta com os pinos RB7:RB0 do
microcontrolador. Ele tem 8 bits de largura e bidirecional. Cada bit desse
PORT pode ser individualmente configurado como entrada ou sada. Cada
pino PORTB tem um pull-up interno.

PCS2031 Laboratrio de Microprocessadores

_13

Experincia Microcontroladores PIC

Escola Politcnica USP

Um bit de controle RBPU# (OPTION <7>) pode ligar os pull-ups. O


pull-up automaticamente desligado quando os pinos so configurados
como sadas. Os pull-ups tambm so desabilitados no Power-on Reset.
Quatro pinos do PORTB, RB7:RB4 tem uma caracterstica de interrupo na
mudana de estado. Apenas os pinos configurados com entrada podem
causar esta interrupa. Os pinos de entrada (RB7:RB4) so comparados
com o valor antigo armazenado no latch, na ltima leitura do PORTB.
7.7.12. TRISA e TRISB
So os registradores referentes configurao dos pinos de I/O da
PORTA e PORTB. Escrever 1s nos registradores TRISA e TRISB fazem dos
bits entradas, colocando o driver de sada em alta impedncia. Escrever 0s
nesses registradores fazem dos bits sadas, colocando o contedo da sada
nos latches dos PORTs correspondentes. Aps um Reset, todos os
registradores so configurados com 1s, ou seja, todos os pinos de I/O
configurados como entrada.
7.8.

Interface de I/O

Todos os pinos de I/Os podem ser usados tanto como entrada quanto
sada. A sua direo definida pelos registradores de direo TRISA e
TRISB. Cada bit desses registradores corresponde a um pino de I/O que,
quando setado, corresponde entrada e, quando resetado, corresponde
sada. Por exemplo, se quisermos setar o PORTB com o nibble menos
significativo como entrada e o mais significativo como sada, ento o valor a
ser escrito em TRISB ser 00001111 em binrio, ou 0F em hexadecimal.
Nota-se que o dado de sada se mantm armazenado em um flip-flop
independente do pino de I/O estar configurado como entrada ou sada. Esse
dado se mantm nessa condio at que um novo dado seja escrito. Para o
processo de leitura, o dado tem que estar estabilizado e o pino configurado
para entrada pois ela no armazenada em flip-flops.
Devido a essas caractersticas, o programador deve ter alguns
cuidados quando usar instrues do tipo read and write modified como
BSF ou BCF, que lem o PORT de I/O, executam a aoperao no bit e
escrevem o resultado no PORT de I/O. Por exemplo, uma instruo BSF no
pino 5 do PORTB ir provocar a leitura dos 8 pinos de I/O do PORTB. Ento,
a CPU ir executar a operao de setar o bit 5 e o resultado ser escrito no
PORTB. Se outro pino de I/O for usado como bidirecional, e nesse instante
estiver configurado para entrada o sinal presente ser lido e reescrito sobre
o dado que estivesse previamente escrito no latch de sada do pino de I/
Se o pino estiver configurado como entrada no haver nenhum problema,
mas se ele estiver configurado para sada, o dado no latch de sada pode ser
desconhecido. O que o programador deve ter em mente nunca provocar
um curto-circuito nos pinos de I/O . Por exemplo, se no pino de I/O
estiver conectado a GND e no latch de sada estiver setado para 1, com o

_14

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

pino e I/O configuradao para sada, uma alta corrente ir circular, o que
danificar o componente.
7.9.

Temporizador

O mdulo temporizador/contador (TMR0) tem as seguintes


caractersticas:

Temporizador/contador de 8 bits

Pode-se utiliz-lo para leitura e escrita

Pr-escala de 8 bits programvel por software

Seleo de clock interno ou externo

Seleo do tipo de borda para clock externo

Interrupo no estouro de FFH para 00H

O modo temporizador selecionado fazendo o bit T0CS = 0 (Timer 0


Chip Select OPTION <5>). No modo temporizador, o registrador TMR0
ser incrementado a cada ciclo de mquina (sem pr-escala). Se ocorrer
uma escrita em TMR0, o incremento ser inibido pelos dois ciclos de
mquina seguintes. O modo contador selecionado fazendo o bit T0CS = 1.
Nesse modo, TMR0 ser incrementado a cada borda de subida ou descida
do pino RA4/T0CK1. A borda responsvel pelo incremento determinada
pelo bit T0SE (Timer 0 Select Edge OPTION <4>). O bit T0SE = 0
seleciona borda de subida e T0SE seleciona borda de descida.
A pr-escala compartilhada entre o mdulo TMR0 e o Watch-Dog
Time (WDT). A pr-escala controlada no software pelo bit de controle PSA
(PreScaler Assignmet OPTION <3>). Quando o bit PSA= 1, a pr-escala
fica sob controle do TMR0 e a pr-escala do WDT selecionada para 1:1. A
pr-escala setada por software atravs dos bits PS2:PS0 (OPTION <2:0>)
com valores de seleo que variam de 1:2, 1:4, ..., 1:256. O uso da prescala pode ser para o WDT ou para o TMR0, mas nunca simultneo. Nada
impede que na primeira fase do programa se utiliza a pr-escala para o
WDT e na segunda fase para o TMR0. O WDT tem oscilador prprio capaz
de gerar um tempo 18ms de perodo sem a pr-escala. Com pr-escala de
1:128 o tempo sobe para 2,5 segundos. A interrupo do Timer 0 gerada
quando o contedo do registrador TMR0 passar de FFH para 00H. Esse
estouro faz T0IF =1. A interrupo pode ser mascarada fazendo T0IE = 0
(Timer 0 Interrupt Enable INTCO<5>). O bit T0IF deve ser resetado por
software na rotina de servio da interrupo antes de reabilitar a
interrupo. A interrupo do Timer 0 no pode acordar o processador do
mod SLEEP porque o timer desligado antes de entrar no estado de
dormncia.

PCS2031 Laboratrio de Microprocessadores

_15

Experincia Microcontroladores PIC

Escola Politcnica USP

7.10. Interrupes
As interrupes disponveis nas famlias PIC 16/17 variam de
componente para componente, dependendo das caractersticas de hardware
implementadas. As famlias PIC 16/17 possuem 3 fontes de interrupo
implementadas. So elas:

Interrupo Externa RB0/INT

Interrupo Temporizador TMR0 (estouro na contagem)

Interrupo por mudana no PortB(pinos RB7:RB4)

O registrador de controle de interrupo (INTCON) armazena os


pedidos individuais de interrupo em seus bits. Ele tambm contm bits de
habilitao individual e global de interrupes. O bit de hebilitao global de
interrupes, GIE (INTCON <7>) habilita (se setado) todas as interrupes
no mascaradas ou desabilita (se resetado) todas as interrupes. As
interrupes individuais podem ser desabilitadas atravs do seu
correspondente bit de habilitao no registrado INTCON. O bit GIE
resetado durante o Reset.
A instruo Retorno da Interrupo, RETFIE, sai da rotina para
desabilitar futuras interrupes, o endereo de retorno colocado na pilha e
o registrador PC carregado com 0004H. Uma vez na rotina de servio da
interrupo a(s) fonte(s) de interrupo podem ser determinadas pelo teste
das flags correspondente no registrador INTCON. O bit da interrupo
atendida deve ser resetado no software antes de reabilitar as interrupes
para evitar interrupes recursivas.

_16

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

7.11. Conjuntos de Instrues de Software

Figura 10 Instrues do microcontrolador PIC16F8X

PCS2031 Laboratrio de Microprocessadores

_17

Experincia Microcontroladores PIC

Escola Politcnica USP

8. Parte Experimental

8.1.

Introduo

A Microchip disponibiliza ferramentas para desenvolvimento de


aplicaes para seus microcontroladores PIC. Dentre estas ferramentas
podemos citar o MPLAB e o PICStart. O MPLAB um IDE que fornece uma
integrao entre editor de texto, compiladores e microcontroladores.
Podemos tambm, utilizar outras ferramentas de desenvolvimento, na
Internet encontramos diversas delas. Vamos utilizar nesta experincia a
ferramenta P16Pro Programmer for MicroChip microcontrollers, ela
disponibiliza alm do software, um gravador de microcontroladores PIC
(anexo 01). Atravs do software P16pro e do circuito de gravao, pode-se
carregar um programa escrito em hexadecimal no microcontrolador.
Diversos parmetros podem ser configurados no software para programar
diferentes verses de microcontroladores PIC. Utilize o manual da
ferramenta para maiores detalhes da utilizao do software P16pro.
8.2.

Gerar uma onda Quadrada em uma porta do PIC

Vamos programar o PICF84A para gerar uma onda quadrada. Abra um


editor de texto e escreva o cdigo abaixo, no esquea de respeitar as
tabulaes antes de cada comando e seus operandos.

#include
"p16f84.inc"
LIST P=16F84
count equ 0x0C
;inicializacao
;programa principal
INI BSF 03h,5;
MOVLW 00;
MOVWF 06;
BCF 03h,5;
LOOP BSF 06,0
CALL DELAY
BCF 06,0
CALL DELAY
GOTO LOOP

_18

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

DELAY
MOVLW 9fh
MOVWF 1A
;MOVWF 1B
DELAYAUX
;DECFSZ 1B
;GOTO DELAYAUX
DECFSZ 1A
GOTO DELAYAUX
RETLW 00
END
Em seguida, transcreva o cdigo para hexadecimal, para isso, submeta
o arquivo .ASM que voc acabou de criar para o programa MPASM302.exe.
Agora vamos gravar o cdigo hexadecimal no PIC:
a. Conecte o gravador de microcontroladores na porta paralela do PC.
b. Posicione o PIC no gravador, verificar posio do chanfro.
c. Ligue a fonte do gravador.
d. Abra o programa P16pro.
e. Selecione o PIC16F84A: Device (F3).
f. Carregue o programa gravado na memria do microcontrolador: Read
(F6).
g. Apague o contedo da memria: Erase (F9).
h. Verifique se a memria est vazia: Blank Check (F7).
i.

Abra o programa escrito em hexadecimal: OpenProg (F1).

j. Selecione o oscilador XT: Fuses (F2).


k. Grave o programa escrito em hexadecimal no microcontrolador:
Program (F4).
l.

Verifique a gravao e a opo do oscilador: Read (F6).

m. Desligue a fonte do gravador.


n. Retire o PIC do gravador, tome cuidado com os pinos.

PCS2031 Laboratrio de Microprocessadores

_19

Experincia Microcontroladores PIC

Escola Politcnica USP

Para verificar o funcionamento do programa, vamos implementar um


circuito de teste (figura 11). Este circuito deve ligar a porta RB0 do
microcontrolador a um led. Deve-se tambm ligar um oscilador ao PIC, ele
ser base dos seus ciclos de instruo (ver manual). O oscilador ser um
cristal, com freqncia e configurao de montagem especificada no manual
do PICF84A [2].
VDD

C1

MCLRT
OSC1/IN

PICF84A

XTAL

C1

OSC1/OUT

R1
RB0

VSS

LED

Figura 11 Circuito de teste

Configuraes do Circuito [2]


C1
XTAL
R1

_20

15 - 33 pF
4 - 10 MHz
1K

PCS2031 Laboratrio de Microprocessadores

Escola Politcnica USP

Experincia Microcontroladores PIC

9. Bibliografia

[1] Microchip PIC16F8X Datasheet www.microchip.com

[2] Projetos de Hardware e Software utilizando


Microcontroladores PIC Edmur Canazian - 1999

[3] P16Pro Programmer for MicroChip microcontrollers Short


Manual

PCS2031 Laboratrio de Microprocessadores

_21

Você também pode gostar