Você está na página 1de 76

Microprocessadores

Prof. Arthur Braga

Tpicos
n O PIC16F628A
Portas de I/O
n Interfaceando o PIC

Sistema de Interrupes
Mdulo TIMER 0
Mdulo TIMER 1
Mdulo TIMER 2
Mdulo USART
n Comunicao Serial
Mdulo CCP
n Modo PWM
n Modo Captura
n Modo Comparao

Mdulo Comparador
Mdulo Tenso de Referncia

1
Portas de I/O

PORTA

PORTB

Como configurar as portas ?

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

H outros registradores associados Porta A ?

4
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

5
Registradores na Memria

6
resistor pull-up externo

Ativa os pull-up internos do PORTB

7
Exerccio

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


como sendo de sada e colocar ele em nvel baixo.

...
BANKSEL TRISB ; Seleciona o banco 1.
? MOVLW B'01111111 ; Configura o pino 7 para sada e
MOVWF TRISB ; todos os outros para entrada

BANKSEL PORTB ; Seleciona o banco 1.


BCF PORTB, RB7 ; Coloca o pino 7 em nvel baixo.
?
...

Interfaceando o
PIC

8
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) - Pin1 = high


Para desligar o LED (OFF) - Pin1 = low

Para ligar o LED (ON) - Pin1 = low


Para desligar o LED (OFF) - 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.

9
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 B'10100000' ; Habilita a interrupo Global e
MOVWF INTCON ; 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 R. Temos que


interrupes descobrir qual
desviam o evento disparou a
programa para o interrupo.
endereo 0x04, o
que acontece se
mais de uma OBS.: Usa-se as
estiver habilitada 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 pull-
upda porta B.

...
BANKSEL OPTION_REG ; Seleciona o banco 1.
MOVLW B'10000111' ; Configura o Timer 0 e
MOVWF OPTION_REG ; desativa os pull-ups da porta B
...

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

25
Timer 0 - Exemplo
l Pisca LED
...
TEMPO EQU 0x20
CONTA EQU 0x21

ORG 0x0000
GOTO INICIO

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

Timer 0 - Exemplo
l Pisca LED - Continuao
INICIO:
BANKSEL TRISB
MOVLW B'01111111'
MOVWF TRISB
MOVLW B'10000111'
MOVWF OPTION_REG
BANKSEL PORTB FINT = Fosc / 4 / Pr escale /(256 TMR0)
MOVLW B'10100000' FINT = 4Mhz / 4 / 256 / 256
MOVWF INTCON
MOVLW D'15' FINT = 15, 258Hz
MOVWF CONTA TINT = 0, 0655s
MOVWF TEMPO
FIM: GOTO FIM TINT = 0, 0655s *15 = 0,983s 1s
END

26
Timer 0 - Exemplo
l Pisca LED - Continuao
ORG 0x0004
{Rotina de tratamento de
interrupo do Timer 0.}
BCF INTCON,T0IF // apaga flag da interrupo
DECFSZ TEMPO,F // decrementa F(=tempo) e testa se 0
RETFIE
MOVFW CONTA
MOVWF TEMPO
MOVLW B'10000000'
XORWF PORTB,F // led=not led
RETFIE

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 1, 2, 4 ou 8 Programador
Fosc/4

Exemplo ?

31
Timer 1
l Configurar o Timer 1 para gerar
interrupo a uma frequncia de 2Hz.
l Fosc=4MHz
...
MOVLW B00110101' ; Configura o Timer 1
MOVWF T1CON
BANKSEL PIE1 ; Seleciona banco 1
MOVLW B00000001 ; Habilita a int. de Timer 1 e
MOVWF PIE1 ; desabilita TODAS as outras.
MOVLW B11000000
MOVWF INTCON
BANKSEL TMR1L ; Seleciona banco 0
MOVLW 0xDC ; Carrega o incio da contagem do
MOVWF TMR1L ; Timer 1 com 3036 (0BDCh em HEX)
MOVLW 0x0B
MOVWF TMR1H
....

Timer 1
l O que vai ocorrer aps o primeiro
estouro?
l Como Corrigir?

ORG 0x0004
BCF PIR1, TMR1IF
MOVLW 0xDC ; Carrega o valor do Timer 1
MOVWF TMR1L ; com 3036 (0BDCh em HEX)
MOVLW 0x0B
MOVWF TMR1H
...
...
RETFIE

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 TXSTA registrador de controle do mdulo transmissor da USART.


n RCSTA registrador de controle do mdulo receptor da USART.
n 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 TXREG registrador de transmisso de dados (armazena o dado a ser


transmitido).
n 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 =1 RSR<8>
Byte = ?

ADEN = 1 ADEN = 1 ADEN = 1 ADEN = 1


RX9 =1 RX9 =1 RX9 =1 RX9 =1
Ender = 4 Ender = 5 Ender = 6 Ender = 7

54
USART Deteco de Endereos
TX9 =1 RSR<8>
Byte = 5

ADEN = 1 ADEN = 1 ADEN = 1 ADEN = 1


RX9 =1 RX9 =1 RX9 =1 RX9 =1
Ender = 4 Ender = 5 Ender = 6 Ender = 7

USART Deteco de Endereos


TX9 =0 RSR<8>
Byte = N

ADEN = 1 ADEN = 0 ADEN = 1 ADEN = 1


RX9 =1 RX9 =1 RX9 =1 RX9 =1
Ender = 4 Ender = 5 Ender = 6 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 17
RA7/OSC1/CLKIN RA0/AN0
15 18
RA6/OSC2/CLKOUT RA1/AN1
1
RA2/AN2/VREF
4 RA5/MCLR RA3/AN3/CMP1 2 R1
3 1k
RA4/T0CKI/CMP2

RB0/INT 6
7
RB1/RX/DT
8
RB2/TX/CK
9
RB3/CCP1
RB4 10
11
RB5
12
RB6/T1OSO/T1CKI RXD
13 VT52, VT100, ANSI
RB7/T1OSI
TXD
PIC16F628A
RTS
Xmodem, Ymodem, Zmodem
CTS

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 0x0000
GOTO LHB

ORG 0x0004
DEPOIS
LHB:
BANKSEL TXSTA ; Seleciona banco 1
MOVLW B00100110' ; Configura o 8 bits
MOVWF TXSTA
MOVLW D25 ; Configura 9600
MOVWF SPBRG
MOVLW B00010000 ; Habilita a int. de TX e INTE
MOVWF PIE1 ; desabilita TODAS as
MOVLW B11010000 ; outras
MOVWF INTCON
BSF OPTION_REG, 6 ; Configura borda de RB0
MOVLW 0xFF ; Porta A como entrada.
MOVWF TRISA

58
USART - Exemplo
BANKSEL RCSTA ; Seleciona banco 0
MOVLW B10000000' ; Habilita a USART
MOVWF RCSTA
FIM:
GOTO FIM

E a rotina de Interrupo ?

USART - Exemplo
ORG 0x0004
BTFSC PIR1, TXIF
GOTO Trata_TX
BTFSC INTCON, INTF
GOTO Trata_INT
RETFIE

Trata_INT:
BCF INTCON, INTF
MOVF PORTA, 0
MOVWF TXREG
BCF INTCON, INTE
RETFIE

Trata_TX:
BCF PIR1, TXIF
BSF INTCON, INTE
RETFIE

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

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

Mdulo CCP Modo PWM

67
Mdulo CCP Modo PWM
EXEMPLO
Considerando:
FP W M = 2 0 K H z
Fosc = 4 MHz
FOSC
PR 2 = 1 Prescale = 1:1
FP W M 4 p rescale T im er 2

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 TRISB ; Seleciona banco 1.
BCF TRISB, 3 ; Coloca o Pino do CCP1 para sada.
MOVLW D49 ; Carrega o PR2.
MOVWF PR2
BANKSEL CCP1CON ; Seleciona banco 0.
MOVLW B00101111 ; Configura o modo de operao do
MOVWF CCP1CON ; CCP e os dois bits do duty cycle.
MOVLW B00000100 ; Configura o Prescale do Timer 2.
MOVWF T2CON
MOVLW B00001100 ; Configura o duty cycle
MOVWF CCPR1L
...

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 TRISA ; Seleciona banco 1.
BSF TRISA, 1 ; Coloca os Pinos RA1/AN1 e RA2/AN2
BSF TRISA, 2 ; para entrada.
BSF PIE1, CMIE ; Habilita interrup. Mdulo Comparador
BSF INTCON, GIE
BSF INTCON, PEIE
BANKSEL CMCON ; Seleciona banco 0.
MOVLW B00000101 ; Configura o modo de operao 5 do
MOVWF CMCON ; 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.
n Datasheet do PIC16F628A/648A

Material da Disciplina
Plataforma SIGAA/UFC

76

Você também pode gostar