Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
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
Portas de I/O
PORTA
PORTB
Como
escrever
(gerar sadas)
ou ler (obter
entradas) da
Porta A ?
Registrador
PORTA
Acessando os Registradores...
Registradores na Memria
Exerccio
n
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
- Pin1 = high
- Pin1 = low
- Pin1 = low
- Pin1 = high
10
Interrupo
11
12
PIE1 / PIR1
INTCON
13
14
15
Exemplo
n
...
MOVLW
MOVWF
....
B'10100000'
INTCON
16
17
18
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
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
...
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
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
26
Timer 0 - Exemplo
l
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
// led=not led
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
Fosc/4
1, 2, 4 ou 8
Programador
Exemplo ?
31
Timer 1
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
ORG
Como Corrigir?
0x0004
BCF
MOVLW
MOVWF
MOVLW
MOVWF
...
...
RETFIE
PIR1, TMR1IF
0xDC
TMR1L
0x0B
TMR1H
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
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
...
52
bits
Permite
implementar uma
rede de
microcontroladores
53
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
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
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
PIC
0
-> 0V
1 -> +5V
n
PC (serial RS-232)
0
????
56
USART - Exemplo
l
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
57
USART - Exemplo
l
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.
61
62
Modo Compare ?
63
E o Modo PWM ?
64
65
66
CICLO ATIVO
PERODO
Como configurar a
frequncia e o ciclo
ativo do PWM para
valores desejados ?
67
FP W M
FOSC
1
4 p rescale T im er 2
Considerando:
Fosc = 4 MHz
Prescale = 1:1
PR2 = 49
68
69
70
...
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
72
Mdulo Comparador
n
Modos de operao
Mdulo Comparador
n
Modos de operao
73
Mdulo Comparador
...
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
75
Bibliografia Bsica
n
Datasheet do PIC16F628A/648A
Material da Disciplina
Plataforma SIGAA/UFC
76