Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Capítulo 10 – Exemplos
Esquema Elétrico 1: Botões e LEDs .................................................53
Exemplo 1: Liga e desliga uma saída .............................................. 55
Exemplo 2: Atribuição de nomes para os PORTs ............................57
Exemplo 3: Temporização - Oscilador.............................................. 58
Esquema Elétrico 2: Display de 7 segmentos...................................61
Exemplo 4: Trabalhando com Display de 7 segmentos................... 64
Exemplo 5: Multiplexação de Display de 7 segmentos.....................68
Esquema Elétrico 3: Display LCD e Conversor AD...........................69
Exemplo 5: Trabalhando com Display LCD.......................................74
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 2
Página anterior Tabela de conteúdos Página seguinte
CAPÍTULO 1- Introdução aos Microcontroladores
Introdução
As circunstâncias que se nos deparam hoje no campo dos microcontroladores têm
os seus primórdios no desenvolvimento da tecnologia dos circuitos integrados.
Este desenvolvimento tornou possível armazenar centenas de milhares de
transistores num único chip. Isso constituiu um pré-requisito para a produção de
microprocessadores e, os primeiros computadores foram construídos adicionando
periféricos externos tais como memória, linhas de entrada e saída, temporizadores
e outros. Um crescente aumento do nível de integração permitiu o aparecimento
de circuitos integrados contendo simultaneamente processador e periféricos. Foi
assim que o primeiro chip contendo um microcomputador e que mais tarde haveria
de ser designado por microcontrolador.
Aplicações
Microcontroladores são usados com frequência em produtos e dispositivos de
controle automático, tais como sistemas de controle em motores de automóveis,
controles remotos, máquinas de escritório, ferramentas e brinquedos. Ao reduzir o
tamanho, custo e consumo de energia em comparação com um projeto que usa
microprocessador, memória e dispositivos de E/S separados, microcontroladores
tornam viável economicamente o controle eletrônico de muitos processos. Cerca
de 50% dos microcontroladores vendidos são controladores "simples", outros 20%
são processadores de sinais digitais (DSPs) mais especializados.
Os microcontroladores podem ser encontrados em praticamente todos os
dispositivos eletrônicos digitais que nos cercam: cartão de banco, dentro do
monitor, controladores de temperatura, Harddisk, relógio de pulso, rádio relógio,
máquinas de lavar, forno de microondas, telefones, etc. Você está certamente
cercado de dezenas deles agora. Eles permitiram à evolução de equipamentos
que há anos não evoluíam como os motores a combustão, que agora com o novo
controle eletrônico podem funcionar com sistema bicombustível e poluindo menos
e as máquinas fotográficas, que migraram de processos químico/mecânico a
circuitos com microcontroladores. (fonte:www.wikipedia.com.br)
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 3
Tecnologia CISC e RISC
Os microcontroladores PIC são fabricados com a tecnologia RISC (Reduced
Instruction Set Computer) que contém um conjunto reduzido de instruções, já os
Microcontroladores da família 8051 são fabricados uma tecnologia CISC
(Complex Instruction Set Computer) que possuem um conjunto de instruções mais
complexos.
Arquitetura Harvard e Von-Neumann
A arquitetura de Harvard é um conceito mais recente que a de Von-Neumann. Ela
adveio da necessidade de pôr o microcontrolador a trabalhar mais rapidamente.
Na arquitetura de Harvard, a memória de dados está separada da memória de
programa. Assim, é possível uma maior fluência de dados através da unidade
central de processamento e, claro, uma maior velocidade de funcionamento. A
separação da memória de dados da memória de programa faz com que as
instruções possam ser representadas por palavras de mais que 8 bits. O
PIC16F877 usa 14 bits para cada instrução, o que permite que todas as instruções
ocupem uma só palavra de instrução. É também típico da arquitetura Harvard ter
um repertório com menos instruções que a de Von-Neumann's, instruções essas,
geralmente executadas apenas num único ciclo de clock.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 4
CAPÍTULO 2 - O que é o PIC?
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 5
matemáticas ou quaisquer outras operações com dados, quaisquer que sejam os
locais em que estes se encontrem.
Vamos olhar para a situação atual. Nós temos duas entidades independentes
(memória e CPU) que estão interligadas, deste modo, qualquer troca de dados é
retardada bem como a funcionalidade do sistema é diminuída. Se, por exemplo,
nós desejarmos adicionar os conteúdos de dois locais de memória e tornar a
guardar o resultado na memória, nós necessitamos de uma ligação entre a
memória e o CPU. Dito mais simplesmente, nós precisamos obter um "caminho"
através do qual os dados possam passar de um bloco para outro.
Bus
Este "caminho" designa-se por "bus”. Fisicamente ele corresponde a um grupo de
8, 16 ou mais fios. Existem dois tipos de bus: bus de dados e de endereço. O
número de linhas do primeiro depende da quantidade de memória que desejamos
endereçar e o número de linhas do outro depende da largura da palavra de dados,
no nosso caso é igual a oito. O primeiro bus serve para transmitir endereços do
CPU para a memória e o segundo para ligar todos os blocos dentro do
microcontrolador. Neste momento, a funcionalidade já aumentou, mas um novo
problema apareceu: nós temos uma unidade capaz de trabalhar sozinha, mas que
não possui nenhum contato com o mundo exterior, ou seja, conosco. De modo a
remover esta deficiência, vamos adicionar um bloco que contém várias
localizações de memória e que, de um lado, está ligado ao bus de dados e do
outro às linhas de saída do microcontrolador que coincidem com pinos do circuito
integrado e que, portanto, nós podemos ver com os nossos próprios olhos.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 6
de o programa "travar", o zero não vai ser escrito e o contador, por si só, irá
resetar o microcontrolador quando alcançar o seu valor. Isto vai fazer com que o
programa execute novamente e desta vez corretamente. Este é um elemento
importante para que qualquer programa se execute fielmente, sem precisar da
intervenção do ser humano.
O contador do WDT é independente do ciclo de máquina do PIC. Existe dentro da
pastilha um circuito oscilador tipo RC que incrementa o contador do WDT, de
forma que ele trabalha indepentemente do oscilador do PIC. Isso significa que o
WDT continua operando memso em modo SLEEP.
O período de estouro do WDT é de aproximadamente 18ms. Esse tempo pode ser
alterado pelo registrador OPTION_REG.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 7
Gerador de Clock – oscilador
O circuito do oscilador é usado para fornecer um clock, ao microcontrolador. O
clock é necessário para que o microcontrolador possa executar um programa ou
as instruções de um programa.
Oscilador RC: esse é o tipo mais simples e também o mais barato, mas por outro
lado é o menos preciso.
Oscilador Ressonador: o ressonador cerâmico é uma segunda opção, não é tão
barato quanto um RC, mas é bem mais preciso e estável.
Oscilador de Cristal – XT: o cristal está contido num invólucro de metal com dois
pinos onde foi escrita a frequência a que o cristal oscila. Dois capacitores
cerâmicos devem ligar cada um dos pinos do cristal à massa, e os terminais do
cristal ligados aos pinos OSC1 e OSC2 do microcontrolador. Quando projetamos
um dispositivo, a regra é colocar o oscilador tão perto quanto possível do
microcontrolador, de modo a evitar qualquer interferência nas linhas que ligam o
oscilador ao microcontrolador.
Os cristais são os osciladores mais precisos que podemos utilizar, mas também
são os mais caros.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 8
Unidade de Memória
A memória é a parte do microcontrolador cuja função é guardar dados. A maneira
mais fácil de explicar é descrevê-la como uma grande prateleira cheia de gavetas.
Se supusermos que marcamos as gavetas de modo a elas não se confundirem
umas com as outras, então o seu conteúdo será facilmente acessível. Basta saber
a designação da gaveta e o seu conteúdo será conhecido.
A memória é o conjunto de todos os locais de memória (gavetas) e
endereçamento nada mais é que selecionar um deles. Isto significa que
precisamos selecionar o endereço desejado (gaveta) e esperar que o conteúdo
desse endereço nos seja apresentado (abrir a gaveta). Além de ler de um local da
memória (ler o conteúdo da gaveta), também é possível escrever num endereço
da memória (introduzir um conteúdo na gaveta).
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 9
Registros Especiais (SFR)
Os registradores SFR (Special Function Registers ou Registros de Funções
Especiais) são utilizados pelo microcontrolador para execução do programa e
processamento da ULA. Servem também para configuração de várias funções e
para utilização de todos os periféricos.
Contador de Programa
Pilha
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 10
Mapeamento da Memória
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 11
CAPÍTULO 3 - Conhecendo o PIC 16F877A
• Microcontrolador de 40 pinos;
• Via de programação com 14 bits e 35 instruções;
• 33 portas configuráveis como entrada e saída;
• 15 interrupções disponíveis;
• Memória de programação E2PROM FLASH;
• Memória de programa de 8Kwords;
• Memória E2PROM interna com 256 bytes;
• Memória RAM com 368 bytes;
• Três timers;
• Comunicação seriais: SPI, I2C e USART;
• Conversores analógicos de 10 bits (8x) e comparadores analógicos (2x)
• Dois módulos CCP: Capture, Compare e PWM;
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 12
Diagrama interno do PIC 16F877A
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 13
Pinagem – PIC 16F877
Características Elétricas
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 14
Descrição dos pinos
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 15
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 16
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 17
Mapamento da Memória de Dados
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 18
CAPÍTULO 4 - Conjunto de Instruções
Termos utilizados:
• Work - W: trata-se de um registrador temporário para as operações da
ULA. Também chamado de acumulador.
• File - F: referência de um registrador (posição de memória) propriamente
dito.
• Literal - L: um número qualquer.
• Destino - d : o local onde deve ser armazenado o resultado da operação.
Existem somente dois destinos possíveis: f, que guardará o resultado no
próprio registrador ou no w, que colocará o resultado em Work.
• Bit - B: refere-se a um bit dentro de um byte.
• Teste - T: quando queremos testar o estado de um bit.
• Skip – S: significa “pulo”, e é utilizado para criar desvios.
• Set – S: refere-se ao ato de setar um bit, isto é, torna-lo equivalente a UM.
• Clear – C: refere-se ao ato resetar um bit, isto é, torna-lo equivalente a
ZERO.
• Zero – Z: algumas instruções podem gerar desvios se o resultado da
operação for zero.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 19
Operações com Registradores
Instruções Argumentos Descrição
ADDWF f,d Soma W e f, guardando o resultado em d
ANDWF f,d Lógica E entre W e f, guardando o resultado em d
CLRF f Limpa f.
CLRW - Limpa W
COMF f,d Calcula o complemento de f, guardando o resultado em d
DECF f,d Decrementa f, guardando o resultado em d
DECFSZ f,d Decrementa f, guardando o resultado em d e pula a próxima linha
se o resultado for zero
INCF f,d Incrementa f, guardando o resultado em d
INCFSZ f,d Incrementa f, guardando o resultado em d e pula a próxima linha se
o resultado for zero
IORWF f,d Lógica OU entre W e f, guardando o resultado em d
MOVF f,d Move f para d
MOVWF f,d Move W para f.
RLF f,d Rotaciona f 1 bit para esquerda, guardando o resultado em d
RRF f,d Rotaciona f 1 bit para direita, guardando o resultado em d
SUBWF f,d Subtrai E de f (W-f), guardando o resultado em d
SWAPF f,d Executa a inversão entre as partes alta e baixa de f, guardando o
resultado em d
XORWF f,d Lógica OU exclusivo entre W e f, guardando o resultado em W
Operações com Bits
Instruções Argumentos Descrição
BCF f,b Impõe ZERO no bit do registrador f
BSF f,b Impõe UM no bit do registrador f
BTFSC f,b Testa o bit do registrador f, e pula a próxima linha se ele for ZERO
BTFSS f,b Testa o bit do registrador f, e pula a próxima linha se ele for UM
Controles
Instruções Argumentos Descrição
NOP - Gasta um ciclo de máquina sem fazer absolutamente nada
CALL R Executa a rotina R
CLRWDT - Limpa o registrador WDT para não ocorrer o reset
GOTO R Desvia para o ponto R, mudando o PC
RETFIE - Retorna de uma interrupção
RETLW K Retorna de uma rotina, com k em W
RETURN - Retorna de uma rotina, sem afetar W
SLEEP - Coloca o PIC em modo sleep
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 20
Exemplos de utilização das instruções
Decimal D’ ‘ ou .
Exemplo: D’20’ ou .20
Hexadecimal H’ ‘ ou 0X
Exemplo: H’20’ ou 0X20
Binário B’ ‘
Exemplo B’00001111’
ASCII A‘‘
Exemplo A’a’
BSF PORTB,1
Antes da instrução: PORTB = B’00000000’
Depois da instrução: PORTB = B’00000010’
BCF PORTB,1
Antes da instrução: PORTB = B’00000010’
Depois da instrução: PORTB = B’00000000’
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 21
2- Exemplos de Manipulação de Registradores:
MOVLW 0x10
Depois da instrução: W = 0x10
MOVWF REG1
Antes da instrução: W = 0x10 REG1 = xx
Depois da instrução: W = 0x10 REG1 = 0x10
MOVF REG1,W
Antes da instrução: W = 0x10 REG1 = 0x20
Depois da instrução: W = 0x20 REG1 = 0x20
CLRF REG1
Depois da instrução: REG1 = 0x00
CLRW
Depois da instrução: W = 0x00
INCF REG1,F
Antes da instrução: REG1 = 0x09
Depois da instrução: REG1 = 0x10
INCF REG1,W
Antes da instrução: REG1 = 0x06 W= 0x02
Depois da instrução: REG1 = 0x06 W= 0x07
DECF REG1,F
Antes da instrução: REG1 = 0x09
Depois da instrução: REG1 = 0x08
DECF REG1,W
Antes da instrução: REG1 = 0x10 W= 0x02
Depois da instrução: REG1 = 0x10 W= 0x0F
SWAPF REG1,F
Antes da instrução: REG1 = B’00001111’
Depois da instrução: REG1 = B’11110000’
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 22
3-Exemplos de Operações Aritméticas:
ADDLW 0x13
Antes da instrução: W = 0x10
Depois da instrução: W = 0x23
ADDWF REG1,W
Antes da instrução: W = 0x17 REG1 = 0x11
Depois da instrução: W = 0x28 REG1 = 0x11
ADDWF REG1,F
Antes da instrução: W = 0x17 REG1 = 0x17
Depois da instrução: W = 0x17 REG1 = 0x28
SUBWF REG1,W
Antes da instrução: W = 0x17 REG1 = 0x11
Depois da instrução: W = 0x06 REG1 = 0x11
MOVF A,W
SUBWF B,W
BTFSC STATUS,C
GOTO MAIOR (Caso A seja maior que B)
GOTO MENOR (Caso A seja menor que B)
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 23
4- Exemplos de operações lógicas
ANDLW 0x B’00001111’
Antes da instrução: W= B’10010101’
Depois da instrução: W= B’00000101’
ANDWF PORTA,W
Antes da instrução: PORTA= B’11111111’ W= B’01110111’
Depois da instrução: PORTA= B’11111111’ W= B’01110111’
IORLW 0x B’00001111’
Antes da instrução: W= B’10010101’
Depois da instrução: W= B’10011111’
IORWF PORTA,W
Antes da instrução: PORTA= B’11111111’ W= B’01110111’
Depois da instrução: PORTA= B’11111111’ W= B’01110111’
XORLW B’00010010’
Antes da instrução: W= B’00000100’
Depois da instrução:W= B’00010110’
XORWF PORTA,W
Antes da instrução: PORTA = B’00100010’ W= B’00100010’
Depois da instrução: PORTA = B’00100010’ W= B’00000000’
COMF PORTA,W
Antes da instrução: PORTA = B’00100010’
Depois da instrução: PORTA = B’00100010’ W= B’11011101’
RRF REG1,F
Antes da instrução: REG1= B’11100110’ C= 0
Depois da instrução: REG1 = B’01110011’ C= 0
RLF REG1,F
Antes da instrução: REG1= B’11100110’ C= 0
Depois da instrução: REG1 = B’11001100’ C= 1
DECFSZ CONTADOR,F
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 24
GOTO CONTINUA
GOTO ACABOU
INCFSZ CONTADOR,F
GOTO CONTINUA
GOTO ACABOU
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 25
Exercícios
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 26
Exercício 3: Instruções Lógicas
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 27
Exercício 5: Comparação de valores utilizando XOR
Instruções Descrição das Instruções Conteúdo dos
Registradores
MOVLW .10
MOVWF REGA
MOVLW .5
MOVWF REGB
MOVLW .1
MOVWF REGC
CONTINUA
MOVF REGA,W
XORWF REGB,W
BTFSS STATUS,Z
GOTO DIFERENTE
GOTO IGUAL
DIFERENTE
INCF REGB,F
RLF REGC,F
GOTO CONTINUA
IGUAL
CLRF REGB
GOTO CONTINUA
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 28
Exercício 7: Comparação de valores
Instruções Descrição das Instruções Conteúdo dos
Registradores
MOVLW .128
MOVWF REGA
MOVLW .1
MOVWF REGB
MOVLW .10
MOVWF CONTADOR
FICA
DECFSZ CONTADOR
GOTO CONTINUA
GOTO ACABOU
CONTINUA
RLF REGB,F
RRF REGA,F
GOTO FICA
ACABOU
CLRF CONTADOR
GOTO FICA
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 29
Exercício 9: Instruções Aritméticas
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 30
CAPÍTULO 5 - Programação
A diretriz # DEFINE substitui os nomes por uma expressão inteira. Por exemplo
podemos dar um nome a uma saída, substituindo PORTB,1 por LED
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 31
Configurando as opções do PIC
_CP_ON: Code protection ligado impedirá que qualquer pessoa consiga ler o
programa gravado dentro do PIC.
_DEBUG_ON: Modo debug in-circuit habilitado, RB6 e RB7 dedicados para the
debug.
_PWRTE_ON: Para Power Up ligado - esta opção irá fazer com que o PIC só
comece a operar cerca de 72ms após o pino MCLR ser colocado em nível alto.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 32
CAPÍTULO 6 -O CONVERSOR A/D DO PIC16F87X
Generalidades
O conversor A/D encontra-se implementado em silício nos PIC16F87X. Trata-se
de um conversor de aproximações sucessivas e com 10 bits de resolução.O
modelo de 28 terminais dispõe de cinco canais de entrada, e os 40 terminais de
oito canais. Nos PIC16F870/3/6 os cinco canais de entradas são suportados pelos
terminais da porta A.
Para seu funcionamento são necessárias duas voltagens de referência, chamadas
Vref+ e Vref-, que devem ser selecionadas por software e que podem utilizar
tensões internas (VDD e Vss) do próprio microcontrolador ou tensões externas
aplicadas pelos pinos RA3/AN3/Vref+ e RA2/AN2/Vref-.
O registro ADCON0
Os dois bits mais significativos ADCS1:0 são usados para selecionar a frequência
de clock empregada na conversão (Tosc=1/Fosc). Na tabela podemos ver a
correspondência de cada combinação de bits com um tempo de conversão. Este
tempo é chamado de TAD e, trabalhando com um CAD de 10 bits de resolução,
necessidades um mínimo de 12TAD para finalizar a conversão. A duração mínima
de um TAD nos PIC16F87X é de 1,6_s.
Os bits CHS2:0 selecionam o canal por onde se introduzir o sinal analógico a ser
convertido. Na tabela mostra-se a correspondência.
O bit GO/DONE serve para iniciar a conversão. Uma vez colocada em 1
permanecerá nesse estado enquanto dure a conversão e passará
automaticamente para 0 quanto finalize. O bit ADON é o bit de habilitação do
conversor. Se o seu valor for 1 permite o funcionamento do conversor, porém se o
seu valor for 0 proíbe ou inabilita o funcionamento deste.
O bit ADCON0<1> não está implementado, não possui nenhuma função.
ADCON0(ENDEREÇOS:1Fh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DON E - ADON
bit7 bit0
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 33
O registro ADCON1
O bit mais significativo do registro ADCON1 é o ADFM e serve para selecionar o
formato do resultado da conversão. Se o seu valor for 1 o resultado será
justificado à direita. Portanto, tendo em conta que a resolução
ADCON1 (ENDEREÇOS:9Fh)
U-0 U-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0
bit7 bit0
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 34
Os registros de trabalho
Os registros de trabalho são aqueles onde se armazenará o resultado da
conversão. O registro ADRESH (1Eh) conterá a parte alta do resultado e o registro
ADRESL (9Eh) a parte baixa. O resultado terá 10 bits, portanto os seis restantes
serão preenchidos com zeros em função do bit ADFM.
Seleção TAD
TAD ADCS1:ADCS0 20 MHz 5 MHz 1.25mHZ 333,3kHz
2.Tosc 00 100 ns 400 ns 1,6 ns 6 us
8.Tosc 01 400 ns 1.6 ns 6,4 us 24 us
32.Tosc 10 1,6 us 6,4 us 2,6us 96 us
AC 11 2-6 us 2-6 us 2-6 us 2-6 us
Valores assumidos por TAD para diferentes freqüências de trabalho.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 35
3º Fase – Esperar o tempo de aquisição da amostra a converter.
4º Fase – Início da conversão: Devemos colocar em 1 o bit GO/DONE do registro
ADCON0.
5º Fase – Esperar até que se complete a conversão: Testamos o bit GO/DONE
até que seja 0, ou esperamos até que aconteça uma interrupção e seja ativado o
bit sinalizador ADIF.
6º Fase – Leitura do resultado de ADRESH:ADRESL e colocamos o bit ADI em 0.
Para começarmos uma nova conversão devemos esperar no mínimo um tempo de
2.TAD para realizar a seguinte aquisição, repetindo todos os passos desde a
terceira fase.
Exemplo
Desejamos configurar os terminais RA0, RA1 e RA3 como entradas analógicas
para o CAD e os pinos RA2 e RA5 como E/S digitais.
Como devemos programar p PIC16F870?
A solução consiste em gravar nos quatro bits menos significativos do registro
ADCON1 (PCFG3:0) o valor 0100. A tensão de referência neste caso seria de
VDD.
PCFG3:0 AN7/(1) AN6/(1) AN5/(1) AN4/ AN3/ AN2/ AN1/ AN0/ Vref+ Vref- CHAN/
RE2 RE1 RE0 RE5 RE3 RE2 RE2 RE0 RE2 RE2 Refs
0000 A A A A A A A A V00 VSS 8/0
0001 A A A A Vref+ A A A AA3 VSS 7/1
0010 0 0 0 A A A A A V00 VSS 5/0
0011 0 0 0 A Vref+ A A A AA3 VSS 4/1
0100 0 0 0 0 A 0 A A V00 VSS 3/0
0101 0 0 0 0 Vref+ 0 A A AA3 VSS 2/1
011X 0 0 0 0 0 0 0 0 V00 VSS 0/0
1000 A A A A Vref+ Vref- A A AA3 AA2 6/2
1001 0 0 A A A A A A V00 VSS 6/0
1010 0 0 A A Vref+ A A A AA3 VSS 5/1
1011 0 0 A A Vref+ Vref- A A AA3 AA2 4/2
1100 0 0 0 A Vref+ Vref- A A AA3 AA2 3/2
1101 0 0 0 0 Vref+ Vref- A A AA3 AA2 2/2
1110 0 0 0 0 0 0 0 A V00 VSS 1/0
1111 0 0 0 0 Vref+ Vref- 0 A AA3 AA2 1/2
Configuração da porta A em função do valor de PCFG3:0.
Passo Procedimento
1 Configuração do CAD
2 Configuração de interrupção A/D
(opcional)
3 Esperar o tempo de aquisição
4 Início da conversão
5 Esperar o tempo de conversão
6 Leitura do resultado
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 36
CAPÍTULO 7- Comunicação Serial - O módulo USART
Outro dos recursos do nosso microcontrolador que vamos analisar, um dos mais
importantes e-potentes, é o módulo de comunicação USART (Universal
Synchronous Asynchronous Receiver Transmitter). Este é um dos módulos de E/S
serial do microcontrolador, também conhecido como Interface de Comunicação
Serial ou SCI.
Generalidades
O USART é uma interface que permite a comunicação com outros dispositivos. Se
configurado como um sistema assíncrono, do tipo full-duplex, poderemos
comunicar o PIC com periféricos tipos terminais CRT e computadores pessoais.
Se configurado como sistema síncrono, do tipo half-duplex, poderemos
comunicarmos-nos com periféricos como circuitos conversores A/D ou D/A,
memórias EEPROM etc. Esta capacidade para comunicar-se com outros
dispositivos é imprescindível em muitos projetos como, por exemplo, o ar
condicionado central de um edifico, onde cada microcontrolador se encarregará de
determinadas zonas, mesmo que todos eles respondam às ordens de um
processador central. Também podemos colocar como exemplo as leitoras de
cartões chip, nas quais o PIC deve se comunicar com o chip de memória integrado
no cartão.
Configuração do USART
Já vimos em função de como se configure o módulo USART, poderá estabelecer
uma comunicação com diferentes tipos de periférico. Por isso, veremos as opções
de configuração. O módulo USART pode ser configurado nos seguintes modos:
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 37
Configuração detalhada do registro TXSTA.
Para configurar este recurso são usados registros específicos: TXSTA e RCSTA.
A comunicação full-duplex é uma comunicação bidirecional, pode ser transmitir e
receber ao mesmo tempo. Já não é o caso da comunicação half-duplex, que é
uma comunicação unidirecional, ou seja, só é feita em um sentido por vez. O
telefone é um exemplo de comunicação full-duplex, já que se pode escutar e falar
ao mesmo tempo, ou seja, transmite e recebe ao mesmo tempo. Porém, um
walkie-talkie não permite isto: só podemos transmitir ou receber, nunca as duas
coisas ao mesmo tempo. È um exemplo claro de comunicação half-duplex.
A comunicação pode ser feita de forma assíncrona, ou seja, que não responda a
nenhum sinal de relógio, transmitindo os dados quando o transmissor deseje; ou
de forma síncrona, respondendo a um sinal de relógio que sincroniza os envios e
a recepção de dados. Neste último modo, existe diferença entre mestre e escravo:
o mestre será o dispositivo que estabelecerá o sinal de relógio e imporá este sinal
ao restante dos dispositivos que façam parte da comunicação, estes recebem o
nome de escravos.
Os registros de configuração
Os registros com os quais o USART trabalha são dois: TXTA e RCSTA. O primeiro
deles é o registro de controle que determina o estado de transmissão e encontra-
se na posição de memória 98h no banco1. O registro RCSTA é o registro de
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 38
controle que determina o estado da recepção e encontra-se no banco 0 na
posição 18h.
TX9=TXEN=BRGH=1
SYNC=0
O registro TXSTA
Na imagem da figura, podemos ver a configuração deste junto ao detalhe dos bits
que o formam. O bit mais significativo, CSRC, é quem determina a fonte do relógio
(externa ou interna), portanto também é quem determina se o PIC trabalhará como
escravo (relógio tomado de fonte externa) ou como mestre (interna). O bit 6, TX9,
serve para selecionar a transmissão de 8 ou 9 bits. O próximo bit, o TXEN, é o bit
de autorização que habilita a transmissão. O bit SYNC determina se a transmissão
será realizada em modo síncrono ou assíncrono, portanto é de suma importância
comparar o restante dos bits. O próxima bit não está implementado fisicamente, já
o próximo é o bit BRGH, que permite selecionar a velocidade de transmissão em
modo assíncrono do gerador de freqüência interna do dispositivo. O próximo bit,
TRMT, é utilizado para informar o estado do registro de turno de transmissão. E,
por último, o bit 0 ou bit TX9D, que é usado unicamente nas transmissões de 9
bis, é o nono bit desta e que pode ser o bit de paridade.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 39
Configuração detalhada do registro RCSTA.
Na tabela da figura são descritos cada um destes bits e os valores que assumem
para cada uma de suas funções.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 40
O registro RCSTA
O registro de estado da recepção é composto dos bits que podem ser vistos na
imagem da figura e que a seguir vamos explicar. O bit mais significativo, bit SPEN,
é um bit de autorização ou habilitação da comunicação pela porta serial (pinos
RC6 e RC7).
O bit RX9 serve para selecionar o número de bits que vamos receber, oito ou
nove. O próximo bit, SREN, determina que só será realizada uma recepção; é
utilizado apenas em modo síncrono quanto o dispositivo está em modo mestre e
se foi selecionado; ao finalizar a recepção o bit passa automaticamente para 0. O
próximo, o CREN, é similar ao que acabamos de ver: habilita a recepção contínua
de dados ao invés de permitir uma única recepção mediante este bit, configura-se
a transmissão para que o microcontrolador esteja continuamente preparado para
receber dados.
O bit ADDEN somente é usado quando a recepção é de 9 bits (RX9=1) e serve
para habilitar a detecção do endereço, uma interrupção e o carregamento do
buffer de recepção. Os dos bits seguintes são bits indicadores de erros na
comunicação: o bit FERR indica se aconteceu um erro no formato do dado
transmitido, e o bit OERR se aconteceu um erro de excesso de tempo na
recepção. O último bit do registro, RX9D, será o nono bit da recepção quanto a
comunicação for de 9 bits.
Da mesma forma que no registro de transmissão, na tabela da figura podemos
observar os bits anteriormente descritos e a função que executam, atendendo o
valor que possuem.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 41
CAPÍTULO 8 – Passo a Passo – Software MPLAB V 8.15
1- Criando um Projeto.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 42
Passo 2 – Escolher a linguagem de programação, no primeiro momento será
assembly.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 43
Passo 4 – Adicionar um programa ao projeto, escolha o programa e adicione-o,
clicando no botão ADD. Caso não possua ainda o programa ele pode ser
adicionado posteriormente.
As opção são:
A(auto): O MPLAB define o tipo de
caminho automaticamente.
U (usuário): define o caminho como
relativo.
S (sistema): define o caminho como
absoluto.
C (copiar): copia o arquivo para a pasta de
projeto.
Pronto! O projeto está finalizado e aparecerá uma janela com o resumo das
configurações.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 44
2- Associar um arquivo fonte ao projeto.
a) Clicar com o botão direito do mouse na pasta Source File e selecionar ADD
Files ou Menu Project ADD New File to Project..
3- Compilar um projeto.
a) Menu Project – Build All ou utilizando o atalho Ctrl + F10
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 45
b) Ao compilar um projeto, estamos transformando o arquivo fonte .asm em um
arquivo . hex, este arquivo está pronto para ser transferido para o
microcontrolador.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 46
4- Gravar o programa no microcontrolador.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 47
5- Testando o código no simulador – Debugger
Para modificar o valor dos registrador, clicar duas vezes na coluna Value e atribuir
o novo valor.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 48
d) Ferramenta Stimulus – é utilizada para simular uma entrada do MC
Menu – Debugger – Stimulus – New Workbook
d) Ferramenta Stop Watch é utilizada para verificar o tempo gasto para o PIC
executar as instruções.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 49
Configurar o Clock do Stop Watch.
Menu – Debugger -> Settings
Modificar a frequência do processador para 4MHZ.
Executar o programa até a rotina que gostaria de verificar o tempo gasto pelo
microcontrolador, Clicar no botão Zero para iniciar o tempo e executar o programa
até o final da rotina.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 50
CAPÍTULO 9- Compilador MPLAB C18
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 51
Figura 5 – Selecionar todos os campos Figura 6 – Selecionar todos os campos
Passo 6: clicar em Next Passo 7: clicar em Next
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 52
CAPÍTULO 10 – EXEMPLOS
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 53
Início Fluxograma Exercício 1
Configurações
Iniciais
Portas, Option, etc
Botão 1
Pressionado?
Liga LED
Botão 2
Pressionado?
Desliga
LED
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 54
Exemplo 1: Acionando uma entrada - botão 0 a saída liga e acionado o botão
1 a saída desliga.
;**************************************
;* CONFIGURAÇÕES PARA GRAVAÇÃO
;*
;**************************************
__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_OFF &
_BODEN_OFF & _PWRTE_ON & _WDT_ON & _XT_OSC
;**************************************
;* DEFINIÇÃO DAS VARIÁVEIS
;*
;**************************************
ENDC
;**************************************
;* DEFINIÇÃO DAS VARIÁVEIS INTERNAS DO PIC *
;*
;**************************************
;**************************************
;* DEFINIÇÃO DOS BANCOS DE RAM *
;* *
;**************************************
;**************************************
;* VETOR DE RESET DO MICROCONTROLADOR *
;* *
;**************************************
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 55
;**************************************
;* CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
;*
;**************************************
CONFIGURACAO
BANK1 ; SELECIONA BANCO 1 DA RAM
MOVLW B'11110011'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11011111'
MOVWF OPTION_REG ; CONFIGURA OPTIONS
MOVLW B'00000000'
MOVWF INTCON ; CONFIGURA INTERRUPÇÕES
; DESABILITADA TODAS AS INTERRUPÇÕES
MOVLW B'00000111'
MOVWF ADCON1 ; CONFIGURA CONVERSOR A/D
; CONFIGURA PORTA COM I/O DIGITAL
;**************************************
;* LOOPING PRINCIPAL *
;**************************************
PRINCIPAL
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 56
Exemplo 2: Nesse exemplo foram atribuídos nomes para os PORT’S, para
facilitar a programação.
;**************************************
;* ENTRADAS *
;*
;**************************************
;**************************************
;* SAÍDAS *
;*
;**************************************
#DEFINE SAIDA_1 PORTB,2 ; ESTADO DO BOTÃO 2
;**************************************
;* LOOPING PRINCIPAL *
;**************************************
PRINCIPAL
TRATA_BOTAO_0
BSF SAIDA_1
GOTO PRINCIPAL ; VOLTA P/ VARREDURA DOS BOTÕES
TRATA_BOTAO_1
BCF SAIDA_1
GOTO PRINCIPAL ; VOLTA P/ VARREDURA DOS BOTÕES
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 57
Início
Configurações
Fluxograma Exercício 3
Iniciais
Portas, Option, etc
Tempo2 = W
Sim
Botão 1
Pressionado?
W = 200
Não
W = 100
NOP
Delay
W = 100
Delay Tempo1=0
Sim
Botão 2
Pressionado?
Liga LED Tempo2=0
Não
W = 100
Delay Retorna
Desiga LED
W = 100
Delay
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 58
Exemplo 3: Oscilador
Acionando o botão 0 a saída 1 oscila com uma frequência de 10HZ ( T=100ms) e
acionando ao botão 1 a saída 1 oscila com uma fequência de 100HZ ( T=10ms)
;**************************************
;* DEFINIÇÃO DAS VARIÁVEIS *
;* *
;**************************************
;**************************************
;* DEFINIÇÃO DAS VARIÁVEIS INTERNAS DO PIC
;* *
;**************************************
;**************************************
;* DEFINIÇÃO DOS BANCOS DE RAM *
;* *
;**************************************
;**************************************
;* ENTRADAS *
;*
;**************************************
;**************************************
;* SAÍDAS *
;*
;**************************************
#DEFINE SAIDA_1 PORTB,2
#DEFINE SAIDA_2 PORTB,3
;**************************************
;* VETOR DE RESET DO MICROCONTROLADOR *
;* *
;**************************************
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 59
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* ROTINA DE DELAY *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; ESTA ROTINA AGUARDA TANTOS MILISEGUNDOS QUANTO O VALOR PASSADO
; POR W. POR EXEMPLO, SE W = .200, ELA AGUARDARÁ 200 MILISEGUNDOS.
;
; O DELAY PRINCIPAL DURA 1ms, POIS POSSUI 5 INSTRUÇÕES (5us) E É
; RODADO 200 VEZES (TEMPO1). PORTANTO 200 * 5us = 1ms.
; O DELAY PRINCIPAL É RODADO TANTAS VEZES QUANTO FOR O VALOR DE
; TEMPO2, O QUAL É INICIADO COM O VALOR PASSADO EM W.
DELAY
MOVWF TEMPO2 ;INICIA TEMPO 2 COM O VALOR
;PASSADO EM W
DL1
MOVLW .200
MOVWF TEMPO1
;**************************************
;* CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
;* *
;**************************************
CONFIGURACAO
BANK1 ; SELECIONA BANCO 1 DA RAM
MOVLW B'11110011'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11011111'
MOVWF OPTION_REG ; CONFIGURA OPTIONS
MOVLW B'00000000'
MOVWF INTCON ; DESABILITADA TODAS AS INTERRUPÇÕES
MOVLW B'00000111'
MOVWF ADCON1 ; CONFIGURA CONVERSOR A/D
; CONFIGURA PORTA COM I/O DIGITAL
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 60
CLRF PORTB ; ZERA TODAS AS SAÍDAS
;**************************************
;* LOOPING PRINCIPAL *
;**************************************
VARRE
CLRWDT ; LIMPA WATCHDOG TIMER
TRATA_BOTAO_0
BSF SAIDA_1 ; LIGA SAIDA 1
MOVLW .100 ; MOVIMENTA 100 PARA W
CALL DELAY ; CHAMA SUBROTINA DELAY
BCF SAIDA_1 ; DESLIGA SAIDA 1
MOVLW .100
CALL DELAY
GOTO VARRE ; VOLTA P/ VARREDURA DOS BOTÕES
TRATA_BOTAO_1
BSF SAIDA_2
MOVLW .10
CALL DELAY
BCF SAIDA_2
CALL DELAY
GOTO VARRE ; VOLTA P/ VARREDURA DOS BOTÕES
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 61
Esquema Elétrico 2 – Trabalhando com Display de 7 segmentos
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 62
Fluxograma Exercício 4
Início
Configurações
Iniciais
Portas, Option, etc
Sim
Botão 0
Pressionado?
Habilita DS1
RB7 = 1
Sim
Botão 2
Pressionado?
Habilita DS2
RB6 = 1
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 63
Exemplo 4: Trabalhando com Display de 7 segmentos, onde cada botão
acionado carrega um valor no display.
;
;**************************************
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
;**************************************
__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_OFF &
_BODEN_OFF & _PWRTE_ON & _WDT_ON & _XT_OSC
;**************************************
;* DEFINIÇÃO DAS VARIÁVEIS *
;**************************************
;**************************************
; DEFINIÇÃO DAS VARIÁVEIS INTERNAS DO PIC *
;**************************************
;**************************************
; * DEFINIÇÃO DOS BANCOS DE RAM *
;**************************************
;**************************************
;* ENTRADAS *
;**************************************
; 1 -> LIBERADO
; 0 -> PRESSIONADO
;**************************************
;* SAÍDAS *
;* *
;**************************************
#DEFINE DIS1 PORTB,7
#DEFINE DIS2 PORTB,6
#DEFINE DIS3 PORTB,5
#DEFINE DIS4 PORTB,4
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 64
;**************************************
;* VETOR DE RESET DO MICROCONTROLADOR *
;**************************************
;**************************************
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
;**************************************
CONFIGURACAO
BANK1 ; SELECIONA BANCO 1 DA RAM
MOVLW B'00001111'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'00000000'
MOVWF TRISD ; CONFIGURA I/O DO PORTB
MOVLW B'11011111'
MOVWF OPTION_REG ; CONFIGURA OPTIONS
MOVLW B'00000000'
MOVWF INTCON ; CONFIGURA INTERRUPÇÕES
; DESABILITADA TODAS AS INTERRUPÇÕES
MOVLW B'00000111'
MOVWF ADCON1 ; CONFIGURA CONVERSOR A/D
; CONFIGURA PORTA COM I/O DIGITAL
;**************************************
;* LOOPING PRINCIPAL *
;**************************************
PRINCIPAL
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 65
; ************************* TRATAMENTO DO BOTÃO 0 ***************************
TRATA_BOTAO_0
MOVLW B'00111111' ; SÍMBOLO 0
MOVWF PORTD
MOVLW B'10000000' ; DISPLAY 1
MOVWF PORTB
GOTO PRINCIPAL ; VOLTA P/ VARREDURA DOS BOTÕES
TRATA_BOTAO_1
MOVLW B'00000110' ; SÍMBOLO 1
MOVWF PORTD
MOVLW B'01000000' ; DISPLAY 2
MOVWF PORTB
GOTO PRINCIPAL ; VOLTA P/ VARREDURA DOS BOTÕES
; ****************************************************************************************************************
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 66
Início
Fluxograma Exercício 5
Configurações
Iniciais Rotação
Portas, Option, etc
Habilita DS1
RB7 = 1
Sim
Delay
Botão 0
Pressionado?
Habilita DS2
Não PORTD = Simbolo 0 RB6 = 1
B’00111111'
Delay
Rotação
Habilita DS3
RB5 = 1
Delay
Sim
Botão 2
Pressionado? Habilita DS4
RB4 = 1
Não PORTD = Simbolo 0
B’00111111'
Delay
Rotação Retorna
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 67
Exemplo 5: Multiplexação dos Displays de 7 segmentos.
PRINCIPAL
RETURN
END ; FIM DO PROGRAMA
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 68
Esquema Elétrico 3 – Trabalhando com Display LCD e Conversor AD
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 69
Início
Fluxograma Exercício 6
Configurações Iniciais
Inicializa as variáveis
Delay de 3ms
Delay de 1ms
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 70
1
Trata botão 0
Sim
Não
Botão 0
Trata botão 0
Pressionado? Terminou o
Filtro?
Não
Sim 1
Sim
Botão 1 Seleciona Display
Trata botão 1
Pressionado? para comandos
Não
Envia comando p/
limpar display
Sim
Botão 2Não
Trata botão 2
Pressionado? Posiciona o
cursor na linha 0
coluna 0
Não
Não
Escreve “Botao o”
Não
Mostrar
tela principal?
Seta FLAG p/
Sim mostrar tela
principal
Mostrar tela
principal
1
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 71
Trata botão 1 Trata botão 2 Trata botão 3
1 1 1
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 72
Mostra tela
Escreve
principal
Limpa FLAG
Carrega argumento passado pelo
Work no barramento de dados do
display
Seleciona display p/ comandos
Escreve “Selecione”
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 73
Exemplo 6: Trabalhando com o Display LCD
;**************************************
;* DEFINIÇÃO DAS VARIÁVEIS *
;**************************************
;**************************************
;* DEFINIÇÃO DAS VARIÁVEIS INTERNAS DO PIC *
;**************************************
#INCLUDE <P16F877A.INC> ; MICROCONTROLADOR UTILIZADO
;**************************************
;* DEFINIÇÃO DOS BANCOS DE RAM *
;**************************************
#DEFINE BANK1 BSF STATUS,RP0 ; SELECIONA BANK1 DA MEMORIA RAM
#DEFINE BANK0 BCF STATUS,RP0 ; SELECIONA BANK0 DA MEMORIA RAM
;**************************************
;* CONSTANTES INTERNAS *
;**************************************
; A DEFINIÇÃO DE CONSTANTES FACILITA A PROGRAMAÇÃO E A MANUTENÇÃO.
;**************************************
;* DECLARAÇÃO DOS FLAGs DE SOFTWARE *
;**************************************
;**************************************
;* ENTRADAS *
;**************************************
#DEFINE BOTAO_0 PORTB,0 ; ESTADO DO BOTÃO 0
#DEFINE BOTAO_1 PORTB,1 ; ESTADO DO BOTÃO 1
#DEFINE BOTAO_2 PORTB,2 ; ESTADO DO BOTÃO 2
#DEFINE BOTAO_3 PORTB,3 ; ESTADO DO BOTÃO 3
; 1 -> LIBERADO
; 0 -> PRESSIONADO
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 74
;**************************************
;* SAÍDAS *
;**************************************
;**************************************
;* VETOR DE RESET DO MICROCONTROLADOR *
;**************************************
ORG 0X0000 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
;**************************************
;* ROTINA DE DELAY (DE 1MS ATÉ 256MS) *
;**************************************
DELAY_MS
MOVWF TEMPO1 ; CARREGA TEMPO1 (UNIDADES DE MS)
MOVLW .250
MOVWF TEMPO0 ; CARREGA TEMPO0 (P/ CONTAR 1MS)
;**************************************
;* TEMPO 1 segundo
;**************************************
TEMPO_1S
MOVWF TEMPO3
PULO4
MOVLW 0X05
MOVWF SEGA
PULO3
MOVLW 0XFF
MOVWF SEGB
PULO2
MOVLW 0XFF
MOVWF SEGC
PULO1
DECFSZ SEGC,F
GOTO PULO1
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 75
DECFSZ SEGB,F
GOTO PULO2
DECFSZ SEGA,F
GOTO PULO3
DECFSZ TEMPO3
GOTO PULO4
RETURN
;**************************************
; * ROTINA DE ESCRITA DE UM CARACTER NO DISPLAY *
;**************************************
; ESTA ROTINA ENVIA UM CARACTER PARA O MÓDULO DE LCD. O CARACTER A SER
; ESCRITO DEVE SER COLOCADO EM WORK (W) ANTES DE CHAMAR A ROTINA.
ESCREVE
MOVWF DISPLAY ; ATUALIZA DISPLAY (PORTD)
NOP ; PERDE 1US PARA ESTABILIZAÇÃO
BSF ENABLE ; ENVIA UM PULSO DE ENABLE AO DISPLAY
GOTO $+1 .
BCF ENABLE .
MOVLW .1
CALL DELAY_MS ; DELAY DE 1MS
RETUR ; RETORNA
;**************************************
;* ROTINA DE ESCRITA DA TELA PRINCIPAL *
;**************************************
; ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA, COM AS FRASES:
MOSTRA_TELA_PRINCIPAL
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 76
MOVLW 'c'
CALL ESCREVE
MOVLW 'i'
CALL ESCREVE
MOVLW 'o'
CALL ESCREVE
MOVLW 'n'
CALL ESCREVE
MOVLW 'e'
CALL ESCREVE
RETURN
;**************************************
;* CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
;**************************************
CONFIGURACAO
CLRF PORTA ; GARANTE AS SAÍDAS EM ZERO
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
MOVLW B'11011111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 77
MOVLW B'11111111'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111111'
MOVWF TRISC ; CONFIGURA I/O DO PORTC
MOVLW B'00000000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00000100'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW B'11011111'
MOVWF OPTION_REG ; CONFIGURA OPTIONS
; PULL-UPs DESABILITADOS
; INTER. NA BORDA DE SUBIDA DO RB0
; TIMER0 INCREM. PELO CICLO DE MÁQUINA
; WDT - 1:128
; TIMER - 1:1
MOVLW B'00000000'
MOVWF INTCON ; CONFIGURA INTERRUPÇÕES
; DESABILITADA TODAS AS INTERRUPÇÕES
MOVLW B'00000111'
MOVWF ADCON1 ; CONFIGURA CONVERSOR A/D
; CONFIGURA PORTA E PORTE COM I/O DIGITAL
;**************************************
;* INICIALIZAÇÃO DA RAM *
;**************************************
; ESTA ROTINA IRÁ LIMPAR TODA A RAM DO BANCO 0, INDO DE 0X20 A 0X7F.
; EM SEGUIDA, AS VARIÁVEIS DE RAM DO PROGRAMA SÃO INICIALIZADAS.
MOVLW 0X20
MOVWF FSR ; APONTA O ENDEREÇAMENTO INDIRETO PARA
; A PRIMEIRA POSIÇÃO DA RAM
LIMPA_RAM
CLRF INDF ; LIMPA A POSIÇÃO
INCF FSR,F ; INCREMENTA O PONTEIRO P/ A PRÓX. POS.
MOVF FSR,W
XORLW 0X80 ; COMPARA O PONTEIRO COM A ÚLT. POS. +1
BTFSS STATUS,Z ; JÁ LIMPOU TODAS AS POSIÇÕES?
GOTO LIMPA_RAM ; NÃO - LIMPA A PRÓXIMA POSIÇÃO
; SIM
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 78
;**************************************
;* CONFIGURAÇÕES INICIAIS DO DISPLAY *
;**************************************
; ESTA ROTINA INICIALIZA O DISPLAY P/ COMUNICAÇÃO DE 8 VIAS, DISPLAY PARA 2
; LINHAS, CURSOR APAGADO E DESLOCAMENTO DO CURSOR À DIREITA.
INICIALIZACAO_DISPLAY
BCF RS ; SELECIONA O DISPLAY P/ COMANDOS
MOVLW .3
CALL DELAY_MS ; DELAY DE 3MS (EXIGIDO PELO DISPLAY)
MOVLW .1
CALL DELAY_MS ; DELAY DE 1MS
;**************************************
;* VARREDURA DOS BOTÕES *
;* LOOP PRINCIPAL *
;**************************************
; A ROTINA PRINCIPAL FICA CHECANDO O ESTADO DOS BOTÕES. CASO ALGUM SEJA
; PRESSIONADO, A ROTINA DE TRATAMENTO DO BOTÃO É CHAMADA.
VARRE
CLRWDT ; LIMPA WATCHDOG TIMER
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 79
BTFSS BOTAO_2 ; O BOTÃO 2 ESTÁ PRESSIONADO ?
GOTO TRATA_BOTAO_2 ; SIM - PULA P/ TRATA_BOTAO_2
; NÃO
MOVLW 'B'
CALL ESCREVE
MOVLW 'o'
CALL ESCREVE
MOVLW 't'
CALL ESCREVE
MOVLW 'a'
CALL ESCREVE
MOVLW 'o'
CALL ESCREVE
MOVLW ''
CALL ESCREVE
MOVLW '0'
CALL ESCREVE
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 80
BSF TELA_PRINCIPAL ; SETA FLAG P/ MOSTRAR TELA PRINCIPAL
TRATA_BOTAO_1
MOVF FILTRO_BOTOES,F
BTFSC STATUS,Z ; FILTRO JÁ IGUAL A ZERO ?
GOTO VARRE ; SIM - VOLTA P/ VARREDURA DO TECLADO
; NÃO
MOVLW 'B'
CALL ESCREVE
MOVLW 'o'
CALL ESCREVE
MOVLW 't'
CALL ESCREVE
MOVLW 'a'
CALL ESCREVE
MOVLW 'o'
CALL ESCREVE
MOVLW ''
CALL ESCREVE
MOVLW '1'
CALL ESCREVE
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 81
CAPÍTUO 11- Linguagem C MPLAB C18
1- Comentários
// comentário de uma única linha.
/* comentário */ comentário de múliplas linhas.
2- Identificadores – variáveis
3- Tipos de dados
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 82
4- Declaração de variáveis e constantes
Exemplo
Char teste, aluno; \\ 2 variáveis tipo char
Int temperatura; \\ variável tipo inteiro
Unsigned int dado = 100; \\ variável tipo inteiro e valor inicial de 100
Float pi = 3.14; \\ variável tipo float e valor inicial de 3,14
6 Operadores
Aritméticos
Operador Operação
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto da divisão
++ Incremento
-- Decremento
Relacionais
Operador Operação
== Igual a
!= Diferente
> Maior que
>= Maior ou igual a
< Menor que
<= Menor ou igual a
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 83
Lógicos
Operador Operação
&& AND
|| OR
! Not
Bit a Bit
Operador Operação
& AND
| OR
^ XOR
~ NOT (inverte o estado dos bits)
>> Deslocamento de bit(s) à direita
<< Deslcocamento de bit(s) à esquerda
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 84
Projeto Integrador
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 85
Projeto Integrador : Placa de simulação para microcontrolador PIC 16F877A
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 86
Tabela de caracteres ASCII imprimíveis
Decimal Caractere Decimal Caractere
32 espaço 80 P
59 ; 107 k
33 ! 81 Q
60 < 108 l
34 " 82 R
61 = 109 m
35 # 83 S
62 > 110 n
36 $ 84 T
63 ? 111 o
37 % 85 U
64 @ 112 p
38 & 86 V
65 A 113 q
39 ' 87 w
66 B 114 r
40 ( 88 X
67 C 115 s
41 ) 89 Y
68 D 116 t
42 * 90 Z
69 E 117 u
43 + 91 [
70 F 118 v
44 , 92 \
71 G 119 w
45 - 93 ]
72 H 120 x
46 . 94 ^
73 I 121 y
47 / 95 _
74 J 122 z
48 0 96 `
75 K 123 {
49 1 97 A
76 L 124 |
50 2 98 b
77 M 125 }
51 3 99 c
78 N 126 ~
52 4 100 d
79 O 127 DEL
53 5 101 e
54 6 102 f
55 7 103 g
56 8 104 h
57 9 105 i
58 : 106 j
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 87
Simulação utilizando Proteus
4- Em Program File, anexar o arquivo .hex gerado pelo MPLAB. Esse arquivo
está no mesmo diretório (mesma pasta) que o projeto do MPLAB.
Anotações de Aula – Microcontroladores Prof Nilton Serigioli 88