Escolar Documentos
Profissional Documentos
Cultura Documentos
1) Displays de 7 segmentos
Na Figura 1 é mostrado como os displays estão ligados no módulo didático. Ligue os jumpers e
as chaves conforme indicado na Tabela a seguir:
Dispositivo sob teste Jumper ON Chaves ON Jumper OFF Chaves OFF
Displays de 7seg J3 – B CH4(1-8), CH6(1-4) J4 As demais chaves
5V
10k RB3
RA5
RB2
PIC16F877A
RE2
RB1
RE1 RB0
RE0
UMIL CENT DEZE UNID 330 RC3
a a RD7
b RD6 RC2
f b c RD5
g d RD4 RC1
e RD3
e c f RC0
g RD2
d p RD1
RD0
DP-4 DP-3 DP-2 DP-1
Figura 1 - Circuito esquemático de conexões de PIC com os Displays de 7 segmentos.
RB1
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
RD2
RB0
RD3
RD4 RC3 on 0 = +
RD5 RC2 1 2 3 -
RD6 RC1 4 5 6 ×
RS=0, para envio de comando RS=1, para envio de caractere
RW=0, operação de escrita RW=1, operação de leitura RD7 RC0 7 8 9 ÷
E =1, habilita operação
O esquemático mostra uma conexão simplificada do teclado básico e LCD com o µC PIC. Neste
laboratório, o teclado básico será utilizado para digitar números em BCD e escolher operações
aritméticas básicas. No LCD serão mostradas as informações de mensagens, dados e resultados
das operações.
Dispositivos sob teste Jumper Chaves ON (para cima)
Display LCD J3 off, J4 - B CH4(1 – 8), CH6(1 – 2)
Teclado básico 4x4 CH3(1– 4), CH5(1– 4)
O módulo didático PIC-2377 possui um LCD 16x2, compatível com controlador HD44780. Os
pinos: RE0 e RE1, do µC, são utilizados para controlar o envio de informação para o LCD.
No LCD podem ser mostradas duas linhas de caracteres, sendo que os códigos ASCII dos
caracteres a serem mostrados, devem estar armazenados em determinados endereços de uma
RAM do LCD. As faixas de endereços que correspondem a cada linha são: 0x80 – 0x8E para a
linha1 e 0xC0 – 0xCF para a linha 2.
Exemplo:
movlw 0x80
Posiciona o apontador do LCD no endereço 0x80 (1° endereço da linha 1)
call EnviaCmdLCD
movlw ‘A’ Mostra o caractere “A” no começo da linha 1. Além disso, o apontador do LCD
call EnviaCarLCD é auto incrementado em 1, apontando neste caso, para o endereço 0x81
8
0 M
pino U
1 M
RA4/T0CKI
X U Reg TMR0
1 Prescalador 8 bits: X
2,4,8,16,32,64,128,256 0
T0SE
T0CS INTCON<T0IF>=1
PS2:PS0 PSA se TMR0 transborda
Sempre que acontecer um transbordo de TMR0 (255 para 0), é ativado o flag (sinal) T0IF, sinalizando um
evento de interrupção. Mas, se INTCON<T0IE> = 1, será disparado uma interrupção por transbordo de
TMR0.
O prescalador (prescaler) é um divisor de frequência programável, utilizado para reduzir a frequência do
sinal de clock aplicado ao Timer 0.
OPTION_REG Registrador usado para definir a fonte de clock de TMR0 e valor de prescaler
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU’ INTDEG T0CS T0SE PSA PS2 PS1 PS0
bit 7 0: clock/4 0: presc-T0 bit 0
PS2:PS1:PS0 = 000, 001, 010, 011, 100, 101, 110, 111, define os seguintes valores de prescaler: 2, 4, 8,
16, 32, 64, 128, 256, respectivamente.
INTCON Registrador usado para definir a fonte e os flags de interrupção
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
bit 7 bit 0
INTCON<GIE> bit de habilitação global de interrupções. Se é setado, habilitará as interrupções por
transbordo de TMR0.
4) Temporizador Timer-1 (TMR1)
TMR1 é um registrador contador binário de 16 bits, composta de 2 registradores de 8 bits: TMR1H:TMR1L.
Pode ser utilizado de 02 formas:
c) Como contador: Para contagem de eventos externos. Nesse caso, a entrada de clock do registrador é
aplicada por meio dos pinos RC0/T1OSO/T1CKI ou RC1/T1OSI/CCP2 do µC PIC.
d) Como Temporizador: Quando a entrada de clock do registrador é proveniente do clock do sistema
(FCLOCK / 4).
FOSC/4 PIE1<TMR1IE>=1 Þ TMR1 dispara interrupção
b0
0
M TMR1 – 16b
Prescalador:
pino 0 U
M 1 1,2,4,8 TMR1H TMR1L
RC0 X
U
1 X
RC1 b0
T1CKPS1:T1CKPS0 PIR1<TMR1IF>=1
TMR1CS TMR1ON se TMR1 transborda
T1OSCEN
Sempre que acontecer um transbordo de TMR1 (de 65535 para 0), é ativado o flag PIR1<TMR1IF>,
sinalizando um evento de interrupção. Mas, se PIE1<TMR1IE> = 1, será disparado uma interrupção por
transbordo de TMR1.
T1CON Registrador usado para definir a fonte de clock de TMR1 e valor de prescaler
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
---- ---- T1CKPS1 T1CKPS0 T1OSCEN T1SYNC’ TMR1CS TMR1ON
bit 7 0: clock/4 bit 0
T1CKPS1:T1CKPS0 = 00, 01, 10, 11, define os seguintes valores de prescaler: 1, 2, 4 e 8, respectivamente.
INTCON Registrador usado para definir a fonte e os flags de interrupção
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
bit 7 bit 0
Setando os bits INTCON<GIE:PEIE>=11, fica habilitada as interrupções por transbordo de TMR1.
5) Configuração da frequência com que ocorrem as interrupções por transbordo de TMR0
Considerando um FCLOCK = 16MHz, sem prescalador, cada incremento de TMR0 será realizado em
intervalos de tempo definidos por (4×TCLOCK) = (250ns). Portanto, um ciclo completo de 256 incrementos
será realizado em (250ns)×256 = 64 µs.
Considerando um FCLOCK = 16MHz e um prescalador = 256, cada incremento de TMR0 será realizado em
intervalos de tempo definidos por (4×TCLOCK)×256 = (250ns)×256 = 64 µs. Então, um ciclo completo de
256 incrementos será realizado em (64 µs)×256 = 16,3844 ms.
Assim, através do transbordo de TMR0 será possível disparar interrupções em períodos máximos de 16,384
ms. Portanto, para executar eventos periódicos em intervalos de tempo maiores, será necessário disparar
interrupção várias vezes e, através de um contador, acumular o tempo, cada vez que TMR0 disparar
interrupção.
Exemplo: Uso de TMR0 para disparar eventos periódicos cada segundo. Considere FCLOCK = 16MHz e
prescalador = 256.
(Nº de passos de TMR0)×(FATOR)×64 µs = 1 s.
Solução: cada 125 interrupções por transbordo de TMR0 haverá transcorrido 1 seg.
o Nº de passos de TMR0 = 125 Þ valor inicial de TMR0 = 256 – 125 = 131
o FATOR = 125
6) Configuração da frequência com que ocorrem as interrupções por transbordo de TMR1
Considerando um FCLOCK = 16MHz, um prescalador = 1, cada incremento de TMR1 será realizado em
intervalos de tempo definidos por (4×TCLOCK) = (250ns). Portanto, um ciclo completo de 65536 incrementos
será realizado em (250ns)×65536 = 16,3844 ms.
Considerando um FCLOCK = 16MHz e um prescalador = 8, cada incremento de TMR1 será realizado em
intervalos de tempo definidos por (4×TCLOCK)×8 = (250ns)×8 = 2 µs. Então, um ciclo completo de 65536
incrementos será realizado em (2 µs)×65536 = 131,072 ms. Nota-se que, nessas condições, será necessário
disparar pelo menos 8 interrupções para acumular um tempo de 1 seg.
Assim, para executar eventos periódicos em intervalos de tempo maiores, será necessário disparar
interrupção várias vezes e, através de um contador, acumular o tempo, cada vez que TMR1 disparar
interrupção.
Exemplo: Uso de TMR1 para disparar eventos periódicos cada segundo. Considere FCLOCK = 16MHz e
prescalador = 8.
(Nº de passos de TMR1)×(FATOR)×2 µs = 1 s.
Solução: se TMR1 disparar interrupção cada 50.000 incrementos, então, serão necessários 10 interrupções,
por transbordo de TMR1, para acumular um tempo de 1 seg.
ü Nº de passos de TMR1 = 50.000 Þ valor inicial de TMR1 = 65.536 – 50.000 = 15.536 = 0x3CB0.
ü FATOR = 10.
7) Biblioteca de operações aritméticas de precisão simples
Operação Detalhe
Adição C:Op1_L = Op1_L + Op2_L C: carry
Subtração Op1_L = Op1_L - Op2_L C: borrow
Multiplicação Rpta2:Rpta1 = Mulcnd * Mulcdr = Op1_L * Op2_L
Divisão Dividendo = Divisor * Quociente + Resto
Conv. Binário 16b à BCD binario_H:binario_L à dmil:umil:cent:deze:unid
Conv. 3 BCD à Binário 8b cent:deze:unid à binario_L
BOM TRABALHO!