Vous êtes sur la page 1sur 112

PICmicro Microcontrolador

Sistemas Digitais II
(Documento em verso Draft ainda em elaborao)

Jos Carlos Fonseca


14 de Janeiro de 2003

Resumo

Introduo
Vrios tipos de arquitectura
Os microcontroladores PIC
PIC16F84

Jan 20

Diagrama de blocos
Memria de programa
Memria de dados
Recursos auxiliares
Pinagem
Circuito de teste
Programao
Memria
ALU e W
PC e Stack
Portos
Timer

PICmicro Microcontroladores - Jos Carlos F

Introduo

Estrutura de um computador

Jan 20

Memria So armazenados os programas e os


dados
CPU (Unidade de Processamento Central)
Interpreta as instrues do programa de execuo e
executa as operaes correspondentes . Dentro do
processador, a Unidade de Controle a que
interpreta ou traduz as instrues e um Processador
que realiza as operaes de cada instruo
Perifricos So dispositivos de Entrada e Sada
mediante os quais se introduzem informaes e se
recolhem os dados. (teclado, rato, monitor, modem,
etc.)

PICmicro Microcontroladores - Jos Carlos F

Introduo

Microcontrolador

um computador dentro de um circuito integrado.


Graas evoluo tecnolgica possvel integrar
num nico chip todos os componentes de um
computador. Devido s suas dimenses tem pouca
memria, o seu processador s reconhece algumas
instrues bsicas e est limitado na ligao directa
a perifricos especficos
Encontram-se normalmente embebidos nos
equipamentos, tais como teclados, ratos, televises,
mquinas de lavar, alarmes, jogos electrnicos,
relgios, automveis, robots, telemveis, etc.
Um microcontrolador embebido est dedicado a essa
tarefa especfica, enquanto que um computador de
uso geral est preparado para um uso mais
diferenciado
Segundo a Dataquest, no ano 1999, foram usados
15 vezes mais microcontroladores do que
processadores
Segundo a Dataquest, no ano 2000, havia uma
mdia de 240 microcontroladores num lar americano

Jan 20

PICmicro Microcontroladores - Jos Carlos F

Processador vs Microcontrolador

Jan 20

Um microprocessador um circuito muito complexo,


em forma de circuito integrado, que pode conter
entre alguns milhares (Z80) a 7 milhes de
transstores (Pentium II). Estes transstores internos
constituem os mais diversos circuitos lgicos: como
contadores, registos, descodificadores, e muitos
outros. Estes circuitos lgicos so dispostos de
maneira complexa, dando ao microprocessador a
capacidade de executar operaes lgicas,
aritmticas e de controlo. um sistema aberto
porque a sua configurao varivel de acordo com
a aplicao a que se destina
O microcontrolador integra num nico componente
os trs elementos principais na arquitectura de um
computador: CPU, memria e I/O

PICmicro Microcontroladores - Jos Carlos F

Processador vs Microcontrolador

Jan 20

Os microcontroladores dispem sempre de I/O


digital ou analgica, o que no se verifica nos
microprocessadores
A memria interna s de leitura verifica-se apenas
nos microcontroladores (pode ser ROM, j
programada de fbrica, pode ser programvel pelo
utlizador ou pode mesmo no existir internamente)
O barramento de dados dos microprocessadores tem
um maior nmero de bits, uma vez que a sua rea
de aplicao mais exigente ao nvel do
processamento da informao; Dos
microcontroladores, por outro lado, espera-se uma
aplicao mais diversificada e menos exigente nesse
ponto; So ainda pouco utilizados
microcontroladores de 16 bits

PICmicro Microcontroladores - Jos Carlos F

CISC vs RISC

Jan 20

CISC (Complex Instruction Set Computers)


RISC (Reduced Instruction Set Computers)
O PIC16F84 RISC
Um CISC tende a ter um grande nmero de
instrues, cada uma executando uma
permutao diferente da mesma operao
Um RISC tem um nmero mnimo de instrues
que permite ao utilizador desenhar as suas
prprias instrues, em vez de usar as que o
desenhador do processador oferece

PICmicro Microcontroladores - Jos Carlos F

Arquitectura de Princeton (Von


Neumann)

Jan 20

Como resultado de um pedido do governo dos EUA, as


Universidades de Princeton e de Harvard criaram
arquitecturas de computadores para serem usadas no
clculo das tabelas de artilharia de Navel
Em 1945 Von Neumann estabeleceu as bases para a
construo de computadores. Desenhou uma mquina
em que existia um bloco, unidade de controlo, capaz de
descodificar um conjunto de instrues. Um
processador que realiza as operaes que as instrues
implicam. Um grande armazm servia para guardar as
instrues dos programas e dos dados. A unidade de
interface de memria responsvel pela gesto do
acesso memria. Um ltimo bloco permitia a
transferncia de informao aos perifricos exteriores

PICmicro Microcontroladores - Jos Carlos F

Arquitectura de Princeton (Von


Neumann)

A vantagem a simplicidade de acesso


memria. Possui um barramento
nico para aceder memria
(endereos, dados e controlo)
O grande inconveniente o facto da
memria do programa e dos dados ser
comum, pois impede que se possa
aceder ao programa e aos dados
simultaneamente e muitas vezes o
tamanho dos dados diferente do
tamanho das instrues

Jan 20

PICmicro Microcontroladores - Jos Carlos F

Arquitectura de Harvard

Existem duas memrias diferentes e


independentes, uma para as
instrues e outra para os dados.
Isto permite realizar acessos
simultneos a ambas as memrias.
Esta arquitectura tende a executar
as instrues em menos ciclos de
relgio. As duas memrias podem
tambm ter palavras de
comprimento diferentes. No caso do
PIC16F84 a memria de programa
Flash e possui 1024 posies de 14
bits cada. A memria de dados tem
uma capacidade muito menor e um
tamanho tpico de 8 bits

Jan 20

PICmicro Microcontroladores - Jos Carlos F

10

Princeton Vs Harvard

Jan 20

PICmicro Microcontroladores - Jos Carlos F

11

Micro-coded vs Hard-coded

A execuo de cada instruo , de facto, um conjunto


de passos. Para executar esses passos podem ser
usadas duas aproximaes:

Jan 20

Micro-coded um processador dentro do processador.


Uma mquina de estados executa cada instruo como um
endereo para uma subrotina de instrues que depois so
executadas pela lgica do microCode Instruction Decode
and Processor. O PIC Micro-coded
Hard-coded Usa o padro de bits da instruo para
aceder a lgica combinatria especfica da instruo
executando-a

Um processador micro-coded mais simples que o


hard-coded, podendo ser mais rapidamente
implementado. Facilita as revises e actualizaes do
cdigo. No entanto mais lento que o hard-coded, pois
as instrues so executadas em maior nmero de
ciclos de relgio

PICmicro Microcontroladores - Jos Carlos F

12

Fabricantes de microcontroladores
Fabricantes

Jan 20

Intel Pai dos microcontroladores, tendo


desenvolvido na dcada de 70, o 8048. Teve
muito sucesso com o 8051
Motorola Ocupou o primeiro lugar na
dcada de 90 com o 68HC11 usando a
tecnologia HCMOS
Microchip Fabricante dos PIC (Peripheral
Interface Controller) passou do 20 lugar em
1990 para o 2 lugar em 2000

PICmicro Microcontroladores - Jos Carlos F

13

Caractersticas das famlias de PICS


Produto

Famlia

Exec./instru
o

N de
instrues

PIC12CXXX

Gama an
(bsica e mdia
de 8 pinos)

1000ns/4Mhz;
10 Mhz

33/35 instrues

PIC16C5X

Gama bsica

200ns / 20Mhz

33 inst. de 12
bits

PIC16CXXX

Gama mdia

200ns / 20 Mhz

35 inst. de 14
bits

PIC17CXXX

Gama alta

120 ns / 33Mhz

58 inst. de 16
bits

PIC18CXXX

Gama
melhorada

10 MIPS / 40
Mhz

77 inst. de 16
bits

Jan 20

PICmicro Microcontroladores - Jos Carlos F

14

Gama de Microcontroladores

Jan 20

Low-End - Subset reduzido de instrues; Sem


tratamento de interrupes; Menor disponibilidade
de memria RAM; Sem I/O avanado; Instruo
de 12bits; Ex: PIC 12C5xx; No deve ser utilizado
para novas aplicaes ou em aprendizagem.
MidRange - Baseado na organizao dos LowEnd; Tratamento de interrupes; Timers;
Quantidade razovel de memria RAM; Tipos
avanados de I/O; Instruo de 14bits;
Caracterizado como sendo de uso geral; Ex: PIC
16C7xx
High-End - Instrues de 16 bits; Acesso a todos
os registos directamente; Mltiplos vectores de
interrupo; Famlia: PIC 17Cxx

PICmicro Microcontroladores - Jos Carlos F

15

Quanto memria do Programa

Jan 20

PIC 16 Cxxx - Memria EPROM


PIC 16 CRxxx - Memria ROM
PIC 16 Fxxx - Memria FLASH

PICmicro Microcontroladores - Jos Carlos F

16

Execuo de instrues

Pipeline de instrues em dois estgios:

Jan 20

Fase de busca (fetch) Procura-se o cdigo binrio da instruo na


memria do programa
Fase de execuo Interpreta-se o cdigo, buscam-se os operandos e
executa-se a operao que implica

A fase de fetch faz uma eficiente utilizao de memria j que


cada instruo recuperada da memria em apenas um ciclo
Cada uma das fases realizada em 4 ciclos de relgio
As instrues de salto demoram 8 ciclos de relgio, enquanto que
as outras demoram apenas 4 ciclos de relgio
O PIC utiliza a tcnica de segmentao para executar as
instrues, pelo que enquanto executa a fase de execuo de
uma instruo, executa a fase de busca da instruo seguinte.
Desta forma consegue-se executar cada instruo em quatro
ciclos de relgio. Por ex. o tempo que um PIC16F84 a 4Mhz
demora a executar um programa com 100 linhas de cdigo, das
quais 30 so de salto = 4*(1/4.000.000)*70 +
8*(1/4.000.000)*30 = 130 us

PICmicro Microcontroladores - Jos Carlos F

17

Execuo de instrues
Relao entre o sinal de clock e o ciclo de instruo:

Exemplo de execuo de uma instruo:

(Nota: PIC 16C73)

Jan 20

PICmicro Microcontroladores - Jos Carlos F

18

PIC16F84

PIC16F84, fabricado com a tecnologia CMOS

Jan 20

Capaz de trabalhar at 10 Mhz. PIC16F84A Capaz de trabalhar at 20 Mhz


Pequeno, s tem 18 pernas
Barato. O PIC16F84A custa 7,37 + IVA
Memria de programa de 1K palavras de 14 bits FLASH, em que em cada uma cabe
uma instruo. Pode ser regravada cerca de 10.000 vezes com toda a segurana
Memria de dados RAM de 68 Bytes
Memria de dados EEPROM de 64 Bytes, no voltil
8 nveis de stack (pilha)
35 instrues de 14 bits
Tempo de execuo das instrues normais: 4xTosc
Tempo de execuo das instrues de salto: 8xTosc
4 tipos de interrupes (External RB0/INT pin, TMR0 timer overflow, PORTB<7:4>
interrupt-on-change, Data EEPROM write complete)
13 linhas de entradas/sada digitais
1 timer
1 watch-dog
Alimentao de 2V a 6 V
Gravao de 12V a 14V
Encapsulamento DIP de 18 pernas (SOIC)

PICmicro Microcontroladores - Jos Carlos F

19

Diagrama de blocos do PIC16F84A

Jan 20

PICmicro Microcontroladores - Jos Carlos F

20

CPU

O PIC tem um processador tipo RISC com a


arquitectura de Harvard
O processador do PIC pode ser visto como sendo
uma ALU, recebendo, processando e armazenando
dados de e para os vrios registos
Tipos de aceder aos dados

Jan 20

Endereamento directo Endereo de registo dentro


do banco de registos de 128 bytes especificado na
instruo
Endereamento imediato Se para ser especificada
uma constante a seguir instruo
Endereamento indexado Porque o endereo a ser
acedido pode ser modificado aritmeticamente

PICmicro Microcontroladores - Jos Carlos F

21

CPU

Jan 20

PICmicro Microcontroladores - Jos Carlos F

22

CPU

Jan 20

A ALU responsvel por todas as operaes


aritmticas e com bits, bem como o incio dos
pedidos de execuo condicional
Todas as operaes aritmticas usam o registo w
O resultado das operaes pode ser armazenado
no registo w ou no file register
O Program Counter contm o endereo da
instruo seguinte que ir ser executada. Se uma
instruo tem um endereo directo os ltimos 7
bits so usados como os endereos
O registo FSR armazena o endereo da memria,
no endereamento indirecto
O registo INDF (que na realidade no existe) o
registo que apontado pelo FSR

PICmicro Microcontroladores - Jos Carlos F

23

ALU

A ALU (Arithmetic Logic Unit) a


componente mais complexa do
PIC por conter todos os circuitos

destinados a desenvolver as
funes de clculo e manipulao
de dados durante a execuo de um
programa

Jan 20

Executa as operaes aritmticas,


de bits e de deslocamento de um
ou dois bytes
A ALU pode ser vista como um
conjunto de operaes que so
executadas em paralelo com um
nico multiplexer
O registo STATUS armazena os
resultados das operaes
As operaes com bits so
executadas executando ANDs
para colocar a 0 ou ORs para
colocar a 1

PICmicro Microcontroladores - Jos Carlos F

24

ALU
Operao

Operao equivalente

Mover

AND com 0x0FF

Adio
Subtraco

Adio com um Negativo

Negao

XOR com 0x0FF (inverso bit a bit) e Incremento

Incremento

Adio a 1

Decremento

Subtraco por um/Adio com 0x0FF

AND
OR
XOR
Complemento

XOR com 0x0FF

Shift Left

Adicionar o valor a si prprio com Carry

Shift Right

Jan 20

PICmicro Microcontroladores - Jos Carlos F

25

Registo Status

Flags:
Zero

(Z) Fica a 1 quando o resultado

0
Carry (C) Fica a 1 quando o resultado
da operao maior do que 255
Digit Carry (DC) Fica a 1 quando o
nibble menos significativo maior do
que 15 aps uma operao aritmtica
(adio ou subtraco)
Jan 20

PICmicro Microcontroladores - Jos Carlos F

26

Organizao da memria

A memria de dados (register


file) est dividida em dois grupos.

Jan 20

Registos especiais (Special


Function Registers) Ocupam as
11 primeiras posies, desde 00
at 0B. So os registos que
controlam o funcionamento do
PIC
Registos de utilizao geral
(General Purpose Registers)
Ocupam as posies seguintes,
desde 08 at 4F

Partes da memria est dividida


em Bancos, incluindo registos
especiais e registos de utilizao
geral. Para a utilizao dos
bancos necessrio configurar os
bits RP0 e RP1 do registo STATUS

PICmicro Microcontroladores - Jos Carlos F

27

Endereamento de Bancos

Jan 20

Cada um dos 2 bancos


tem 128 registos para
acesso directo
No Banco 0 pode-se
aceder aos portos A e
B (PORTA de 5 bits e
PORTB de 8 bits)
No Banco 1 podem-se
configurar os portos
(TRISA e TRISB)

File address

BANCO 0

BANCO 1

File address

INDF

INDF

80

TMR0

OPTION

81

PCL

PCL

82

STATUS

STATUS

83

FSR

FSR

84

PORT A

TRIS A

85

PORT B

TRIS B

86

87

EEDATA

EECON1

88

EEADR

EECON2

89

0A

PCLATH

PCLATH

8A

0B

INTCON

INTCON

8B

0C

68 registos

Mapeado

8C

de utilizao

(acesso)

geral

Banco 0

(SRAM)

4F

CF

50

D0

PICmicro Microcontroladores - Jos Carlos F


7F

28

FF

Program Counter

Jan 20

O Program Counter (PC) um


registo especial que serve
para armazenar o endereo da
prxima instruo a ser
executada
Tem a dimenso de 13 bits.
PCL, para os bits menos
significativos e PCH (no
acessvel) para os mais
significativos
Os 8 bits menos significativos
so escritos no registo PCL e
os restantes no registo
PCLATH
Nas instrues de salto (GOTO
e CALL) 11 bits so usados
para armazenar o endereo
(at 2048 instrues)

PICmicro Microcontroladores - Jos Carlos F

29

Stack

Jan 20

O Stack uma estrutura


(Last In First Out) e serve
para armazenar o valor do
Program Counter quando
chamada uma subrotina de
forma a saber o local de
retorno da mesma
O PIC16F84 possui 8 nveis
de Stack, pelo que consegue
armazenar no mximo 8
chamadas sucessivas a
subrotinas
O Stack s armazena o
Program Counter

PICmicro Microcontroladores - Jos Carlos F

30

Memria de programa

Memria de programa

Jan 20

ROM com mscara A aplicao


gravada na ROM logo aps o fabrico e
antes de ser entregue ao cliente. A
criao da mscara muito
dispendios, pelo que s compensa
para grandes quantidades
OTP (One-Time Programable) A
aplicao s pode ser gravada uma
vez pelo utilizador
EPROM Pode gravar-se vrias vezes,
apagando com raios ultravioletas
EEPROM Pode gravar-se vrias
vezes, apagando electricamente
FLASH similares s EEPROM, mas
mais rpidas e toleram mais ciclos de
escrita

PICmicro Microcontroladores - Jos Carlos F

31

Memria de dados

Memria de dados
RAM

memria de leitura e escrita


muito rpida e voltil
EEPROM memria de leitura e escrita
lenta, mas no voltil

Jan 20

PICmicro Microcontroladores - Jos Carlos F

32

Recursos auxiliares

Recursos auxiliares

Jan 20

Temporizadores
Watch-dog
Proteco de falha de alimentao (Brown out)
Estado de repouso e baixo consumo (Sleep mode)
Conversor A/D
Conversor D/A
Comparador analgico
Modulador por largura de impulsos (PWM)
Portas de entradas e sadas digitais
Portas de comunicao
Interrupes
In-circuit serial programming

PICmicro Microcontroladores - Jos Carlos F

33

Recursos auxiliares Temporizadores

Jan 20

So usados para controlar perodos de tempo


(temporizadores) e para ter em conta os
acontecimentos exteriores (contadores)
Para medirem o tempo guardado num registo o
valor adequado que ir ser incrementado ou
decrementado ao ritmo dos impulsos de relgio
at que haja carry ou chegue a 0 para ser
produzido um aviso

PICmicro Microcontroladores - Jos Carlos F

34

O Timer

Jan 20

O registo TMR0 um
contador, ou seja um
registo particular, no
qual o seu contedo
incrementado com uma
cadncia regular e
programada
directamente pelo
hardware do PIC. Na
prtica, a diferena de
outro registro, que o
TMR0 no mantm
inalterado o seu valor,
incrementando-o
continuamente

PICmicro Microcontroladores - Jos Carlos F

35

Recursos auxiliares Watch-dog

Jan 20

Permite fazer reset automtico ao


PIC quando este bloqueia
Quando se pretende usar esta
facilidade o programa tem de iniciar
o Watch-dog antes deste provocar o
reset

PICmicro Microcontroladores - Jos Carlos F

36

Recursos auxiliares Brown-out

Jan 20

um circuito que coloca o PIC em


reset quando a tenso de
alimentao desce de um
determinado nvel
Coloca novamente o PIC em
funcionamento assim que a tenso
de alimentao seja aceitvel

PICmicro Microcontroladores - Jos Carlos F

37

Recursos auxiliares Sleep mode

Jan 20

Para poupar energia enquanto


espera por algum acontecimento
exterior o PIC pode ficar
adormecido (usando a instruo
SLEEP)
Aps o acontecimento o PIC acorda
e continua a sua execuo a partir
do ponto em que tinha ficado
PICmicro Microcontroladores - Jos Carlos F

38

Recursos auxiliares Conversores


A/D e D/A

Jan 20

Nos
microcontroladores
que tm estas
possibilidades podem
converter sinais
analgicos em
digitais e vice-versa

PICmicro Microcontroladores - Jos Carlos F

39

Recursos auxiliares Comparador


analgico

Jan 20

Nos microcontroladores que tm


esta possibilidade possuem um OPAMP (Amplificador Operacional)
interno que permite comparar uma
tenso externa com uma tenso de
referncia indicando se superior
ou inferior

PICmicro Microcontroladores - Jos Carlos F

40

Recursos auxiliares PWM

Jan 20

Nos microcontroladores que tm


esta possibilidade permitem a sada
de impulsos de largura varivel que
permitem, por exemplo controlar
motores

PICmicro Microcontroladores - Jos Carlos F

41

Recursos auxiliares Portas de I/O

Jan 20

Todos os microcontroladores
possuem alguns pinos como
linhas de entrada e sada digitais
de dados
Normalmente estas linhas esto
agrupadas de oito em oito
formando portas
Estas linhas digitais podem ser
configuradas como sendo de
entrada ou como sendo de sada
colocando 1 ou 0 no bit
correspondente ao registo
destinado sua configurao

PICmicro Microcontroladores - Jos Carlos F

42

Recursos auxiliares Portas de I/O

O PIC16F84 dispe de um total de 13 linhas


de I/O organizadas em dois portos
denominadas de PORTO A e PORTO B. O
PORTO A dispe de 5 linhas configurveis
tanto em entrada como em sada identificadas
pelas siglas RA0, RA1, RA2, RA3 e RA4. O
PORTO B dispe de 8 linhas tambm
configurveis seja em entrada ou em sada
identificadas pelas siglas RB0, RB1, RB2, RB3,
RB4, RB5, RB6 e RB7.
Para o controle da linha de I/O do programa, o
PIC dispe de dois registros internos que
controlam os portos e so chamados de TRISA
e PORTA para a porta A e TRISB e PORTB
para a porta B.
Todos os bits contidos nos registros
mencionados correspondem univocamente a
uma linha de I/O. Por exemplo o bit 0 do
registro PORTA e do registo TRIS A
correspondem linha RA0 , o bit 1 a linha
RA1 e assim por diante.
Se o bit 0 do registro TRISA for colocado em
zero, a linha RA0 estar configurada como
linha de sada, por isso o valor a que ira o bit
0 do registro PORTA determinar o estado
lgico de tal linha (0 = 0 volts, 1 = 5 volts).

Jan 20

PICmicro Microcontroladores - Jos Carlos F

43

Recursos auxiliares Portas de


comunicao

De forma a dotar os microcontroladores com a


possibilidade de comunicarem com outros dispositivos
externos, barramentos de microprocessadores, redes,
etc. alguns modelos tm recursos que se permitem
executar directamente esta tarefa:

Jan 20

UART, adaptador de comunicao srie assncrona


USART, adaptador de comunicao srie sncrona e
assncrona
Porta paralela escrava, para poder ligar aos barramentos
de outros microprocessadores
USB (Universal Serial Bus), que o moderno barramento
srie dos PC
I2C, que es un interface srie de dois fios desenvolvido
pela Philips
CAN (Controller Area Network), para permitir a adaptao
a redes CAN desenvolvidas pela Bosch e Intel para a
cablagem de dispositivos em automveis

PICmicro Microcontroladores - Jos Carlos F

44

Recursos auxiliares - Interrupes

O PIC16F84 tem a possibilidade de contar com um


sistema de interrupes. Este sistema consiste num
mecanismo atravs do qual um acontecimento interno
ou externo, assncrono relativamente ao programa,
pode interromper a sua execuo produzindo
automaticamente um salto para arotina de atendimento
interrupo de maneira a poder atender de imediato
o acontecimento e retomar de seguida a execuo do
programa interrompido.
Existem 4 fontes de interrupes:

Jan 20

External RB0/INT pin


TMR0 timer overflow
PORTB<7:4> interrupt-on-change
Data EEPROM write complete

PICmicro Microcontroladores - Jos Carlos F

45

Recursos auxiliares - Interrupes

O INTCON REGISTER (ADDRESS 0Bh, 8Bh) o registo


que contm os vrios bits que inibem e desinibem as
respectivas fontes de interrupo:
bit 7 GIE: Global Interrupt Enable bit
bit 6 EEIE: EE Write Complete Interrupt Enable bit
bit 5 T0IE: TMR0 Overflow Interrupt Enable bit
bit 4 INTE: RB0/INT External Interrupt Enable bit
bit 3 RBIE: RB Port Change Interrupt Enable bit
bit 2 T0IF: TMR0 Overflow Interrupt Flag bit
bit 1 INTF: RB0/INT External Interrupt Flag bit
bit 0 RBIF: RB Port Change Interrupt Flag bit

Jan 20

PICmicro Microcontroladores - Jos Carlos F

46

Recursos auxiliares - Interrupes

Jan 20

PICmicro Microcontroladores - Jos Carlos F

47

Recursos auxiliares - ICSP

Jan 20

O PIC16F84 pode ser programado


via comunicao srie, mesmo aps
ter sido colocado no circuito final.
Para tal bastam dois sinais para o
relgio e para os dados e mais trs
sinais para a alimentao, a terra e
a tenso de programao

PICmicro Microcontroladores - Jos Carlos F

48

Pinagem
PIC16F84 (PDIP, SOIC)

Azul (linhas de I/O)


Vermelho e Preto (alimentao)
Verde (funcionamento do PIC)

Jan 20

PICmicro Microcontroladores - Jos Carlos F

49

Pinagem
1

RA2
uma linha de I/O programvel em entrada ou sada da unidade.
Corresponde ao BIT 2 da PORTA A.

RA3
uma linha de I/O programvel em entrada ou sada da unidade.
Corresponde ao BIT 3 da PORTA A.

RA4 / RTCC
um pino multi funo que pode ser programado como uma linha
normal de I/O ou como linha de clock para entrada em sentido ao
contador RTCC.
Se programada como linha de I/O corresponde ao BIT 4 da PORTA A
ao contrrio de outra linha de I/O, quando esta linha funciona como
sada, trabalha em colector aberto.

Jan 20

PICmicro Microcontroladores - Jos Carlos F

50

Pinagem
4

MCLR / VPP
Em condio normal de funcionamento desenvolve a funo de Master
CLeaR ou seja Reset estar activo a nvel 0. Pode ser conectado a um
circuito de reset externo ou simplesmente conectando-o ao positivo da
alimentao.
Quando o PIC for colocado em Program Mode ser utilizado como
entrada para a tenso de programao Vpp.

Jan 20

VSS
o pino que vai conectado ao negativo da tenso de alimentao.

PICmicro Microcontroladores - Jos Carlos F

51

Pinagem
6

RB0
uma linha de I/O programvel em entrada ou em sada.
Corresponde ao BIT 0 da PORTA B e pode ser programada para gerar
interrupo.

RB1
uma linha de I/O programvel em entrada ou em sada.
Corresponde ao BIT 1 da PORTA B.

RB2
uma linha de I/O programvel em entrada ou em sada.
Corresponde ao BIT 2 da PORTA B.

RB3 uma linha de I/O programvel em entrada ou em sada.

Jan 20

PICmicro Microcontroladores - Jos Carlos F

Corresponde ao BIT 3 da PORTA B.

52

Pinagem
10

RB4 uma linha de I/O programvel em entrada ou em sada.


Corresponde ao BIT 4 da PORTA B e pode ser programada para gerar
interrupo na alterao do valor.

11

RB5 uma linha de I/O programvel em entrada ou em sada.


Corresponde ao BIT 5 da PORTA B e pode ser programada para gerar
interrupo na alterao do valor.

12

RB6 uma linha de I/O programvel em entrada ou sada.


Corresponde ao BIT 6 da PORTA B e pode ser programada para gerar
interrupo na alterao do valor. Clock da porta srie.

13

RB7 uma linha de I/O programvel em entrada ou sada.


Corresponde ao BIT 7 da PORTA B e pode ser programada para gerar
interrupo na alterao do valor. Dados da porta srie.

Jan 20

PICmicro Microcontroladores - Jos Carlos F

53

Pinagem
14

VDD
o terminal positivo de alimentao do PIC.
em todas as trs verses disponveis do PIC16F84 (comercial, industrial
e automotiva) a tenso pode assumir um valor que vai de um mnimo
de 2.0 volts a um mximo de 6.0 volts.

15

OSC2 / CLKOUT
um pino de ligao no caso de se utilizar um cristal de quartzo para
gerar o clock. E como sada de clock caso for aplicado um oscilador RC
externo.

16

OSC1 / CLKIN
um pino de ligao para o caso de se utilizar um cristal de quartzo ou
um circuito RC para gerar o clock. E tambm como entrada caso
utilizemos um oscilador externo.

Jan 20

PICmicro Microcontroladores - Jos Carlos F

54

Pinagem
17

RA0
uma linha de I/O programvel em entrada ou sada.
Corresponde ao BIT 0 da PORTA A.

18

RA1
uma linha de I/O programvel em entrada ou sada.
Corresponde ao BIT 1 da PORTA A

Jan 20

PICmicro Microcontroladores - Jos Carlos F

55

Oscilador
Oscilador

Frequncia

RC (Resistor/Capacitor)
HS (High Speed Crystal/Resonator)

4 MHz 20 MHz

XT (Crystal/Resonator)

200 KHz 4 MHz

LP (Low Power Crystal)

0 200 KHz

Jan 20

PICmicro Microcontroladores - Jos Carlos F

56

Oscilador
Modo

XT

HS

LP

XT

HS
RC

Jan 20

Freq.

Osc1/C1

Osc2/C2

455 kHz

47 - 100 pF

47 - 100 pF

2.0 MHz

15 - 33 pF

15 - 33 pF

4.0 MHz

15 - 33 pF

15 - 33 pF

8.0 MHz

15 - 33 pF

15 - 33 pF

10.0 MHz

15 - 33 pF

15 - 33 pF

32 kHz

68 - 100 pF

68 - 100 pF

200 kHz

15 - 33 pF

15 - 33 pF

100 kHz

100 - 150 pF

100 - 150 pF

2 MHz

15 - 33 pF

15 - 33 pF

4 MHz

15 - 33 pF

15 - 33 pF

4 MHz

15 - 33 pF

15 - 33 pF

20 MHz

15 - 33 pF

15 - 33 pF

5 k Rext 100 k

Cext > 20pF

PICmicro Microcontroladores - Jos Carlos F

57

Programao e utilizao

Na primeira figura est esquematizado o fluxograma de


operaes e arquivos que devero ser realizados para
programar um cdigo assembler para um PIC
Na segunda figura apresentado um esquema de montagem
para 4 LEDs pisca-pisca, usando um oscilador RC

Jan 20

PICmicro Microcontroladores - Jos Carlos F

58

Special Function Register File

Jan 20

PICmicro Microcontroladores - Jos Carlos F

59

STATUS Registo de estado


bit 7-6 Unimplemented: Maintain as 0
bit 5 RP0: Register Bank Select bits (used for direct addressing)
01 = Bank 1 (80h - FFh)
00 = Bank 0 (00h - 7Fh)
bit 4 TO: Time-out bit
1 = After power-up, CLRWDT instruction, or SLEEP instruction
0 = A WDT time-out occurred
bit 3 PD: Power-down bit
1 = After power-up or by the CLRWDT instruction
0 = By execution of the SLEEP instruction
bit 2 Z: Zero bit
1 = The result of an arithmetic or logic operation is zero
0 = The result of an arithmetic or logic operation is not zero
bit 1 DC: Digit carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow, the polarity is reversed)
1 = A carry-out from the 4th low order bit of the result occurred
0 = No carry-out from the 4th low order bit of the result
bit 0 C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow, the polarity is
reversed)
1 = A carry-out from the Most Significant bit of the result occurred
0 = No carry-out from the Most Significant bit of the result occurred
Note: A subtraction is executed by adding the twos complement of the second operand.
For rotate (RRF, RLF) instructions, this bit is loaded with either the high or low order bit of the source register.

Jan 20

PICmicro Microcontroladores - Jos Carlos F

60

OPTION - Registo de opes


bit 7 RBPU: PORTB Pull-up Enable bit
1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual port latch values
bit 6 INTEDG: Interrupt Edge Select bit
1 = Interrupt on rising edge of RB0/INT pin
0 = Interrupt on falling edge of RB0/INT pin
bit 5 T0CS: TMR0 Clock Source Select bit
1 = Transition on RA4/T0CKI pin
0 = Internal instruction cycle clock (CLKOUT)
bit 4 T0SE: TMR0 Source Edge Select bit
1 = Increment on high-to-low transition on RA4/T0CKI pin
0 = Increment on low-to-high transition on RA4/T0CKI pin
bit 3 PSA: Prescaler Assignment bit
1 = Prescaler is assigned to the WDT
0 = Prescaler is assigned to the Timer0 module
bit 2-0 PS2:PS0: Prescaler Rate Select bits

Jan 20

Bit Value

TMR0 Rate

WDT Rate

000

001

010

011

100

101

110

111

1:2

1:4

1:8

1 : 16

1 : 32

1 : 64

1 : 128

1 : 256

1:1

1:2

1:4

1:8

1 : 16

1 : 32

1 : 64

1 : 128

PICmicro Microcontroladores - Jos Carlos F

61

INTCON - Registo de Interrupces

bit 7 GIE: Global Interrupt Enable bit


1 = Enables all unmasked interrupts
0 = Disables all interrupts
bit 6 EEIE: EE Write Complete Interrupt Enable bit
1 = Enables the EE Write Complete interrupts
0 = Disables the EE Write Complete interrupt
bit 5 T0IE: TMR0 Overflow Interrupt Enable bit
1 = Enables the TMR0 interrupt
0 = Disables the TMR0 interrupt
bit 4 INTE: RB0/INT External Interrupt Enable bit
1 = Enables the RB0/INT external interrupt
0 = Disables the RB0/INT external interrupt
bit 3 RBIE: RB Port Change Interrupt Enable bit
1 = Enables the RB port change interrupt
0 = Disables the RB port change interrupt
bit 2 T0IF: TMR0 Overflow Interrupt Flag bit
1 = TMR0 register has overflowed (must be cleared in software)
0 = TMR0 register did not overflow
bit 1 INTF: RB0/INT External Interrupt Flag bit
1 = The RB0/INT external interrupt occurred (must be cleared in software)
0 = The RB0/INT external interrupt did not occur
bit 0 RBIF: RB Port Change Interrupt Flag bit
1 = At least one of the RB7:RB4 pins changed state (must be cleared in software)
0 = None of the RB7:RB4 pins have changed state

Jan 20

PICmicro Microcontroladores - Jos Carlos F

62

EECON1 Registo da EEPROM

bit 7-5 Unimplemented: Read as '0'


bit 4 EEIF: EEPROM Write Operation Interrupt Flag bit
1 = The write operation completed (must be cleared in software)
0 = The write operation is not complete or has not been started
bit 3 WRERR: EEPROM Error Flag bit
1 = A write operation is prematurely terminated (any MCLR Reset or any WDT Reset during normal operation)
0 = The write operation completed
bit 2 WREN: EEPROM Write Enable bit
1 = Allows write cycles
0 = Inhibits write to the EEPROM
bit 1 WR: Write Control bit
1 = Initiates a write cycle. The bit is cleared by hardware once write is complete. The WR bit can only be set
(not cleared) in software.
0 = Write cycle to the EEPROM is complete
bit 0 RD: Read Control bit
1 = Initiates an EEPROM read RD is cleared in hardware. The RD bit can only be set (not
cleared) in software.
0 = Does not initiate an EEPROM read

Jan 20

PICmicro Microcontroladores - Jos Carlos F

63

Palavra de configurao do PIC

Jan 20

PICmicro Microcontroladores - Jos Carlos F

64

Instrues
Sintaxe

Descrio Microchip

Operao equivalente

ADDLW k

Add Literal and W

W=W+k

ADDWF f,d

Add W and f

d = W + f (onde d pode ser W ou f)

ANDLW k

AND Literal with W

W = W AND k

ANDWF f,d

AND W with f

d = W AND f (onde d pode ser W ou f)

BCF f,b

Bit Clear f

f(b) = 0

BSF f,b

Bit Set f

f(b) = 1

BTFSC f,b

Bit Test f, Skip if Clear

f(b) = 0 ? Se , salta uma instruo

BTFSS f,b

Bit Test f, skip if Set

f(b) = 1 ? Se , salta uma instruo

CALL k

Subroutine Call

Chamada a uma subrotina no endereo k

CLRF f

Clear f

f=0

CLRW

Clear W Register

W=0

CLRWDT

Clear Watchdog Timer

Watchdog timer = 0

COMF f,d

Complement f

d = not f (onde d pode ser W ou f)

DECF f,d

Decrement f

d = f -1 (onde d pode ser W ou f)

Decrement f, Skip if 0
d = f -1 (onde d pode ser W ou f) se d = 0 salta
JanDECFSZ
20 f,d
PICmicro
Microcontroladores
- Jos Carlos F
65

Instrues
Sintaxe

Descrio Microchip

Operao equivalente

GOTO k

Go to address

salta para o endereo k

INCF f,d

Increment f

d = f +1 (onde d pode ser W ou f)

INCFSZ f,d

Increment f, Skip if 0

d = f +1 (onde d pode ser W ou f) se d = 0 salta

IORLW k

Inclusive OR Literal with W

W = W OR k

IORWF f,d

Inclusive OR W with f

d = f OR W (onde d pode ser W ou f)

MOVLW k

Move literal to W

W=k

MOVF f,d

Move f

d = f (onde d pode ser W ou f)

MOVWF f

Move W to f

f=W

NOP

No Operation

Nenhuma operao

OPTION

Load Option Register

OPTION = W

RETFIE

Return from Interrupt

Retorna de uma interrupt handler

RETLW k

Return Literal to W

Retorna de uma subrotina com W = k

RETURN

Return from Subroutine

Retorna de uma subrotina

RLF f,d

Rotale Left f through Carry

d = f << 1 (onde d pode ser W ou f)

Rotale Right f through Carry


d = f >> 1 (onde d pode ser W o f)
JanRRF
20f,d PICmicro
Microcontroladores
- Jos Carlos F

66

Instrues
Sintaxe

Descrio Microchip

Operao equivalente

SLEEP

Go into Standby Mode

Coloca o PIC em standby

SUBLW k

Subtract W from Literal

W=k-W

SUBWF f,d

Subtract W from f

d = f - W (onde d pode ser W ou f)

SWAPF f

Swap f

f = Swap do bit 0123 com 4567 de f

TRIS f

Load TRIS Register

TRIS di f = W

XORLW k

Exclusive OR Literal with W

W = W XOR k

XORWF f,d

Exclusive OR W with f

d = f XOR W (onde d pode ser W ou f)

Jan 20

PICmicro Microcontroladores - Jos Carlos F

67

Instrues - ADDLW
ADDLW

Soma um literal a W

Sintaxe:
[label] ADDLW k
Operandos: 0
k
255
Operao: :
(W) + (k)==> (W)
Flags afectadas: C, DC, Z
Cdigo OP:
11 111x kkkk kkkk
Descrio: Soma o contedo do registo W e k, guardando o resultado
em W.

Exemplo:

ADDLW 0xC2

Antes: W = 0x17
Depois: W = 0xD9

Jan 20

PICmicro Microcontroladores - Jos Carlos F

68

Instrues - ADDWF
ADDWF

W + F

Sintaxe:
[label] ADDWF f,d
Operandos: d
[0,1], 0
f
127
Operao:
(W) + (f) ==> (dest)
Flags afectadas: C, DC, Z
Cdigo OP:
00 0111 dfff ffff
Descrio: Soma o contedo do registo W com o registo f. Se d 0,
o resultado armazena-se em W, Se d 1 armazena-se em f.
Exemplo:

ADDWF REG,0

Antes: W = 0x17, REG = 0xC2


Depois: W = 0xD9, REG = 0xC2

Jan 20

PICmicro Microcontroladores - Jos Carlos F

69

Instrues - ANDLW
ANDLW

W AND literal

Sintaxe:
[label] ANDLW k
Operandos: 0
k
255
Operao: :
(W) AND (k)==> (W)
Flags afectadas:
Z
Cdigo OP:
11 1001 kkkk kkkk
Descrio: Realiza a operao lgica AND entre o contedo do
registo W e k, guardando o resultado em W.
Exemplo:

ADDLW 0xC2

Antes: W = 0x17
Depois: W = 0xD9

Jan 20

PICmicro Microcontroladores - Jos Carlos F

70

Instrues - BCF
BCF

Apaga um bit

Sintaxe:
[label] BCF f,b
Operandos: 0
f
127, 0
b
7
Operao: :
0 ==> (f<b>)
Flags afectadas: nenhum
Cdigo OP:
01 00bb bfff ffff
Descrio: Apaga o bit b do registo f

Exemplo: :

BCF REG,7

Antes: REG = 0xC7


Depois: REG = 0x47

Jan 20

PICmicro Microcontroladores - Jos Carlos F

71

Instrues - BSF
BSF

Activa um bit

Sintaxe:
[label] BSF f,b
Operandos: 0
f
127, , 0
Operao: 1 ==> (f<b>)
Flags afectadas: nenhum
Cdigo OP:
01 01bb bfff

ffff

Descrio: Activa o bit b do registo f

Exemplo:

BSF REG,7

Antes: REG = 0x0A


Depois: REG = 0x8A

Jan 20

PICmicro Microcontroladores - Jos Carlos F

72

Instrues - BTFSC
BTFSC

Testa o bit e salta se for 0

Sintaxe:
[label] BTFSC f,d
Operandos: d
[0,1], 0
f
127
Operao:
Salto Se (f<b>) = 0
Flags afectadas: nenhum
Cdigo OP:
01 10bb bfff ffff
Descrio: Se o bit b do registo f 0, salta uma instruo e
continua com a execuo. Em caso de salto, ocupar dois ciclos
de relgio.
Exemplo:

Jan 20

BTFSC REG,6
GOTO NO_ES_0
SI_ES_0 instruo
NO_ES_0 instruo

PICmicro Microcontroladores - Jos Carlos F

73

Instrues - BTFSS
BTFSS

Testa o bit e salta se for 1

Sintaxe:
[label] BTFSS f,d
Operandos: d
[0,1], 0
f
127
Operao:
Salto Se (f<b>) = 1
Flags afectadas: nenhum
Cdigo OP:
01 11bb bfff ffff
Descrio: Se o bit b do registo f 1, salta uma instruo e
continua com a execuo. Em caso de salto, ocupar dois ciclos
de relgio.
Exemplo:

Jan 20

BTFSS REG,6
GOTO NO_ES_0
SI_ES_0 instruo
NO_ES_0 instruo

PICmicro Microcontroladores - Jos Carlos F

74

Instrues - CALL
CALL

Salta para subrotina

Sintaxe:
[label] CALL k
Operandos: 0
k
2047
Operao:
PC ==> pilha; k ==> PC
Flags afectadas: nenhum
Cdigo OP:
10 0kkk kkkk kkkk
Descrio: Salta para uma subrotina. A parte baixa de k
carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de
relgio.
Exemplo: ORIGEM CALL DESTINO
Antes: PC = ORIGEM
Depois: PC = DESTINO

Jan 20

PICmicro Microcontroladores - Jos Carlos F

75

Instrues - CLRF
CLRF

Apaga um registo

Sintaxe:
[label] CLRF f
Operandos: 0
f
127
Operao: :
0x00 ==> (f), 1 ==> Z
Flags afectadas: Z
Cdigo OP:
00 0001 1fff ffff
Descrio: O registo f carregado com 0x00. A flag Z activada.

Exemplo: :

CLRF REG

Antes: REG = 0x5A


Depois: REG = 0x00, Z = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

76

Instrues - CLRW
CLRW Apaga o registo W
Sintaxe:
[label] CLRW
Operandos: nenhum
Operao: :
0x00 ==> W, 1 ==> Z
Flags afectadas: Z
Cdigo OP:
00 0001 0xxx xxxx
Descrio: O registo de trabalho W carregado com 0x00. A flag Z
activada.
Exemplo: :

CLRW

Antes: W = 0x5A
Depois: W = 0x00, Z = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

77

Instrues - CLRWDT
CLRWDT

Apaga o WDT

Sintaxe:
[label] CLRWDT
Operandos: nenhum
Operao: 0x00 ==> WDT, 1 ==> /TO
1 ==> /PD
Flags afectadas:
/TO, /PD
Cdigo OP:
00 0000 0110 0100
Descrio: Esta instruo apaga tanto o WDT como o seu preescaler.
Os bits /TO e /PD do registo de estado so colocados a 1.
Exemplo: :
CLRWDT
Depois: Contador WDT = 0,
Preescales WDT = 0,
/TO = 1, /PD = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

78

Instrues - COMF
COMF

Complemento de f

Sintaxe:
[label] COMF f,d
Operandos: d
[0,1], 0
f
127
Operao: :
(/ f), 1 ==> (dest)
Flags afectadas: Z
Cdigo OP:
00 1001 dfff ffff
Descrio: O registo f complementado. A flag Z activada se o
resultado 0. Se d 0 o resultado armazenado em W. Se d 1
armazenado em f.
Exemplo: :

COMF REG,0

Antes: REG = 0x13


Depois: REG = 0x13, W = 0XEC

Jan 20

PICmicro Microcontroladores - Jos Carlos F

79

Instrues - DECF
DECF

Decremento de f

Sintaxe:
[label] DECF f,d
Operandos: d
[0,1], 0
f
127
Operao: :
(f ) - 1 ==> (dest)
Flags afectadas:
Z
Cdigo OP:
00 0011 dfff ffff
Descrio: Decrementa contedo de f. Se d 0, o resultado
armazenado em W, Se d 1 armazenado em f.

Exemplo: :

DECF CONT,1

Antes: CONT = 0x01, Z = 0


Depois: CONT = 0x00, Z = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

80

Instrues - DECFSZ
DECFSZ Decremento e salta se 0
Sintaxe:
[label] DECFSZ f,d
Operandos: d
[0,1], 0
f
127
Operao:
(f) -1 ==> d; Salto Se R=0
Flags afectadas: nenhum
Cdigo OP:
00 1011 dfff ffff
Descrio: Decrementa o contedo do registo f. Se d 0, o
resultado armazenado em W. Se d 1 armazenado em f. Se o
resultado 0 salta uma instruo e ocuparia 2 ciclos.
Exemplo:
DECFSZ REG,0
GOTO NO_ES_0
SI_ES_0 instruo
NO_ES_0 Salta instruo anterior

Jan 20

PICmicro Microcontroladores - Jos Carlos F

81

Instrues - GOTO
GOTO

Salto incondicional

Sintaxe:
[label] GOTO k
Operandos: 0
k
2047
Operao:
k ==> PC <8:0>
Flags afectadas: nenhum
Cdigo OP:
10 1kkk kkkk kkkk
Descrio: Trata-se de um salto incondicional. A parte baixa de k
carregada em PCL, e a alta em PCLATCH. Ocupa 2 ciclos de
relgio.
Exemplo: ORIGEM GOTO DESTINO
Antes: PC = ORIGEM
Depois: PC = DESTINO

Jan 20

PICmicro Microcontroladores - Jos Carlos F

82

Instrues - INCF
INCF

Incremento de f

Sintaxe:
[label] INCF f,d
Operandos: d
[0,1], 0
f
127
Operao: :
(f ) + 1 ==> (dest)
Flags afectadas:
Z
Cdigo OP:
00 1010 dfff ffff
Descrio: Incrementa o contedo de f. Se d 0, o resultado
armazenado em W. Se d 1 armazenado em f.
Exemplo: :

INCF CONT,1

Antes: CONT = 0xFF, Z = 0


Depois: CONT = 0x00, Z = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

83

Instrues - INCFSZ
INCFSZ Incremento e salta se 0
Sintaxe:
[label] INCFSZ f,d
Operandos: d
[0,1], 0
f
127
Operao:
(f) -1 ==> d; Salto Se R=0
Flags afectadas: nenhum
Cdigo OP:
00 1111 dfff ffff
Descrio: Incrementa o contedo do registo f. Se d 0, o
resultado armazenado em W. Se d 1 armazenado em f. Se o
resultado 0 salta a instruo seguinte, em cujo caso
demoraria 2 ciclos.
Exemplo:

INCFSC REG,0
GOTO NO_ES_0
SI_ES_0 instruo
NO_ES_0 Salta instruo anterior

Jan 20

PICmicro Microcontroladores - Jos Carlos F

84

Instrues - IORLW
IORLW

W OR literal

Sintaxe:
[label] IORLW k
Operandos: 0
k
255
Operao: :
(W) OR (k)==> (W)
Flags afectadas:
Z
Cdigo OP:
11 1000 kkkk kkkk
Descrio: Realiza a operao lgica OR entre o contedo do
registo W e k, guardando o resultado em W.
Exemplo:

IORLW 0x35

Antes: W = 0x9A
Depois: W = 0xBF

Jan 20

PICmicro Microcontroladores - Jos Carlos F

85

Instrues - IORLWF
IORWF

W OR F

Sintaxe:
[label] IORWF f,d
Operandos: d
[0,1], 0
f
127
Operao: (W) OR (f) ==> (dest)
Flags afectadas:
Z
Cdigo OP:
00 0100 dfff ffff
Descrio: Realiza a operao lgica OR entre os registos W e f.
Se d 0, o resultado armazenado em W. Se d 1 armazenado
em f.
Exemplo: :

IORWF REG,0

Antes: W = 0x91, REG = 0x13


Depois: W = 0x93, REG = 0x13

Jan 20

PICmicro Microcontroladores - Jos Carlos F

86

Instrues - MOVLW
MOVLW

Carregar literal em W

Sintaxe:
[label] MOVLW f
Operandos: 0
f
255
Operao:
(k) ==> (W)
Flags afectadas: nenhum
Cdigo OP:
11 00xx kkkk kkkk
Descrio: O literal k passa ao registo W.

Exemplo:

MOVLW 0x5A

Depois: REG = 0x4F, W = 0x5A

Jan 20

PICmicro Microcontroladores - Jos Carlos F

87

Instrues - MOVF
MOVF

Mover f para W

Sintaxe:
[label] MOVF f,d
Operandos: d
[0,1], 0
f
127
Operao:
(f) ==> (dest)
Flags afectadas: Z
Cdigo OP:
00 1000 dfff ffff
Descrio: O contedo do registo f movido para o destino
dependendo de d. Se d 0, o resultado armazenado em W. Se d
1 armazenado em f. Quando d 1 permite verificar o
registo, j que afecta a Z.
Exemplo:

MOVF REG,0

Depois: W = REG

Jan 20

PICmicro Microcontroladores - Jos Carlos F

88

Instrues - MOVWF
MOVWF

Mover W para f

Sintaxe:
[label] MOVWF f
Operandos: 0
f
127
Operao:
W ==> (f)
Flags afectadas: nenhum
Cdigo OP:
00 0000 1fff ffff
Descrio: O contedo do registo W passa para o registo f.

Exemplo:

MOVWF REG,0

Antes: REG = 0xFF, W = 0x4F


Depois: REG = 0x4F, W = 0x4F

Jan 20

PICmicro Microcontroladores - Jos Carlos F

89

Instrues - NOP
NOP

No operao

Sintaxe:
[label] NOP
Operandos: nenhum
Operao: No operar
Flags afectadas:
nenhum
Cdigo OP:
00 0000 0xx0

0000

Descrio: No realiza nenhuma operao. Na realidade consome um


ciclo de instruo sem fazer nada.

Exemplo:

Jan 20

NOP

PICmicro Microcontroladores - Jos Carlos F

90

Instrues - RETFIE
RETFIE regresso de

interrupo

Sintaxe:
[label] RETFIE
Operandos: nenhum
Operao: :
1 ==> GIE; TOS==>PC
Flags afectadas:
nenhum
Cdigo OP:
00 0000 0000 1001
Descrio: o PC carregado com o contedo de cima da pilha (TOS):
direco de regresso. Consome 2 ciclos. As interrupes voltam
a ser habilitadas.
Exemplo: :
RETFIE
Depois: PC = direco de regresso
GIE = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

91

Instrues - RETLW
RETLW

regresso de uma subrotina, com o valor em W

Sintaxe:
[label] RETLW k
Operandos: 0
k
255
Operao: :
(k)==> (W); TOS==>PC
Flags afectadas:
nenhum
Cdigo OP:
11 01xx kkkk kkkk
Descrio: O registo W carregado com a constante k. O PC
carregado com o contedo de cima da pilha (TOS): direco de
regresso. Consome 2 ciclos.
Exemplo: :
RETLW 0x37
Depois: PC = direco de regresso
W = 0x37

Jan 20

PICmicro Microcontroladores - Jos Carlos F

92

Instrues - RETURN
RETURN regresso de rotina
Sintaxe:
[label] RETURN
Operandos: nenhum
Operao: :
TOS ==> PC
Flags afectadas:
nenhum
Cdigo OP:
00 0000 0000

1000

Descrio: O PC carregado com o contedo de cima da pilha (TOS):


direco de regresso. Consome 2 ciclos.
Exemplo: :

RETURN

Depois: PC = direco de regresso

Jan 20

PICmicro Microcontroladores - Jos Carlos F

93

Instrues - RLF
RLF

roda f para a esquerda

Sintaxe:
[label] RLF f,d
Operandos: d
[0,1], 0
f
127
Operao: Rotao a a esquerda
Flags afectadas: C
Cdigo OP:
00 1101 dfff ffff
Descrio: O contedo de f rodado para a esquerda. O bit de
menor peso de f passa para o carry (C), e o carry colocado no
de maior peso. Se d 0, o resultado armazenado em W. Se d
1 armazenado em f.
Exemplo:

RLF REG,0

Antes: REG = 1110 0110,


C = 0
Depois: REG = 1110 0110,
W = 1100 1100, C = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

94

Instrues - RRF
RRF

roda f para a direita

Sintaxe:
[label] RRF f,d
Operandos: d
[0,1], 0
f
127
Operao: Rotao a a direita
Flags afectadas: C
Cdigo OP:
00 1100 dfff ffff
Descrio: O contedo de f rodado para a direita. O bit de menos
peso de f passa para o carry (C), e o carry colocado no de
maior peso. Se d 0, o resultado armazenado em W. Se d 1
armazenado em f.
Exemplo:

RRF REG,0

Antes: REG = 1110 0110,


C = 1
Depois: REG = 1110 0110,
W = 1111 0011, C = 0

Jan 20

PICmicro Microcontroladores - Jos Carlos F

95

Instrues - SLEEP
SLEEP Modo baixo consumo
Sintaxe:
[label] SLEEP
Operandos: nenhum
Operao: 0x00==>WDT, 1 ==> / TO
0 ==> WDT Preescaler, 0 ==> / PD
Flags afectadas:
/ PD, / TO
Cdigo OP:
00 0000 0110 0011
Descrio: O bit de energia colocado a 0, e a 1 o de descanso. O
WDT e o seu preescaler so apagados. o micro pra o oscilador,
ficando adormecido.
Exemplo: :

SLEEP
Preescales WDT = 0,
/TO = 1, /PD = 1

Jan 20

PICmicro Microcontroladores - Jos Carlos F

96

Instrues - SUBLW
SUBLW

Subtrai W ao literal

Sintaxe:
Operandos: 0
k
Operao:
( k )
Flags afectadas: Z,
Cdigo OP:
11
Descrio: Mediante
de W subtrado

Exemplos:

[label] SUBLW k
255
- (W) ==> (W)
C, DC
110x kkkk kkkk
o mtodo do complemento para dois o contedo
ao literal. O resultado armazenado em W.

SUBLW

0x02

Antes:W=1,C=?. Depois: W=1, C=1


Antes:W=2,C=?. Depois: W=0, C=1
Antes:W=3,C=?.Depois:W=FF,C=0
(o resultado negativo)

Jan 20

PICmicro Microcontroladores - Jos Carlos F

97

Instrues - SUBLWF
SUBWF

Subtrai W ao f

Sintaxe:
[label] SUBWF f,d
Operandos: d
[0,1], 0
f
127
Operao:
( f ) - (W )==> (dest)
Flags afectadas: C, DC, Z
Cdigo OP:
00 0010 dfff ffff
Descrio: Mediante o mtodo do complemento para dois o contedo
de W subtrado ao de f. Se d 0, o resultado armazenado em
W. Se d 1 armazenado em f.
Exemplos:
SUBWF REG,1
Antes: REG = 0x03, W = 0x02, C = ?
Depois:REG=0x01, W = 0x4F, C=1
Antes: REG = 0x02, W = 0x02, C = ?
Depois:REG=0x00, W =0x02, C= 1
Antes: REG= 0x01, W= 0x02, C= ?
Depois:REG=0xFF, W=0x02, C= 0
(Resultado negativo)

Jan 20

PICmicro Microcontroladores - Jos Carlos F

98

Instrues - SWAPF
SWAPF

Troca de f

Sintaxe:
[label] SWAPF f,d
Operandos: d
[0,1], 0
f
127
Operao: :
(f <3: 0>) (f <7:4>)
Flags afectadas:
nenhum
Cdigo OP:
00 1110 dfff ffff
Descrio: Os 4 bits de maior peso e os 4 de menor so trocados.
Se d 0, o resultado armazenado em W. Se d 1 armazenado
em f.
Exemplo:

SWAPF REG,0

Antes: REG = 0xA5


Depois: REG = 0xA5, W = 0x5A

Jan 20

PICmicro Microcontroladores - Jos Carlos F

99

Instrues - XORLW
XORLW

W XOR literal

Sintaxe:
[label] XORLW k
Operandos: 0
k
255
Operao: :
(W) XOR (k)==> (W)
Flags afectadas:
Z
Cdigo OP:
11 1010 kkkk kkkk
Descrio: Realiza a operao lgica XOR entre o contedo do
registo W e k, guardando o resultado em W.
Exemplo: :

XORLW 0xAF

Antes: W = 0xB5
Depois: W = 0x1A

Jan 20

PICmicro Microcontroladores - Jos Carlos F

100

Instrues - XORLW
XORWF

W XOR F

Sintaxe:
[label] XORWF f,d
Operandos: d
[0,1], 0
f
127
Operao: (W) XOR (f) ==> (dest)
Flags afectadas:
Z
Cdigo OP:
00 0110 dfff ffff
Descrio: Realiza a operao lgica XOR entre os registos W e f.
Se d 0, o resultado armazenado em W. Se d 1 armazenado
em f.
Exemplo: :

XORWF REG,0

Antes: W = 0xB5, REG = 0xAF


Depois: W = 0xB5, REG = 0x1A

Jan 20

PICmicro Microcontroladores - Jos Carlos F

101

Programa Walk.asm

Jan 20

PICmicro Microcontroladores - Jos Carlos F

102

Programa Walk.asm
;
;
;
;
;
;
;
;
;
;

WALK.ASM
To use this program connect four LEDs from each of RB0-RB7 to ground
via four 470 ohm resistors. The LEDs are illuminated one at time in
a to-and-fro pattern.
The illumination rate is more or less independent of the PIC clock
frequency and configuration although this program assumes an RC
oscillator. The program includes the __CONFIG, __IDLOCS and DE
directives (mostly just to show how they can be used). The program
can be used unchanged on any 16X8X device.
LIST
P=16F84
ERRORLEVEL
-302
;SUPPRESS BANK SELECTION MESSAGES
__CONFIG
3FF5H
;XT OSC, WATCHDOG
__IDLOCS
1234

;
PORTB
TRISB
OPTREG
STATUS
CARRY
RP0
MSB
;

Jan 20

EQU
EQU
EQU
EQU
EQU
EQU
EQU

6
86H
81H
3
0
5
3

;BIT POSITION OF LEFTMOST LED

PICmicro Microcontroladores - Jos Carlos F

103

Programa Walk.asm

LEFT

RIGHT

CLRF
BSF
CLRF
MOVLW
MOVWF
BCF
INCF
BCF
SLEEP
RLF
BTFSS
GOTO
SLEEP
RRF
BTFSS
GOTO
GOTO

PORTB
STATUS,RP0
TRISB
0AH
OPTREG
STATUS,RP0
PORTB,F
STATUS,CARRY
PORTB,F
PORTB,MSB
LEFT
PORTB,F
PORTB,0
RIGHT
LEFT

;ALL LEDS OFF


;SELECT REGISTER BANK 1
;SET PORTB TO ALL OUTPUTS
;ASSIGN PRESCALER (1:4) TO WDT
;SELECT REGISTER BANK 0
;TURN ON RIGHTMOST LED
;CLEAR CARRY
;WAIT FOR WDT TIMEOUT
;TURN ON LED TO LEFT
;REACHED LEFTMOST?
;LOOP IF NOT
;WAIT FOR WDT TIMEOUT
;TURN ON LED TO RIGHT
;REACHED RIGHTMOST?
;LOOP IF NOT
;START NEW CYCLE

;
ORG

2100H

DE
END

"Copyright (C) 1996 David Tait"

Jan 20

PICmicro Microcontroladores - Jos Carlos F

104

Porta Srie

Jan 20

As portas srie usam basicamente o mesmo


hardware que usaram inicialmente na altura do
primeiro PC em 1981, tendo sofrido apenas uma
actualizao significativa quando foi introduzido o
PS/2
So a melhor forma que um PIC tem de
comunicar com um PC
O uso da ficha de 9 pinos foi desenvolvida porque
a porta srie era colocada no mesmo adaptador
que a porta paralela e no havia espao para duas
fichas de 25 pinos
Podem ser endereadas at 4 portas srie num
PC, s duas que sero usadas para ligar a
dispositivos externos ao PC

PICmicro Microcontroladores - Jos Carlos F

105

Porta Srie - Pinout

Jan 20

Nome do
pino

25 pinos

9 pinos

Direco
I/O

TxD

RxD

Gnd

RTS

CTS

DTR

20

DSR

RI

22

DCD

PICmicro Microcontroladores - Jos Carlos F

106

Porta Srie

Jan 20

A porta srie usa o integrado 8250, ou as


actualizaes do PS/2, 16450 ou 16550.
Estes ltimos integrados possuem buffers
(memrias FIFO), que no so muito
usados e s so necessrios para
velocidades de transmisso elevadas (a
partir de 57.600 bps)
Estes integrados so UART (Universal
Asynchronous Receiver/Transmitter)

PICmicro Microcontroladores - Jos Carlos F

107

Porta Srie Offset das portas

Jan 20

Offset do endereo base

Nome do registo

Transmitter Holding
Register/Receiver Character
Buffer/LSB Divisor Latch

Interrupt Enable Register/MSB


Divisor Latch

Interrupt Identification Register

Line Control Register

Modem Control Register

Line Status Register

Modem Status Register

Scratchpad Register

PICmicro Microcontroladores - Jos Carlos F

108

Porta Srie

Jan 20

Velocidade=1,8432
Mhz/(16*Divisor )

Velocidade

Divisor

110 bps

0x0417

300 bps

0x0180

600 bps

0x00C0

1200 bps

0x0060

2400 bps

0x0030

9600 bps

0x000C

19200 bps

0x0006

115200 bps

0x0001

PICmicro Microcontroladores - Jos Carlos F

109

Circuitos

Jan 20

PICmicro Microcontroladores - Jos Carlos F

110

Circuitos

Jan 20

PICmicro Microcontroladores - Jos Carlos F

111

Bibliografia

Programming and customizing PICmicro


microcontrollers, second edition, Myke
Predko, McGraw Hill, 2001
Monte o seu Microbot
http://www.tanzilli.com/pbe/brasiliano/,
07/01/2003
http://www.microchip.com

Jan 20

PICmicro Microcontroladores - Jos Carlos F

112

Vous aimerez peut-être aussi