You are on page 1of 23

MICROCONTROLADORES

AULA 2
Microchip- 16F628A /648A
Marcos Zamboni
AULA 2 M.ZAMBONI
1
REGISTRADORES REGISTRADORES REGISTRADORES REGISTRADORES
Denominados de SFR ( Special Function Registers) Registradores de funes
especiais, servem para armazenar a configurao e o estado de funcionamento
atual da maquina ( microcontrolador).
1. REGISTRADORES GERAIS: 1. REGISTRADORES GERAIS: 1. REGISTRADORES GERAIS: 1. REGISTRADORES GERAIS:
STATUS E PCON, STATUS E PCON, STATUS E PCON, STATUS E PCON, Servem para mostrar o estado da ULA, o ltimo RESET, configurar
oscilador interno e externo, configurar pgina de programao
atual. No registrador STATUS temos a seleo do Banco de Memoria de Dados,
algumas funes matemticas como C = Carry, DC = Digit Carry, Z que indica quando
um resultado foi zero, etc...
No Registrador PCON, a funo mais utilizada a escolha da Frequncia do Oscilador
Interno (OSCF) que pode ser 37kHz ou 4MHz.
AULA 2 M.ZAMBONI
2
AULA 2 M.ZAMBONI
3
OPTION: OPTION: OPTION: OPTION: Configura uma srie de opes, tais como habilitao dos Pull-
Ups do PORTB, Configuraes do Prescaler, TMR0 e seleo de Borda
para Interrupo externa. ( referenciado no MPLAB como OPTION_REG.
INTCON, PIR1 e PIE1: INTCON, PIR1 e PIE1: INTCON, PIR1 e PIE1: INTCON, PIR1 e PIE1: Configuram e identificam todas as
interrupes existentes. ( Veremos adiante no curso).
PCL E PCLATH: PCL E PCLATH: PCL E PCLATH: PCL E PCLATH: O PCL o registrador que armazena os 8 bits menos
significativos do PC ( PROGRAM COUNTER), ao qual indica a proxima
linha que o programa dever executar, a cada ciclo de mquina o PC
automaticamente alterado, mas tambm podemos altera-lo pelo
software, como veremos adiante.
AULA 2 M.ZAMBONI
4
PORTAS PORTAS PORTAS PORTAS
TRIS: TRIS: TRIS: TRIS: Estes registradores ( TRIS A e TRIS B) servem para
configurar os pinos das portas, se entrada atribui-se UM se sada
atribui-se ZERO .
Para configurarmos o PORTA utilizaremos o TRISA e para
configurarmos o PORTB utilizaremos o TRISB, esta configurao
ser bit a bit, conforme vamos ver adiante.
Lembrando que: 1 lembra a letra I ( INPUT)
0 lembra a letra O ( OUTPUT).
AULA 2 M.ZAMBONI
5
CONTADORES CONTADORES CONTADORES CONTADORES
TIMER 0 : um contador de 8 bits que pode ser acessado diretamente na
memria tanto para ler ou escrever, seu incremento automtico pelo
clock da mquina ou por sinal externo, seu estouro pode gerar uma
Interrupo.
TIMER 1: TIMER 1: TIMER 1: TIMER 1: um contador de 16 bits, tambm pode ser acesso
diretamente da memria, mas devido ao seu tamanho ele armazenado
em dois endereos : TMR1H ( Parte alta), TRM1L )(Parte baixa), TMR1H ( Parte alta), TRM1L )(Parte baixa), TMR1H ( Parte alta), TRM1L )(Parte baixa), TMR1H ( Parte alta), TRM1L )(Parte baixa), o
registrador TCON1 TCON1 TCON1 TCON1 responsvel pelas configuraes relacionadas ao
TIMER 1, como PRESCALER, Oscilador Externo Prprio, incremento
interno ou externo, sincronismo de incremento. Seu estouro pode gerar
uma interrupo. Ele muito utilizado no modulo CCP.
TIMER 2: TIMER 2: TIMER 2: TIMER 2: Tambm um contador de 8 bits, que pode ser acessado
diretamente a memria, o registrador TCON2 TCON2 TCON2 TCON2 o responsvel pelas
configuraes do TIMER2, como PRESCALER e POSTSCALER, para gerar
uma interrupo o valor deste contador comparado ao valor
especificado em outro registrador, o PR2, em vez de esperar o estouro.
EEPROM EEPROM EEPROM EEPROM
EEADR E EEDATA: EEADR E EEDATA: EEADR E EEDATA: EEADR E EEDATA: O primeiro EEADR o registrador onde ser endereada
a escrita ou leitura da EEPROM interna. O segundo EEDATA
possui duas funes distintas: Na escrita da EEPROM, preenchemos com
o dado a ser armazenado, j nas operaes de leitura, ele armazena o dado
lido.
EECON1 E EECON2: EECON1 E EECON2: EECON1 E EECON2: EECON1 E EECON2: O registrador EECON1 responsavel pelas
operaes de escrita e leitura da EEPROM e deteco de erros.
O registrador EECON2 utilizado como proteo de escrita na EEPROM,
evitano que a memria seja alterada acidentalmente.
AULA 2 M.ZAMBONI
6
MDULO C.C.P. MDULO C.C.P. MDULO C.C.P. MDULO C.C.P.
CCP1CON, CCPR1H e CCPR1L : CCP1CON, CCPR1H e CCPR1L : CCP1CON, CCPR1H e CCPR1L : CCP1CON, CCPR1H e CCPR1L : No mdulo CCP temos trs mdulos
distintos de operao:
CAPTURE,COMPARE e PWM, o registrador CCP1CON o responsvel
pela configurao destes modos.
O mdulo CCP utiliza ainda o TMR1 como base de tempo e os registradores
complementares CCPR1H e CCPR1L.
AULA 2 M.ZAMBONI
7
MDULO COMPARADOR DE TENSO MDULO COMPARADOR DE TENSO MDULO COMPARADOR DE TENSO MDULO COMPARADOR DE TENSO
CMCON: CMCON: CMCON: CMCON: um
registrador
utilizado para
configurao
de dois
comparadores
analgicos que
este modelo
possui, neste
registro
podemos
escolher 8
possibilidades
de
programao
conforme
tabela:
AULA 2 M.ZAMBONI
8
MDULO TENSO DE REFERNCIA MDULO TENSO DE REFERNCIA MDULO TENSO DE REFERNCIA MDULO TENSO DE REFERNCIA
VRCON: VRCON: VRCON: VRCON: Este registrador utilizado para configurar
o modulo de tenso de referncia, ou seja uma
sada analgica com 16 valores de tenso
configurveis por software. Por este registrador
podemos habilitar e desabilitar o mdulo de
tenso de referncia, e selecionar o valor da
sada. ( MALHA R2R INTERNA).
AULA 2 M.ZAMBONI
9
MDULO USART MDULO USART MDULO USART MDULO USART
TXSTA e RCSTA: TXSTA e RCSTA: TXSTA e RCSTA: TXSTA e RCSTA: Estes registradores configuram e monitoram todas as
possibilidades para a comunicao USART, um para a Transmisso (TXSTA)
e outro para Recepo (RCSTA).
SPBRG: SPBRG: SPBRG: SPBRG: Registrador que configura o Baund Rate ( Taxa de Transferncia).
TXREG e RCREG: TXREG e RCREG: TXREG e RCREG: TXREG e RCREG: Buffers ( acumuladores) para dados a serem enviados
(TXREG), e dados recebidos (RCREG).
AULA 2 M.ZAMBONI
10
ENDEREAMENTO INDIRETO ENDEREAMENTO INDIRETO ENDEREAMENTO INDIRETO ENDEREAMENTO INDIRETO
FSR e o INDF: FSR e o INDF: FSR e o INDF: FSR e o INDF: O FSR um registrador que pode ser escrito em um
outro endereo da memria que ser acessado indiretamente, como se
fosse apenas um ponteiro. O INDF na realidade no um registrador,
trata-se de um espelho do endereo apontado pelo FSR. No se
assuste, veremos tudo mais adiante.
AULA 2 M.ZAMBONI
11
CONHECENDO O MPLAB CONHECENDO O MPLAB CONHECENDO O MPLAB CONHECENDO O MPLAB
O MPLAB nada mais que um software free para desenvolvimento em
Assembly de programas para microcontroladores, nele esta tambm
embutido o programa Hi-Tech C, linguagem C para PIC, mas na verso
bsica, pois a verso Full paga. Voce pode baixar o software e tudo
relativo ao microcontrolador no site www.microchip.com.
Vamos conhecer o nosso ambiente de trabalho, utilizando um programa
modelo para entendermos melhor seus aspectos bsicos.
Como em muitos casos no necessitamos mudar bruscamente suas
caractersticas, podemos utilizar este modelo para desenvolvimento de
todos os projetos relativos ao PIC.
AULA 2 M.ZAMBONI
12
AULA 2 M.ZAMBONI
13
AS CORES DAS LETRAS O QUE REPRESENTAM??? AS CORES DAS LETRAS O QUE REPRESENTAM??? AS CORES DAS LETRAS O QUE REPRESENTAM??? AS CORES DAS LETRAS O QUE REPRESENTAM???
Podemos observar que ao abrirmos o programa MODELO.ASM, temos trs cores
distintas de letras:
VERDE VERDE VERDE VERDE significa que um comentrio no compreendido pelo programa na
compilao, observe que sempre precede um ponto e virgula, ou seja, tudo que
escrever depois de um ponto e virgula apenas comentrio.
AZUL AZUL AZUL AZUL toda vez que digitarmos instrues e elas sendo reconhecidas pelo
programa, ficar em Azul escuro, algumas diretrizes ficam em azul claro.
VERMELHO VERMELHO VERMELHO VERMELHO quando criamos Labels ou endereos .
Podemos alterar as cores no menu Podemos alterar as cores no menu Podemos alterar as cores no menu Podemos alterar as cores no menu Edit Edit Edit Edit Properties Properties Properties Properties. .. . Text Text Text Text... ... ... ...choose choose choose choose colors colors colors colors
OBS: PALAVRAS COMPOSTAS DEVEM SER LIGADAS POR UNDER_LINE OBS: PALAVRAS COMPOSTAS DEVEM SER LIGADAS POR UNDER_LINE OBS: PALAVRAS COMPOSTAS DEVEM SER LIGADAS POR UNDER_LINE OBS: PALAVRAS COMPOSTAS DEVEM SER LIGADAS POR UNDER_LINE
O programa difere MAISCULAS de minsculas.... Portanto O programa difere MAISCULAS de minsculas.... Portanto O programa difere MAISCULAS de minsculas.... Portanto O programa difere MAISCULAS de minsculas.... Portanto
CUIDADO. CUIDADO. CUIDADO. CUIDADO.
AULA 2 M.ZAMBONI
14
# INCLUDE # INCLUDE # INCLUDE # INCLUDE
Observe que a primeira diretriz que inserimos no programa #INCLUDE,
ela tem por finalidade inserir um arquivo de texto ou codigo-fonte, onde
estaro definidos os nomes e endereos de todos os SFRs, e outras
definies necessrias para o programa.
`Para visualizarmos um arquivo Include, no MPLAB siga a sequncia
abaixo:
C: Arquivos de C: Arquivos de C: Arquivos de C: Arquivos de Programa Programa Programa Programa Microchip Microchip Microchip Microchip MPASMSuite MPASMSuite MPASMSuite MPASMSuite\ \\ \p16F648A p16F648A p16F648A p16F648A
Voce ver o arquivo de SFRs relativos ao pic 16F648A.
AULA 2 M.ZAMBONI
15
__CONFIG ( CONFIGURAES BSICAS)
Para iniciarmos o programa, devemos configurar alguns parmetros que
iro habilitar ou no certas condies, para isto temos duas maneiras de
gerar esta configurao, atravs de dois underlines e a palavra config, ou
diretamente em Configure Configure Configure Configure Configuration Configuration Configuration Configuration Bits... Bits... Bits... Bits...
Podemos ver no programa Modelo o texto Config como abaixo:
__CONFIG _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF &
_LVP_OFF & _MCLRE_ON & _INTOSC_OSC_NOCLKOUT
Vamos agora estudar cada item deste CONFIG.
Observe que sempre existe um underline iniciando e so ligados por &
(E comercial)
AULA 2 M.ZAMBONI
16
_BODEN _OFF ( _BODEN _OFF ( _BODEN _OFF ( _BODEN _OFF ( ON ON ON ON) )) )
BROWN OUT DETECT ENABLE ( Detecta automaticamente quando a tenso
de alimentao cai de 5V para menos de 4V, pelo tempo de 100 us, aps
este tempo o sistema ser resetado, e somente voltar a funcionar quando
a tenso se normalizar.
conveniente observar que ativamos esta funo quando a variao de
tenso pode ocorrer em mal funcionamento do software. Por exemplo
numa comunicao Serial onde a tenso o valor da Amplitude do sinal.
Caso no seja necessrio no o habilite, mantenha em OFF, pois o nosso
Microcontrolador opera com tenses a partir de 2 Volts, o que significa que
se o alimentarmos com duas pilhas (3,0V), o sistema no sair do RESET.
AULA 2 M.ZAMBONI
17
_ __ _CP_OFF CP_OFF CP_OFF CP_OFF ( (( (ON ON ON ON) )) )
CODE PROTECT CODE PROTECT CODE PROTECT CODE PROTECT ( cdigo de proteo) tem por finalidade no permitir
quando habilitado ( ON), que consigam copiar ou ler o programa gravado.
Na realidade nem o operador poder copiar ou ler o programa gravado,
mas se o programador inserir um codigo de identificao conforme
abaixo:
__IDLOCS 0X_ _ _ _ nos espaos em vermelho, colocamos 4 valores
em Hexadecimal para podermos futuramente identificar o Software
instalado.
Podemos agora saber o codigo do software instalado, mas no seu
contedo. Se voce o dono do software, pelo cdigo pode verificar em
seus arquivos do que se trata o programa.
CUIDADO: CUIDADO: CUIDADO: CUIDADO: Em alguns programas de gravao quando ativamos o CP, pode
aparecer erro de verificao, pois depois de gravado o programa verifica a
gravao, mas o CP no permite ler o programa, indicando erro!!!!
AULA 2 M.ZAMBONI
18
_ __ _PWRTE_ON PWRTE_ON PWRTE_ON PWRTE_ON (OFF) (OFF) (OFF) (OFF)
POWER UP TIMER ENABLE POWER UP TIMER ENABLE POWER UP TIMER ENABLE POWER UP TIMER ENABLE Na condio ON ON ON ON
ele gera um delay de 72ms para o programa
iniciar, tem por finalidade esperar a fonte de
alimentao estabilizar para o programa
trabalhar nos nveis corretos de tenso.
Aconselho deixar sempre habilitado.
AULA 2 M.ZAMBONI
19
_ __ _WDT_OFF WDT_OFF WDT_OFF WDT_OFF ( (( (ON ON ON ON) )) )
WATCHDOG TIMER (co de guarda) WATCHDOG TIMER (co de guarda) WATCHDOG TIMER (co de guarda) WATCHDOG TIMER (co de guarda) Basicamente um
contador de ciclo de instrues separado do programa
principal, sua funo RESETAR o programa caso o WDT no
seja limpo pelo software.
Quando ele atinge o valor mximo (ajustado pelo
programador), reseta o programa principal, por esta razo
antes do seu estouro, devemos zer-lo atravs da instruo
CLRWDT CLRWDT CLRWDT CLRWDT ( Clear Watchdog timer).
Vale a pena ressaltar que devemos inserir o WDT apenas
depois de pronto e funcionando corretamente o programa.
AULA 2 M.ZAMBONI
20
_LVP_OFF _LVP_OFF _LVP_OFF _LVP_OFF (ON) (ON) (ON) (ON)
LOW VOLTAGE PROGRAM LOW VOLTAGE PROGRAM LOW VOLTAGE PROGRAM LOW VOLTAGE PROGRAM ( Programao por baixa tenso).
Para entendermos a LVP, temos que saber como a gravao de modo
normal. Atravs do pino 4 ( MCLR) aplicada uma tenso de 13,2V para o
microcontrolador parar seu funcionamento e entrar em modo de gravao
(Programao).
Mas, em alguns casos o equipamento que esta inserido seu
microcontrolador no dispe desta tenso, ento podemos habilitar sua
gravao com apenas 5V (TTL), colocando ON em LVP, seu pic entra em
modo de gravao quando aplicado 5Volts no pino 10, e o pino 4 neste
momento perde esta funo.
CUIDADO: CUIDADO: CUIDADO: CUIDADO: Como a tenso baixa, qualquer rudo pode fazer com que o PIC
entre em modo de gravao, portanto devemos colocar preferencialmente
um filtro para eliminar este problema.
AULA 2 M.ZAMBONI
21
_ __ _MCLRE_ON MCLRE_ON MCLRE_ON MCLRE_ON (OFF) (OFF) (OFF) (OFF)
MASTER CLEAR ENABLE MASTER CLEAR ENABLE MASTER CLEAR ENABLE MASTER CLEAR ENABLE (Habilitao do RESET EXTERNO), quando em
ON, o RESET ser acionado atravs do pino 4 quando em VSS, ou seja
quando aterrarmos o pino 4. evidente que nesta condio ele perde a
funo de PORTA,5 (RA5), para trabalhar apenas como RESET, para tanto
devemos ligar um resistor do pino para VDD, e uma chave do pino para
VSS.
Caso voc coloque OFF, este pino ser um PORT, e o RESET ser feito
internamente pelo software.
OBS: OBS: OBS: OBS: Como este pino tambm o pino de Gravao por alta tenso (13,2V),
ele no pode nunca ser configurado como sada, apenas entrada. No se
esquea disto.
AULA 2 M.ZAMBONI
22
TIPOS DE OSCILADORES TIPOS DE OSCILADORES TIPOS DE OSCILADORES TIPOS DE OSCILADORES
Como item final do nosso __CONFIG temos as opes de osciladores.
_INTOSC_OSC_NOCLKOUT _INTOSC_OSC_NOCLKOUT _INTOSC_OSC_NOCLKOUT _INTOSC_OSC_NOCLKOUT Habilita o oscilador interno, mantendo os pinos
RA6 e RA7 como portas.
_XT_OSC _XT_OSC _XT_OSC _XT_OSC Habilita o uso de um cristal externo ou ressonador ligado aos
pinos RA6 e RA7.
_HS_OSC _HS_OSC _HS_OSC _HS_OSC Para uso de ressonadores cermicos com frequncias elevadas.
_LP_OSC _LP_OSC _LP_OSC _LP_OSC Para cristais ou ressonadores de baixa frequncia.
_RC_CLKOUT RC_CLKOUT RC_CLKOUT RC_CLKOUT Para oscilador RC externo, e teremos no pino 15 o clock
saindo sua frequncia dividida por 4 ( Onda quadrada de da frequncia).
AULA 2 M.ZAMBONI
23