Você está na página 1de 76

Microprocessadores

Prof. Arthur Braga

Tpicos
n

O PIC16F628A

Portas de I/O

Sistema de Interrupes

Mdulo TIMER 0

Mdulo TIMER 1

Mdulo TIMER 2

Mdulo USART

Mdulo CCP

Interfaceando o PIC

Comunicao Serial

Modo PWM

Modo Captura

Modo Comparao

Mdulo Comparador

Mdulo Tenso de Referncia

Portas de I/O

PORTA

PORTB

Como configurar as portas ?

Como
escrever
(gerar sadas)
ou ler (obter
entradas) da
Porta A ?
Registrador
PORTA

H outros registradores associados Porta A ?

O registrador CMCON controla o mdulo comparador !


O registrador VRCON o responsvel pelo controle
do mdulo referncia de tenso !

Acessando os Registradores...

Para usar PORTA para I/O


deve-se desabilitar o
mdulo comparador
CMCON = 00000111

Registradores na Memria

resistor pull-up externo

Ativa os pull-up internos do PORTB

Exerccio
n

Configurar o pino 13 do PIC (pino da porta B - RB7)


como sendo de sada e colocar ele em nvel baixo.
...
BANKSEL
MOVLW
MOVWF
BANKSEL
BCF
...

TRISB
B'01111111
TRISB

; Seleciona o banco 1.
; Configura o pino 7 para sada e
; todos os outros para entrada

PORTB
PORTB, RB7

; Seleciona o banco 1.
; Coloca o pino 7 em nvel baixo.

Interfaceando o
PIC

Interface com Dispositivos de Sada


Os pinos do microcontrolador PIC podem deixar passar (sink) ou fornecer
(source) correntes de 20 mA, o que significa que possvel ligar diretamente
um LED a um pino de sada desde que se limite a corrente utilizando-se
uma resistncia de 330 ohms.

Para ligar o LED (ON)


Para desligar o LED (OFF)

- Pin1 = high
- Pin1 = low

Para ligar o LED (ON)


Para desligar o LED (OFF)

- Pin1 = low
- Pin1 = high

Interface com Dispositivos de Sada


Muitos dispositivos de sada iro necessitar de um circuito de comutao por
transstor. Para a maioria dos casos, um par Darlington formado por dois
transstores o ideal. Contudo, um transstor como o BCX38B pode fornecer
correntes de at 800 mA.

Interface com Dispositivos de Entrada


Existe uma enorme variedade de interruptores disponveis, mas a maior
parte possui dois contatos que ou esto abertos (off) ou fechados (on).
Os dois circuitos apresentados abaixo podem ser usados com a maioria dos
interruptores.

Pin0 vai para 0V quando o interruptor est aberto


Pin0 vai para 5V quando o interruptor fechado

Pin0 vai para 5V quando o interruptor est aberto


Pin0 vai para 0V quando o interruptor fechado

Interface com Dispositivos de Entrada


Um LDR (Light Dependent Resistor) uma resistncia cujo valor depende
da luz recebida. Um dispositivo muito frequente, o ORP-12, possui uma
resistncia muito elevada no escuro, e uma resistncia baixa luz. A ligao
de uma LDR ao microcontrolador muito fcil, exigindo no entanto
calibrao.

10

Interface com Dispositivos de Entrada


Um termistor uma resistncia varivel com a temperatura. Na realidade
todas as resistncias variam com a temperatura, s que os termistores so
feitos para terem uma grande variao com a temperatura.

Interrupo

11

Sistema de Interrupo do PIC16F628

Sistema de Interrupo do PIC16F628

INTCON e PIE1 possuem bits para habilitar interrupes.

Tambm possui bits para sinalizar pedidos de interrupo


(pedidos das interrupes principais)
PIR1 sinalizar pedidos das interrupo de perifricos

12

Sistema de Interrupo do PIC16F628

Cada interrupo pode ser habilitada individualmente e independente das


demais. A lgica que utiliza os registradores INTCON, PIE1 e PIR1 no
sistema de interrupo do PIC16F628 dada da seguinte forma:

Sistema de Interrupo do PIC16F628


n

Lgica de interrupo do PIC16F628

PIE1 / PIR1

INTCON

13

Sistema de Interrupo do PIC16F628

Sistema de Interrupo do PIC16F628

14

Sistema de Interrupo do PIC16F628

Sistema de Interrupo do PIC16F628

15

Sistema de Interrupo do PIC16F628

Exemplo
n

Habilitar a interrupo de estouro do


Timer 0.

...
MOVLW
MOVWF
....

B'10100000'
INTCON

; Habilita a interrupo Global e


; de estouro do Timer 0

16

Sistema de Interrupo do PIC16F628

Sistema de Interrupo do PIC16F628

17

Sistema de Interrupo do PIC16F628

Sistema de Interrupo do PIC16F628

Ao tratar uma interrupo, salve


o contedo dos registradores W
e STATUS, pois estes podem ser
alterados dentro da rotina de
interrupo.

18

Sistema de Interrupo do PIC16F628


OBSERVAO:

Sistema de Interrupo do PIC16F628

Como todas as
interrupes
desviam o
programa para o
endereo 0x04, o
que acontece se
mais de uma
estiver habilitada
?

R.
Temos
que
descobrir
qual
evento disparou a
interrupo.
OBS.: Usa-se as
flags de sinalizao
para descobrir o
evento.

19

Sistema de Interrupo do PIC16F628

Temporizadores /
Contadores

20

Timer 0

Timer 0

define borda

21

Timer 0

Timer 0

22

Timer 0

Timer 0

23

Timer 0

Timer 0

24

Timer 0 - Exemplo
n

Configurar o Timer 0 para trabalhar com o clock interno e com


um prescaler de 1:256. Desabilitando os resistores de pullupda porta B.

...
BANKSEL
MOVLW
MOVWF
...

OPTION_REG
B'10000111'
OPTION_REG

; Seleciona o banco 1.
; Configura o Timer 0 e
; desativa os pull-ups da porta B

Timer 0 - Exemplo
l

Pisca LED
1s aceso e 1s apagado.
l Utilizar o Timer 0 para contar o tempo.
l

25

Timer 0 - Exemplo
Pisca LED

...
TEMPO EQU
CONTA EQU
ORG

ORG

0x0000
GOTO

0x20
0x21

INICIO

0x0004
{Rotina de tratamento de
interrupo do Timer 0.
Vamos escrever esta parte
depois.}

Timer 0 - Exemplo
l

Pisca LED - Continuao

INICIO:

FIM:
END

BANKSEL
MOVLW
MOVWF
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
MOVLW
MOVWF
MOVWF
GOTO

TRISB
B'01111111'
TRISB
B'10000111'
OPTION_REG
PORTB
B'10100000'
INTCON
D'15'
CONTA
TEMPO
FIM

FINT = Fosc / 4 / Pr escale /(256 TMR0)


FINT = 4Mhz / 4 / 256 / 256
FINT = 15, 258Hz
TINT = 0, 0655s

TINT = 0, 0655s *15 = 0,983s 1s

26

Timer 0 - Exemplo
l

Pisca LED - Continuao

ORG

0x0004
{Rotina de tratamento de
interrupo do Timer 0.}
BCF
INTCON,T0IF
DECFSZ
TEMPO,F
RETFIE
MOVFW
CONTA
MOVWF
TEMPO
MOVLW
B'10000000'
XORWF
PORTB,F
RETFIE

// apaga flag da interrupo


// decrementa F(=tempo) e testa se 0

// led=not led

H alguma diferena do TIMER0 para o TIMER1 ?

Timer 1

27

Timer 1

Timer 1

28

Timer 1

Timer 1

29

Timer 1

Timer 1

30

Timer 1

Sistema de Interrupo

Timer 1

F INT = C LO CK / Pr escale /(65536 < TM R1 H : TM R1 L > )

Externo ou
Fosc/4

1, 2, 4 ou 8

Programador

Exemplo ?

31

Timer 1
l

Configurar o Timer 1 para gerar


interrupo a uma frequncia de 2Hz.
l

Fosc=4MHz

...
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
MOVLW
MOVWF
....

B00110101'
T1CON
PIE1
B00000001
PIE1
B11000000
INTCON
TMR1L
0xDC
TMR1L
0x0B
TMR1H

; Configura o Timer 1
; Seleciona banco 1
; Habilita a int. de Timer 1 e
; desabilita TODAS as outras.

; Seleciona banco 0
; Carrega o incio da contagem do
; Timer 1 com 3036 (0BDCh em HEX)

Timer 1
l

O que vai ocorrer aps o primeiro


estouro?
l

ORG

Como Corrigir?
0x0004
BCF
MOVLW
MOVWF
MOVLW
MOVWF
...
...
RETFIE

PIR1, TMR1IF
0xDC
TMR1L
0x0B
TMR1H

; Carrega o valor do Timer 1


; com 3036 (0BDCh em HEX)

E o TIMER2 ?

32

Timer 2

Timer 2

33

Timer 2

Timer 2

34

Timer 2

Timer 2

Sistema de Interrupo

35

Timer 2

FRMULA:
t = ciclo de mquina * prescaler * potscaler * PR2
ciclo de mquina = 4 / Fosc

Timer 2
FRMULA:
t = ciclo de mquina * prescaler * potscaler * PR2
ciclo de mquina = 4 / Fosc
EXEMPLO:
Usando um clock de 12Mhz, prescaler 1:16 e potscaler 1:16.
t = ( 4 / 12) * 16 * 16 * 255 = 21760us = 21,7ms

36

Comunicao Serial

Cabo com 18 condutores

curta

Cabo com 2 ou 3 condutores

37

A comunicao
ocorre apenas em
uma direo ?

Como controlado o fluxo de dados ?

38

39

40

41

42

O MODEM (MOdulador / DEModulador) uma porta serial que transforma dados digitais
em sinais analgicos. O meio fsico antigamente era a linha telefnica. Existem tcnicas
para compresso de dados do sinal visando o aumento na velocidade de transmisso.

43

No PIC ?

Mdulo USART
(Universal Synchronous / Asynchronous Receiver / Transmitter)

44

USART

USART
ASSNCRONO

SNCRONO

COMO CONFIGURAR ESSES MODOS DE COMUNICAO ?


Utiliza-se os seguintes registradores para CONFIGURAR a comunicao:
n
n
n

TXSTA registrador de controle do mdulo transmissor da USART.


RCSTA registrador de controle do mdulo receptor da USART.
SPBRG registrador utilizado para gerar a taxa de transferncia.
E PARA TRANSMITIR / RECEBER ?

45

USART
ASSNCRONO

SNCRONO

Utiliza-se os seguintes registradores para TRANSMITIR / RECEBER:


n
n

TXREG registrador de transmisso de dados (armazena o dado a ser


transmitido).
RCREG registrador de recepo de dados (armazena o dado recebido).

USART

46

USART

USART - TXSTA

47

USART - TXSTA

USART - TXSTA

E para configurar a recepo ?

48

USART - RCSTA

USART - RCSTA

49

USART - RCSTA

E para configurar baud rate ?

USART - SPBRG

Para comunicao assncrona:

50

USART

Como implementar a comunicao Assncrona ?

USART
(Modo Assncrono)

51

USART Modo Assncrono

USART Modo Assncrono

...

52

USART Modo Assncrono

USART Modo Assncrono

bits
Permite
implementar uma
rede de
microcontroladores

53

USART Deteco de Endereos

USART Deteco de Endereos


TX9

RSR<8>

=1

Byte = ?

ADEN = 1

ADEN = 1

ADEN = 1

ADEN = 1

RX9

RX9

RX9

RX9

=1

Ender = 4

=1

Ender = 5

=1

Ender = 6

=1

Ender = 7

54

USART Deteco de Endereos


TX9

RSR<8>

=1

Byte = 5

ADEN = 1

ADEN = 1

ADEN = 1

ADEN = 1

RX9

RX9

RX9

RX9

=1

Ender = 4

=1

Ender = 5

=1

Ender = 6

=1

Ender = 7

USART Deteco de Endereos


TX9

RSR<8>

=0

Byte = N

ADEN = 1

ADEN = 0

ADEN = 1

ADEN = 1

RX9

RX9

RX9

RX9

=1

Ender = 4

=1

Ender = 5

=1

Ender = 6

=1

Ender = 7

55

USART Espec. Eltricas


n

PIC
0

-> 0V
1 -> +5V
n

PC (serial RS-232)
0

-> +5V a +15V


1 -> -5V a -15V

????

USART Espec. Eltricas

56

USART Espec. Eltricas

USART - Exemplo
l

Enviar o contedo da porta A para o


computador por comunicao serial (RS-232)
ao ser gerada uma borda de subida no pino
RB0 (ao pressionarmos um boto ligado a
esse pino).
5V

U1
16
15
4

RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
RA5/MCLR

RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/T0CKI/CMP2

RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI
PIC16F628A

17
18
1
2
3
6
7
8
9
10
11
12
13

R1
1k

RXD
VT52, VT100, ANSI

TXD
RTS
CTS

Xmodem, Ymodem, Zmodem

57

USART - Exemplo
l

Enviar o contedo da porta A para o


computador por comunicao serial (RS-232)
ao ser gerada uma borda de subida no pino
RB0 (ao pressionarmos um boto ligado a
esse pino).
l 9600 bps, 8 bits, sem paridade e 1 stop-bit.
l Fosc = 4MHz

USART - Exemplo
...
ORG

ORG

0x0000
GOTO LHB
0x0004
DEPOIS

LHB:
BANKSEL
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
MOVLW
MOVWF

TXSTA
B00100110'
TXSTA
D25
SPBRG
B00010000
PIE1
B11010000
INTCON
OPTION_REG, 6
0xFF
TRISA

; Seleciona banco 1
; Configura o 8 bits
; Configura 9600
; Habilita a int. de TX e INTE
; desabilita TODAS as
; outras
; Configura borda de RB0
; Porta A como entrada.

58

USART - Exemplo
BANKSEL
MOVLW
MOVWF

RCSTA
B10000000'
RCSTA

GOTO

FIM

; Seleciona banco 0
; Habilita a USART

FIM:

E a rotina de Interrupo ?

USART - Exemplo
ORG

0x0004
BTFSC
GOTO
BTFSC
GOTO
RETFIE

PIR1, TXIF
Trata_TX
INTCON, INTF
Trata_INT

Trata_INT:
BCF
MOVF
MOVWF
BCF
RETFIE

INTCON, INTF
PORTA, 0
TXREG
INTCON, INTE

Trata_TX:
BCF
BSF
RETFIE

PIR1, TXIF
INTCON, INTE

59

Mdulo CCP
(Capture, Compare, PWM)

Mdulo CCP

60

Mdulo CCP
Registrador CCPR1L
O registrador CCPR1L utilizado para armazenar os 8 bits menos
significativos a serem utilizados nos modos Capture / Compare.
No modo PWM utilizado para armazenar os 8 bits mais significativos
utilizados na determinao do ciclo ativo do sinal.

Registrador CCPR1H
O registrador CCPR1H utilizado para armazenar os 8 bits mais significativos
a serem utilizados nos modos Capture / Compare.
No modo PWM utilizado como registrador escravo, no qual copiado o
contedo do registrador CCPR1L.

Mdulo CCP Modo Capture

61

Mdulo CCP Modo Capture

Mdulo CCP Modo Capture

62

Mdulo CCP Modo Capture

Modo Compare ?

Mdulo CCP Modo Compare

63

Mdulo CCP Modo Compare

Mdulo CCP Modo Compare

E o Modo PWM ?

64

Mdulo CCP Modo PWM


Este o modo de funcionamento mais utilizado do mdulo CCP,
podendo ser utilizado em diversas aplicaes, como, por exemplo,
conversor digital / analgico, fontes chaveadas, nobreaks, etc. O PWM,
conhecido como Modulao por Largura de Pulso, um sinal digital com
frequncia fixa, mas com largura de pulso (ciclo ativo) varivel.

Mdulo CCP Modo PWM

65

Mdulo CCP Modo PWM

Mdulo CCP Modo PWM

66

Mdulo CCP Modo PWM

CICLO ATIVO

PERODO

Como configurar a
frequncia e o ciclo
ativo do PWM para
valores desejados ?

Mdulo CCP Modo PWM

67

Mdulo CCP Modo PWM


EXEMPLO
FP W M = 2 0 K H z
PR 2 =

FP W M

FOSC
1
4 p rescale T im er 2

Considerando:
Fosc = 4 MHz
Prescale = 1:1

PR2 = 49

De quanto ser o tempo do ciclo ativo ?

Mdulo CCP Modo PWM

68

Mdulo CCP Modo PWM

Mdulo CCP Modo PWM

69

Mdulo CCP Modo PWM


Passos para a configurao do PWM:
1. Calcular o valor que deve ser colocado em PR2, e carregar o PR2 com
este valor
2. Calcular e configurar o valor do Duty Cycle (Valores para CCPR1L e os
bits 4 e 5 de CCP1CON). Clculo da resoluo.
3. Colocar o pino do mdulo CCPx como sada (Pino RB3 para o
16F628A)
4. Selecionar o prescale do Timer 2 no registrador T2CON. Habilite o
Timer 2
5. Configure o mdulo CCP para PWM

Mdulo CCP Modo PWM


n

Configurar o PWM para frequncia de 20KHz.


Fosc = 4MHz
D = 25%

70

Mdulo CCP Modo PWM


n

Configurar o PWM para frequncia de 20KHz.


Fosc = 4MHz
D = 25%

...
BANKSEL
BCF
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
...

TRISB
TRISB, 3
D49
PR2
CCP1CON
B00101111
CCP1CON
B00000100
T2CON
B00001100
CCPR1L

; Seleciona banco 1.
; Coloca o Pino do CCP1 para sada.
; Carrega o PR2.
; Seleciona banco 0.
; Configura o modo de operao do
; CCP e os dois bits do duty cycle.
; Configura o Prescale do Timer 2.
; Configura o duty cycle

Mdulo
Comparador

71

Mdulo Comparador

O PIC16F628A
possui dois circuitos
comparadores
As entradas desses
comparadores so
multiplexadas com
os pinos RA3:RA0
Como trabalhar
com esses
comparadores ?

Mdulo Comparador

bits 2-0

CM2:CM0 Modos de operao

72

Mdulo Comparador
n

Modos de operao

Mdulo Comparador
n

Modos de operao

73

Mdulo Comparador

A flag de sinalizao de interrupo do mdulo comparador, o bit


CMIF (PIR1<6>), setado sempre que ocorre uma mudana de nvel
lgico na sada de um dos comparadores.
No esquea que a flag de sinalizao de interrupo, CMIF,
precisa ser apagada dentro da rotina de interrupo.

Exemplo - Mdulo Comparador


n

Configurar o PIC para identificar o semiciclo de


uma senide qualquer.

...
BANKSEL
BSF
BSF
BSF
BSF
BSF
BANKSEL
MOVLW
MOVWF
...

TRISA
TRISA, 1
TRISA, 2
PIE1, CMIE
INTCON, GIE
INTCON, PEIE
CMCON
B00000101
CMCON

; Seleciona banco 1.
; Coloca os Pinos RA1/AN1 e RA2/AN2
; para entrada.
; Habilita interrup. Mdulo Comparador

; Seleciona banco 0.
; Configura o modo de operao 5 do
; comparador.

74

Mdulo Tenso
de Referncia

Mdulo Referncia de Tenso


Este mdulo fornece 16 nveis diferentes de tenso que podem estar
disponveis no pino RA2/AN2 ou podem ser aplicados
simultaneamente nas entradas Vin+ (no-inversora) de ambos os
comparadores, quando o mdulo comparador estiver operando no
modo 2.

Funcionamento do Mdulo Referncia e Tenso ?

75

Bibliografia Bsica
n

Zanco, Wagner da Silva. Microcontroladores PIC


16F628A/648A uma abordagem prtica e objetiva,
Editora rica, 2005.

Datasheet do PIC16F628A/648A

Material da Disciplina
Plataforma SIGAA/UFC

76