Escolar Documentos
Profissional Documentos
Cultura Documentos
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
2
3
Como
escrever
(gerar sadas)
ou ler (obter
entradas) da
Porta A ?
Registrador
PORTA
4
O registrador CMCON controla o mdulo comparador !
O registrador VRCON o responsvel pelo controle
do mdulo referncia de tenso !
Acessando os Registradores...
5
Registradores na Memria
6
resistor pull-up externo
7
Exerccio
...
BANKSEL TRISB ; Seleciona o banco 1.
? MOVLW B'01111111 ; Configura o pino 7 para sada e
MOVWF TRISB ; todos os outros para entrada
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.
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.
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
12
Sistema de Interrupo do PIC16F628
13
Sistema de Interrupo do PIC16F628
14
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
17
Sistema de Interrupo do PIC16F628
18
Sistema de Interrupo do PIC16F628
OBSERVAO:
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
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
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:
Timer 2
FRMULA:
EXEMPLO:
36
Comunicao Serial
curta
37
A comunicao
ocorre apenas em
uma direo ?
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
45
USART
ASSNCRONO SNCRONO
USART
46
USART
USART - TXSTA
47
USART - TXSTA
USART - TXSTA
48
USART - RCSTA
USART - RCSTA
49
USART - RCSTA
USART - SPBRG
50
USART
USART
(Modo Assncrono)
51
USART Modo Assncrono
...
52
USART Modo Assncrono
bits
Permite
implementar uma
rede de
microcontroladores
53
USART Deteco de Endereos
54
USART Deteco de Endereos
TX9 =1 RSR<8>
Byte = 5
55
USART Espec. Eltricas
n PIC
0 -> 0V
1 -> +5V
n PC (serial RS-232)
0 -> +5V a +15V
1 -> -5V a -15V
????
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
Registrador CCPR1H
61
Mdulo CCP Modo Capture
62
Mdulo CCP Modo Capture
Modo Compare ?
63
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.
65
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 ?
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
68
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
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
72
Mdulo Comparador
n Modos de operao
Mdulo Comparador
n Modos de operao
73
Mdulo Comparador
74
Mdulo Tenso
de Referncia
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