Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumrio
Captulo 1 Introduo aos microcontroladores ..................................................3
Microcontroladores versus microprocessadores ..............................3
CISC e RISC.....................................................................................4
Captulo 2 O que um PIC ? ............................................................................5
Captulo 3 Conhecendo o PIC 16F877 .............................................................12
Diagrama interno .............................................................................13
Pinagem e caractersticas eltricas .................................................14
Descrio dos pinos ........................................................................15
Mapeamento da memria de dados ................................................18
Captulo 4 Conjunto de instrues .....................................................................19
Exemplos das instrues...................................................................21
Exerccios .........................................................................................26
Captulo 5 Programao ....................................................................................31
Captulo 6 Conversor AD....................................................................................33
Captulo 7 Comunicao Serial USART..........................................................37
Captulo 8 Software MPLAB
Criar um Projeto.................................................................................42
Gravar um Programa.........................................................................47
Testando o programa DEBUGGER ...............................................48
Captulo 9 Compilador MPLAB C18 ...................................................................51
Captulo 10 Exemplos
Esquema Eltrico 1: Botes e LEDs .................................................53
Exemplo 1: Liga e desliga uma sada .............................................. 55
Exemplo 2: Atribuio de nomes para os PORTs ............................57
Exemplo 3: Temporizao - Oscilador.............................................. 58
Esquema Eltrico 2: Display de 7 segmentos...................................61
Exemplo 4: Trabalhando com Display de 7 segmentos................... 64
Exemplo 5: Multiplexao de Display de 7 segmentos.....................68
Esquema Eltrico 3: Display LCD e Conversor AD...........................69
Exemplo 5: Trabalhando com Display LCD.......................................74
Captulo 11 Linguagem C .................................................................................82
Projeto Integrador ..................................................................................................85
Tabela ASCII ...... ..................................................................................................87
Simulao utilizando Proteus .................................................................................88
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
Introduo
As circunstncias que se nos deparam hoje no campo dos microcontroladores tm
os seus primrdios no desenvolvimento da tecnologia dos circuitos integrados.
Este desenvolvimento tornou possvel armazenar centenas de milhares de
transistores num nico chip. Isso constituiu um pr-requisito para a produo de
microprocessadores e, os primeiros computadores foram construdos adicionando
perifricos externos tais como memria, linhas de entrada e sada, temporizadores
e outros. Um crescente aumento do nvel de integrao permitiu o aparecimento
de circuitos integrados contendo simultaneamente processador e perifricos. Foi
assim que o primeiro chip contendo um microcomputador e que mais tarde haveria
de ser designado por microcontrolador.
Aplicaes
Microcontroladores so usados com frequncia em produtos e dispositivos de
controle automtico, tais como sistemas de controle em motores de automveis,
controles remotos, mquinas de escritrio, ferramentas e brinquedos. Ao reduzir o
tamanho, custo e consumo de energia em comparao com um projeto que usa
microprocessador, memria e dispositivos de E/S separados, microcontroladores
tornam vivel economicamente o controle eletrnico de muitos processos. Cerca
de 50% dos microcontroladores vendidos so controladores "simples", outros 20%
so processadores de sinais digitais (DSPs) mais especializados.
Os microcontroladores podem ser encontrados em praticamente todos os
dispositivos eletrnicos digitais que nos cercam: carto de banco, dentro do
monitor, controladores de temperatura, Harddisk, relgio de pulso, rdio relgio,
mquinas de lavar, forno de microondas, telefones, etc. Voc est certamente
cercado de dezenas deles agora. Eles permitiram evoluo de equipamentos
que h anos no evoluam como os motores a combusto, que agora com o novo
controle eletrnico podem funcionar com sistema bicombustvel e poluindo menos
e as mquinas fotogrficas, que migraram de processos qumico/mecnico a
circuitos com microcontroladores. (fonte:www.wikipedia.com.br)
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
Unidade de Memria
A memria a parte do microcontrolador cuja funo guardar dados. A maneira
mais fcil de explicar descrev-la como uma grande prateleira cheia de gavetas.
Se supusermos que marcamos as gavetas de modo a elas no se confundirem
umas com as outras, ento o seu contedo ser facilmente acessvel. Basta saber
a designao da gaveta e o seu contedo ser conhecido.
A memria o conjunto de todos os locais de memria (gavetas) e
endereamento nada mais que selecionar um deles. Isto significa que
precisamos selecionar o endereo desejado (gaveta) e esperar que o contedo
desse endereo nos seja apresentado (abrir a gaveta). Alm de ler de um local da
memria (ler o contedo da gaveta), tambm possvel escrever num endereo
da memria (introduzir um contedo na gaveta).
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
Contador de Programa
O contador de programa (PC = Program Counter), um registro de 13 bits que
contm o endereo da instruo que vai ser executada. Ao incrementar ou alterar
(por exemplo, no caso de saltos) o contedo do PC, o microcontrolador consegue
executar as todas as instrues do programa, uma aps outra.
Pilha
O PIC16F877 tem uma pilha (stack) de 13 bits e 8 nveis de profundidade, o que
corresponde a 8 locais de memria com 13 bits de largura. O seu papel bsico
guardar o valor do contador de programa quando ocorre um salto do programa
principal para o endereo de um subprograma a ser executado. Depois de ter
executado o subprograma, para que o microcontrolador possa continuar com o
programa principal a partir do ponto em que o deixou, ele tem que ir buscar pilha
esse endereo e carreg-lo no contador de programa. Quando nos movemos de
um programa para um subprograma, o contedo do contador de programa
empurrado para o interior da pilha (um exemplo disto a instruo CALL). Quando
so executadas instrues tais como RETURN, RETLW ou RETFIE no fim de um
subprograma, o contador de programa retirado da pilha, de modo a que o
programa possa continuar a partir do ponto em que a seqncia foi interrompida.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
10
Mapeamento da Memria
BANCO
0
1
2
3
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
11
Microcontrolador de 40 pinos;
Via de programao com 14 bits e 35 instrues;
33 portas configurveis como entrada e sada;
15 interrupes disponveis;
Memria de programao E2PROM FLASH;
Memria de programa de 8Kwords;
Memria E2PROM interna com 256 bytes;
Memria RAM com 368 bytes;
Trs timers;
Comunicao seriais: SPI, I2C e USART;
Conversores analgicos de 10 bits (8x) e comparadores analgicos (2x)
Dois mdulos CCP: Capture, Compare e PWM;
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
12
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
13
Caractersticas Eltricas
Temperatura de trabalho
Temperatura de armazenamento
Tenso de trabalho
Tenso mxima no pino Vdd (em relao ao Vss)
Tenso mxima no pino MCRL (em relao ao Vss)
Tenso mxima no pino RA4 (em relao ao Vss)
Tenso mxima nos demais pinos (em relao ao Vss)
Dissipao de energia
Corrente mxima de sada no pino Vss
Corrente mxima de entrada no pino Vdd
Corrente mxima de sada de um pino( quando em Vss)
Corrente mxima de entrada de um pino( quando em Vdd)
Corrente mxima de entrada do PORTA, PORTB e PORTE
combinados
Corrente mxima de sada do PORTA, PORTB e PORTE
combinados
Corrente mxima de entrada do PORTC e PORTD combinados
Corrente mxima de sada do PORTC e PORTD combinados
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
-55 at +125 C
-65 at +150 C
4,0V at 5,5V
-0,3V at 7,5V
0 at 14V
0V at 8,5V
-0,3V at Vdd
+0,3V
1,0W
300mA
250mA
25mA
25mA
200mA
200mA
200mA
200mA
14
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
15
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
16
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
17
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
18
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
19
Instrues
ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
Argumentos
f,d
f,d
f
f,d
f,d
f,d
INCF
INCFSZ
f,d
f,d
IORWF
MOVF
MOVWF
RLF
RRF
SUBWF
SWAPF
f,d
f,d
f,d
f,d
f,d
f,d
f,d
XORWF
f,d
Instrues
ADDLW
ANDLW
IORLW
MOVLW
SUBLW
XORLW
Argumentos
K
K
K
K
K
K
OperaescomBits
Instrues
BCF
BSF
BTFSC
BTFSS
Argumentos
f,b
f,b
f,b
f,b
Descrio
Impe ZERO no bit do registrador f
Impe UM no bit do registrador f
Testa o bit do registrador f, e pula a prxima linha se ele for ZERO
Testa o bit do registrador f, e pula a prxima linha se ele for UM
Argumentos
R
R
K
-
Descrio
Gasta um ciclo de mquina sem fazer absolutamente nada
Executa a rotina R
Limpa o registrador WDT para no ocorrer o reset
Desvia para o ponto R, mudando o PC
Retorna de uma interrupo
Retorna de uma rotina, com k em W
Retorna de uma rotina, sem afetar W
Coloca o PIC em modo sleep
Controles
Instrues
NOP
CALL
CLRWDT
GOTO
RETFIE
RETLW
RETURN
SLEEP
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
20
D ou .
D20 ou .20
Hexadecimal
Exemplo:
H ou 0X
H20 ou 0X20
Binrio
Exemplo
B
B00001111
ASCII
Exemplo
A
Aa
BTFSS
BCF
BSF
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
21
REG1 = xx
REG1 = 0x10
MOVF
REG1,W
Antes da instruo: W = 0x10
Depois da instruo: W = 0x20
REG1 = 0x20
REG1 = 0x20
CLRF
REG1
Depois da instruo: REG1 = 0x00
CLRW
Depois da instruo: W = 0x00
INCF
REG1,F
Antes da instruo: REG1 = 0x09
Depois da instruo: REG1 = 0x10
INCF
REG1,W
Antes da instruo: REG1 = 0x06
Depois da instruo: REG1 = 0x06
W= 0x02
W= 0x07
DECF
REG1,F
Antes da instruo: REG1 = 0x09
Depois da instruo: REG1 = 0x08
DECF
REG1,W
Antes da instruo: REG1 = 0x10
Depois da instruo: REG1 = 0x10
W= 0x02
W= 0x0F
SWAPF
REG1,F
Antes da instruo: REG1 = B00001111
Depois da instruo: REG1 = B11110000
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
22
REG1 = 0x11
REG1 = 0x11
ADDWF
REG1,F
Antes da instruo: W = 0x17
Depois da instruo: W = 0x17
REG1 = 0x17
REG1 = 0x28
SUBLW
0x07
SUBLW
0x00
SUBWF
REG1,W
Antes da instruo: W = 0x17
Depois da instruo: W = 0x06
SUBLW
0x10
REG1 = 0x11
REG1 = 0x11
A,W
B,W
STATUS,C
MAIOR
(Caso A seja maior que B)
MENOR
(Caso A seja menor que B)
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
23
W= B01110111
W= B01110111
IORLW
0x B00001111
Antes da instruo: W= B10010101
Depois da instruo: W= B10011111
IORWF
PORTA,W
Antes da instruo: PORTA= B11111111
Depois da instruo: PORTA= B11111111
W= B01110111
W= B01110111
XORLW
B00010010
Antes da instruo: W= B00000100
Depois da instruo:W= B00010110
XORWF
PORTA,W
Antes da instruo: PORTA = B00100010
Depois da instruo: PORTA = B00100010
W= B00100010
W= B00000000
A,W
B,W
STATUS,Z
DIFERENTE
IGUAL
COMF
PORTA,W
Antes da instruo: PORTA = B00100010
Depois da instruo: PORTA = B00100010
W= B11011101
RRF REG1,F
Antes da instruo: REG1= B11100110
Depois da instruo: REG1 = B01110011
C= 0
C= 0
RLF REG1,F
Antes da instruo: REG1= B11100110
Depois da instruo: REG1 = B11001100
C= 0
C= 1
DECFSZ
CONTADOR,F
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
24
GOTO
GOTO
CONTINUA
ACABOU
CONTADOR,F
CONTINUA
ACABOU
25
Exerccios
Contedo dos
Registradores
MOVLW
0X20
MOVWF
REGA
MOVLW
.10
MOVWF
REGB
DECF REGB,F
INCF REGA,F
MOVF REGA,W
MOVWFREGC
INCF REGC,W
CLRF REGA
SWAPFREGB,F
Contedo dos
Registradores
MOVLW
0X0F
MOVWF
REGA
MOVWF
REGB
SWAPFREGB,F
INCF REGB,W
MOVWFREGA
INCFREGA
CLRWF
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
26
Contedo dos
Registradores
MOVLW
.200
MOVWF
REGA
MOVLW
.100
MOVWF
REGB
MOVFREGA,W
ANDLW0X0F
MOVWFREGC
MOVFREGA,W
ANDWFREGB,W
MOVWFREGD
MOVFREGA,W
IORLW0X0F
MOVWFREGE
MOVFREGA,W
XORWFREGB,W
MOVWFREGF
COMFREGF,F
Exerccio 4: Utilizando as instrues estudas, faa um programa que atenda a
seguinte situao lgica. REGE = (REGA.REGB) + (REGC.REGD)
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
27
Contedo dos
Registradores
MOVLW
.10
MOVWF
REGA
MOVLW
.5
MOVWF
REGB
MOVLW
.1
MOVWF
REGC
CONTINUA
MOVF REGA,W
XORWFREGB,W
BTFSS STATUS,Z
GOTO DIFERENTE
GOTO IGUAL
DIFERENTE
INCF REGB,F
RLFREGC,F
GOTO CONTINUA
IGUAL
CLRF REGB
GOTO CONTINUA
Exerccio 6: Utilizando as instrues estudas, faa um programa que atenda a
seguinte situao:
Contador de 0 a 99 - a cada varredura do programa o registrador UNIDADE deve
ser incrementado at que seu contedo seja igual a 10, aps isso a UNIDADE
deve ser zerada e incrementar um no registrador DEZENA.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
28
Contedo dos
Registradores
MOVLW
.128
MOVWF
REGA
MOVLW
.1
MOVWF
REGB
MOVLW
.10
MOVWFCONTADOR
FICA
DECFSZCONTADOR
GOTO CONTINUA
GOTO ACABOU
CONTINUA
RLFREGB,F
RRFREGA,F
GOTO FICA
ACABOU
CLRF CONTADOR
GOTO FICA
Exerccio 8: Faa o mesmo programa do exerccio 6 utilizando como comparao
a instruo DECFSZ .
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
29
Contedo dos
Registradores
MOVLW
.10
MOVWF
REGA
MOVLW
.20
MOVWF
REGB
MOVFREGB,W
ADDLW.5
MOVWFREGB
MOVFREGA,W
ADDWF
REGB,W
MOVWFREGC
TESTE
MOVFREGA,W
SUBWFREGC,W
BTFSCSTATUS,C
GOTOMAIOR
GOTOMENOR
MAIOR
DECFREGC
GOTOTESTE
MENOR
INCFREGC
GOTOTESTE
Exerccio 10: Utilizando as instrues estudas, faa um programa que atenda a
seguinte situao: REGD= (REGA+REGB+REGC), se REGD for maior que 15 o
nible alto do REGD deve ser limpo.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
30
CAPTULO 5 - Programao
Arquivo de Definio: INCLUDES
A fim de padronizar e agilizar mais a programao, existe a possibilidade de
criarmos e utilizarmos arquivos de definio, que foram chamados pela Microchip
de arquivo Includes. Esses arquivos nada mais so do que arquivos de texto,
ou mesmo cdigo fonte, que sero inclusos no seu programa. Desta forma, a
prpria Microchip criou um arquivo include para cada tipo de microcontrolador, em
que esto definidos os nomes e endereos de todos os SFRs e uma srie de
outras definies necessrias para a utilizao dos microcontroladores.
#INCLUDE <P16F877A.INC>
A diretriz # DEFINE substitui os nomes por uma expresso inteira. Por exemplo
podemos dar um nome a uma sada, substituindo PORTB,1 por LED
# DEFINE
LED
PORTB,1
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
31
_PWRTE_ON: Para Power Up ligado - esta opo ir fazer com que o PIC s
comece a operar cerca de 72ms aps o pino MCLR ser colocado em nvel alto.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
32
Generalidades
O conversor A/D encontra-se implementado em silcio nos PIC16F87X. Trata-se
de um conversor de aproximaes sucessivas e com 10 bits de resoluo.O
modelo de 28 terminais dispe de cinco canais de entrada, e os 40 terminais de
oito canais. Nos PIC16F870/3/6 os cinco canais de entradas so suportados pelos
terminais da porta A.
Para seu funcionamento so necessrias duas voltagens de referncia, chamadas
Vref+ e Vref-, que devem ser selecionadas por software e que podem utilizar
tenses internas (VDD e Vss) do prprio microcontrolador ou tenses externas
aplicadas pelos pinos RA3/AN3/Vref+ e RA2/AN2/Vref-.
O registro ADCON0
Os dois bits mais significativos ADCS1:0 so usados para selecionar a frequncia
de clock empregada na converso (Tosc=1/Fosc). Na tabela podemos ver a
correspondncia de cada combinao de bits com um tempo de converso. Este
tempo chamado de TAD e, trabalhando com um CAD de 10 bits de resoluo,
necessidades um mnimo de 12TAD para finalizar a converso. A durao mnima
de um TAD nos PIC16F87X de 1,6_s.
Os bits CHS2:0 selecionam o canal por onde se introduzir o sinal analgico a ser
convertido. Na tabela mostra-se a correspondncia.
O bit GO/DONE serve para iniciar a converso. Uma vez colocada em 1
permanecer nesse estado enquanto dure a converso e passar
automaticamente para 0 quanto finalize. O bit ADON o bit de habilitao do
conversor. Se o seu valor for 1 permite o funcionamento do conversor, porm se o
seu valor for 0 probe ou inabilita o funcionamento deste.
O bit ADCON0<1> no est implementado, no possui nenhuma funo.
ADCON0(ENDEREOS:1Fh)
R/W-0
ADCS1
bit7
R/W-0
ADCS0
R/W-0
CHS2
R/W-0
CHS1
R/W-0
CHS0
R/W-0
GO/DON E
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
R/W-0
-
R/W-0
ADON
bit0
33
O registro ADCON1
O bit mais significativo do registro ADCON1 o ADFM e serve para selecionar o
formato do resultado da converso. Se o seu valor for 1 o resultado ser
justificado direita. Portanto, tendo em conta que a resoluo
ADCON1 (ENDEREOS:9Fh)
U-0
ADFM
bit7
U-0
-
R/W-0
-
U-0
-
R/W-0
PCFG3
R/W-0
PCFG2
R/W-0
PCFG1
R/W-0
PCFG0
bit0
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
34
Os registros de trabalho
Os registros de trabalho so aqueles onde se armazenar o resultado da
converso. 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
sero preenchidos com zeros em funo do bit ADFM.
Seleo TAD
TAD
ADCS1:ADCS0
20 MHz
5 MHz
1.25mHZ
2.Tosc
00
100 ns
400 ns
1,6 ns
8.Tosc
01
400 ns
1.6 ns
6,4 us
32.Tosc
10
1,6 us
6,4 us
2,6us
AC
11
2-6 us
2-6 us
2-6 us
Valores assumidos por TAD para diferentes freqncias de trabalho.
333,3kHz
6 us
24 us
96 us
2-6 us
CHS2
CHS1
CHS0 CANAL
0
0
0
Canal 0 (RA0/AN0)
0
0
1
Canal 1 (RA1/AN1)
0
1
0
Canal 2 (RA2/AN2)
0
1
1
Canal 3 (RA3/AN3)
1
0
0
Canal 4 (RA4/AN4)
1
0
1
Canal 5 (RA5/AN5) (1)
1
1
0
Canal 6 (RA6/RA6) (1)
1
1
1
Canal 7 (RA7/AN7)
(1) No implementados nos PICI6F87X de 28 terminais
Seleo do canal a converter.
35
AN0/
RE0
A
A
A
A
A
A
0
A
A
A
A
A
A
A
A
Vref+
RE2
V00
AA3
V00
AA3
V00
AA3
V00
AA3
V00
AA3
AA3
AA3
AA3
V00
AA3
VrefRE2
VSS
VSS
VSS
VSS
VSS
VSS
VSS
AA2
VSS
VSS
AA2
AA2
AA2
VSS
AA2
CHAN/
Refs
8/0
7/1
5/0
4/1
3/0
2/1
0/0
6/2
6/0
5/1
4/2
3/2
2/2
1/0
1/2
Passo
1
2
3
4
5
6
Procedimento
Configurao do CAD
Configurao de interrupo A/D
(opcional)
Esperar o tempo de aquisio
Incio da converso
Esperar o tempo de converso
Leitura do resultado
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
36
Caracterstica
Mestre
Escravo
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
37
CSAC
1
0
Bit 6
Bit 3
Bit 2
TX9
1
0
TXEN
1
0
SYNC
1
0
--BRGH
Bit 1
1
0
TRMT
Bit 0
1
0
TX90
Bit 5
Bit 4
38
O registro TXSTA
Na imagem da figura, podemos ver a configurao deste junto ao detalhe dos bits
que o formam. O bit mais significativo, CSRC, quem determina a fonte do relgio
(externa ou interna), portanto tambm quem determina se o PIC trabalhar como
escravo (relgio tomado de fonte externa) ou como mestre (interna). O bit 6, TX9,
serve para selecionar a transmisso de 8 ou 9 bits. O prximo bit, o TXEN, o bit
de autorizao que habilita a transmisso. O bit SYNC determina se a transmisso
ser realizada em modo sncrono ou assncrono, portanto de suma importncia
comparar o restante dos bits. O prxima bit no est implementado fisicamente, j
o prximo o bit BRGH, que permite selecionar a velocidade de transmisso em
modo assncrono do gerador de freqncia interna do dispositivo. O prximo bit,
TRMT, utilizado para informar o estado do registro de turno de transmisso. E,
por ltimo, o bit 0 ou bit TX9D, que usado unicamente nas transmisses de 9
bis, o nono bit desta e que pode ser o bit de paridade.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
39
SPEN
1
Bit 6
0
RX9
Bit 5
1
0
SREN
Bit 4
Bit 3
1
0
CREN
1
0
ADDEN
1
Bit 2
FERR
Bit 1
1
0
0ERR
Bit 0
1
0
RX90
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
40
O registro RCSTA
O registro de estado da recepo 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 autorizao ou habilitao da comunicao pela porta serial (pinos
RC6 e RC7).
Como configuraramos o modo de
comunicao para efetuar uma recepo
contnua em modo sncrono de9 bits, onde
nosso microcontrolador fosse escravo?
Devemos configurar o registro TXSTA de
forma que SYNC deve ser os seus bits
configuraes da seguinte forma:
SPEN=RX9=CREN=1
SREN=0
O bit RX9 serve para selecionar o nmero de bits que vamos receber, oito ou
nove. O prximo bit, SREN, determina que s ser realizada uma recepo;
utilizado apenas em modo sncrono quanto o dispositivo est em modo mestre e
se foi selecionado; ao finalizar a recepo o bit passa automaticamente para 0. O
prximo, o CREN, similar ao que acabamos de ver: habilita a recepo contnua
de dados ao invs de permitir uma nica recepo mediante este bit, configura-se
a transmisso para que o microcontrolador esteja continuamente preparado para
receber dados.
O bit ADDEN somente usado quando a recepo de 9 bits (RX9=1) e serve
para habilitar a deteco do endereo, uma interrupo e o carregamento do
buffer de recepo. Os dos bits seguintes so bits indicadores de erros na
comunicao: 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
recepo. O ltimo bit do registro, RX9D, ser o nono bit da recepo quanto a
comunicao for de 9 bits.
Da mesma forma que no registro de transmisso, na tabela da figura podemos
observar os bits anteriormente descritos e a funo que executam, atendendo o
valor que possuem.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
41
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
42
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
43
Pronto! O projeto est finalizado e aparecer uma janela com o resumo das
configuraes.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
44
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
45
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
46
2 3 4 5
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
47
Para modificar o valor dos registrador, clicar duas vezes na coluna Value e atribuir
o novo valor.
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
48
Pin / SFR
Action - ao:
Fire
habilitar a ao
d) Ferramenta Stop Watch utilizada para verificar o tempo gasto para o PIC
executar as instrues.
Menu Debugger Stop Watch
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
49
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
50
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
51
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
52
CAPTULO 10 EXEMPLOS
Esquema Eltrico.1 Trabalhando com entradas e sadas
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
53
Incio
Fluxograma Exerccio 1
Configuraes
Iniciais
Portas, Option, etc
Boto 1
Pressionado?
Liga LED
Boto 2
Pressionado?
Desliga
LED
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
54
0X20
ENDC
;**************************************
;*
DEFINIO DAS VARIVEIS INTERNAS DO PIC
;*
;**************************************
#include <P16F877A.INC>
; MICROCONTROLADOR UTILIZADO
;**************************************
;*
DEFINIO DOS BANCOS DE RAM
;*
*
;**************************************
#DEFINE
#DEFINE
BANK1 BSF
BANK0 BCF
;**************************************
;*
VETOR DE RESET DO MICROCONTROLADOR
;*
*
;**************************************
ORG 0x000
GOTO CONFIGURACAO
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
55
;**************************************
;*
CONFIGURAES INICIAIS DE HARDWARE E SOFTWARE
;*
;**************************************
CONFIGURACAO
BANK1
MOVLW
MOVWF
B'11110011'
TRISB
MOVLW
MOVWF
B'11011111'
OPTION_REG
; CONFIGURA OPTIONS
MOVLW
MOVWF
B'00000000'
INTCON
MOVLW
MOVWF
B'00000111'
ADCON1
; CONFIGURA INTERRUPES
; DESABILITADA TODAS AS INTERRUPES
BANK0
CLRF PORTB
;**************************************
;*
LOOPING PRINCIPAL
;**************************************
PRINCIPAL
BTFSS PORTB,0
GOTO TRATA_BOTAO_0
BTFSS PORTB,1
GOTO TRATA_BOTAO_1
GOTO PRINCIPAL
; FIM DO PROGRAMA
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
56
BOTAO_0
PORTB,0
; ESTADO DO BOTO 0
#DEFINE
BOTAO_1
PORTB,1
; ESTADO DO BOTO 1
;**************************************
;*
SADAS
*
;*
;**************************************
#DEFINE
SAIDA_1
PORTB,2
;**************************************
;*
LOOPING PRINCIPAL
;**************************************
; ESTADO DO BOTO 2
PRINCIPAL
BTFSS BOTAO_0
GOTO TRATA_BOTAO_0
BTFSS BOTAO_1
GOTO TRATA_BOTAO_1
GOTO PRINCIPAL
END
; FIM DO PROGRAMA
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
57
Incio
Fluxograma Exerccio 3
Configuraes
Iniciais
Portas, Option, etc
Inicia as varieis
Delay
Tempo2 = W
Boto 1
Pressionado?
Sim
W = 200
No
Liga LED
Tempo1 =200
W = 100
NOP
Delay
Desiga LED
NOP
W = 100
Boto 2
Pressionado?
Delay
Tempo1=0
Liga LED
Tempo2=0
Sim
No
W = 100
Delay
Retorna
Desiga LED
W = 100
Delay
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
58
Exemplo 3: Oscilador
Acionando o boto 0 a sada 1 oscila com uma frequncia de 10HZ ( T=100ms) e
acionando ao boto 1 a sada 1 oscila com uma fequncia de 100HZ ( T=10ms)
;**************************************
;*
DEFINIO DAS VARIVEIS
*
;*
*
;**************************************
CBLOCK
TEMPO1
TEMPO2
ENDC
0X20
;**************************************
;*
DEFINIO DAS VARIVEIS INTERNAS DO PIC
;*
*
;**************************************
#include <P16F877A.INC>
; MICROCONTROLADOR UTILIZADO
;**************************************
;*
DEFINIO DOS BANCOS DE RAM
*
;*
*
;**************************************
#DEFINE
#DEFINE
BANK1 BSF
BANK0 BCF
;**************************************
;*
ENTRADAS
*
;*
;**************************************
#DEFINE
#DEFINE
BOTAO_0
BOTAO_1
PORTB,0
PORTB,1
; ESTADO DO BOTO 0
; ESTADO DO BOTO 1
;**************************************
;*
SADAS
*
;*
;**************************************
#DEFINE
SAIDA_1
PORTB,2
#DEFINE
SAIDA_2
PORTB,3
;**************************************
;*
VETOR DE RESET DO MICROCONTROLADOR
;*
*
;**************************************
ORG 0x000
GOTO CONFIGURACAO
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
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 INSTRUES (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
MOVLW
MOVWF
.200
TEMPO1
DL1
DL2
DECFSZ
GOTO DL1
TEMPO1,F
TEMPO2,F
RETURN
;**************************************
;*
CONFIGURAES INICIAIS DE HARDWARE E SOFTWARE
;*
*
;**************************************
CONFIGURACAO
BANK1
MOVLW
MOVWF
B'11110011'
TRISB
MOVLW
MOVWF
B'11011111'
OPTION_REG
; CONFIGURA OPTIONS
MOVLW
MOVWF
B'00000000'
INTCON
MOVLW
MOVWF
B'00000111'
ADCON1
BANK0
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
60
CLRF PORTB
;**************************************
;*
LOOPING PRINCIPAL
*
;**************************************
VARRE
CLRWDT
BTFSS BOTAO_0
GOTO TRATA_BOTAO_0
BTFSS BOTAO_1
GOTO TRATA_BOTAO_1
GOTO VARRE
; LIGA SAIDA 1
; MOVIMENTA 100 PARA W
; CHAMA SUBROTINA DELAY
; DESLIGA SAIDA 1
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
61
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
62
Fluxograma Exerccio 4
Incio
Configuraes
Iniciais
Portas, Option, etc
Sim
Boto 0
Pressionado?
PORTD = Simbolo 0
B00111111'
No
Habilita DS1
RB7 = 1
Sim
Boto 2
Pressionado?
No
PORTD = Simbolo 0
B00111111'
Habilita DS2
RB6 = 1
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
63
0X20
;**************************************
; DEFINIO DAS VARIVEIS INTERNAS DO PIC
;**************************************
#include <P16F877A.INC>
; MICROCONTROLADOR UTILIZADO
;**************************************
; * DEFINIO DOS BANCOS DE RAM
*
;**************************************
#DEFINE
#DEFINE
BANK1 BSF
BANK0 BCF
;**************************************
;*
ENTRADAS
*
;**************************************
#DEFINE
#DEFINE
#DEFINE
#DEFINE
BOTAO_0
BOTAO_1
BOTAO_2
BOTAO_3
PORTB,0
PORTB,1
PORTB,2
PORTB,3
; ESTADO DO BOTO 0
; ESTADO DO BOTO 1
; ESTADO DO BOTO 2
; ESTADO DO BOTO 3
; 1 -> LIBERADO
; 0 -> PRESSIONADO
;**************************************
;*
SADAS
*
;*
*
;**************************************
#DEFINE
DIS1 PORTB,7
#DEFINE
DIS2 PORTB,6
#DEFINE
DIS3 PORTB,5
#DEFINE
DIS4 PORTB,4
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
64
;**************************************
;*
VETOR DE RESET DO MICROCONTROLADOR
;**************************************
ORG 0x000
GOTO CONFIGURACAO
;**************************************
; * CONFIGURAES INICIAIS DE HARDWARE E SOFTWARE
;**************************************
CONFIGURACAO
BANK1
MOVLW
MOVWF
B'00001111'
TRISB
MOVLW
MOVWF
B'00000000'
TRISD
MOVLW
MOVWF
B'11011111'
OPTION_REG
; CONFIGURA OPTIONS
MOVLW
MOVWF
B'00000000'
INTCON
MOVLW
MOVWF
B'00000111'
ADCON1
; CONFIGURA INTERRUPES
; DESABILITADA TODAS AS INTERRUPES
BANK0
CLRF PORTB
CLRF PORTD
;**************************************
;*
LOOPING PRINCIPAL
;**************************************
PRINCIPAL
BTFSS BOTAO_0
GOTO TRATA_BOTAO_0
BTFSS BOTAO_1
GOTO TRATA_BOTAO_1
GOTO PRINCIPAL
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
65
; SMBOLO 0
; DISPLAY 1
; VOLTA P/ VARREDURA DOS BOTES
END
; SMBOLO 1
; DISPLAY 2
; VOLTA P/ VARREDURA DOS BOTES
; FIM DO PROGRAMA
; ****************************************************************************************************************
; 00
; 01
; 02
; 03
; 04
; 05
; 06
; 07
; 08
; 09
; 10
; 11
; 12
; 13
; 14
; 15
SMBOLO CORRETO 0
SMBOLO CORRETO 1
SMBOLO CORRETO 2
SMBOLO CORRETO 3
SMBOLO CORRETO 4
SMBOLO CORRETO 5
SMBOLO CORRETO 6
SMBOLO CORRETO 7
SMBOLO CORRETO 8
SMBOLO CORRETO 9
SMBOLO CORRETO A
SMBOLO CORRETO b
SMBOLO CORRETO C
SMBOLO CORRETO d
SMBOLO CORRETO E
SMBOLO CORRETO F
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
66
Incio
Fluxograma Exerccio 5
Configuraes
Iniciais
Portas, Option, etc
Rotao
Habilita DS1
RB7 = 1
Sim
Delay
Boto 0
Pressionado?
PORTD = Simbolo 0
B00111111'
No
Habilita DS2
RB6 = 1
Delay
Rotao
Habilita DS3
RB5 = 1
Delay
Sim
Boto 2
Pressionado?
No
PORTD = Simbolo 0
B00111111'
Habilita DS4
RB4 = 1
Delay
Rotao
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
Retorna
67
BTFSS BOTAO_1
GOTO TRATA_BOTAO_1
GOTO PRINCIPAL
B'10000000'
PORTB
.200
DELAY
; DISPLAY 1
MOVLW
MOVWF
MOVLW
CALL
B'01000000'
PORTB
.200
DELAY
; DISPLAY 2
MOVLW
MOVWF
MOVLW
CALL
B'00100000'
PORTB
.200
DELAY
; DISPLAY 3
MOVLW
MOVWF
MOVLW
CALL
B'00010000'
PORTB
.200
DELAY
; DISPLAY 4
RETURN
END
; FIM DO PROGRAMA
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
68
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
69
Incio
Fluxograma Exerccio 6
Configuraes Iniciais
Inicializa as variveis
Delay de 3ms
Delay de 1ms
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
70
1
Trata boto 0
Sim
Boto 0
Pressionado?
No
Trata boto 0
Terminou o
Filtro?
No
Sim
Sim
Boto 1
Pressionado?
Trata boto 1
Seleciona Display
para comandos
No
Envia comando p/
limpar display
Sim
Boto 2No
Pressionado?
Trata boto 2
Posiciona o
cursor na linha 0
coluna 0
No
Seleciona Display
para dados
Sim
Boto 3
Pressionado?
Trata boto 3
No
Escreve Botao o
No
Mostrar
tela principal?
Sim
Mostrar tela
principal
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
Seta FLAG p/
mostrar tela
principal
71
Trata boto 1
Trata boto 2
Trata boto 3
Terminou o
Filtro?
Terminou o
Filtro?
Terminou o
Filtro?
Sim
Sim
Sim
Seleciona Display
para comandos
Seleciona Display
para comandos
Seleciona Display
para comandos
Envia comando p/
limpar display
Envia comando p/
limpar display
Envia comando p/
limpar display
Posiciona o
cursor na linha 0
coluna 8
Posiciona o
cursor na linha 1
coluna 0
Posiciona o
cursor na linha 1
coluna 8
Seleciona Display
para dados
Seleciona Display
para dados
Seleciona Display
para dados
Escreve Botao 1
Escreve Botao 2
Escreve Botao 3
Seta FLAG p/
mostrar tela
principal
Seta FLAG p/
mostrar tela
principal
Seta FLAG p/
mostrar tela
principal
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
72
Mostra tela
principal
Escreve
Limpa FLAG
Carrega argumento passado pelo
Work no barramento de dados do
display
Seleciona display p/ comandos
Delay 1ms
Escreve Selecione
Escreve Um boto
1
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
73
;**************************************
;*
DEFINIO DAS VARIVEIS INTERNAS DO PIC
*
;**************************************
#INCLUDE <P16F877A.INC>
; MICROCONTROLADOR UTILIZADO
;**************************************
;*
DEFINIO 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 DEFINIO DE CONSTANTES FACILITA A PROGRAMAO E A MANUTENO.
FILTRO_TECLA
EQU
.200
;**************************************
;*
DECLARAO DOS FLAGs DE SOFTWARE
;**************************************
#DEFINE
TELA_PRINCIPAL
FLAG,0
; FLAG P/ INDICAR QUE DEVE MOSTRAR
; A TELA PRINCIPAL
; 1-> MOSTRA TELA PRINCIPAL
; 0-> TELA PRINCIPAL J FOI MOSTRADA
;**************************************
;*
ENTRADAS
*
;**************************************
#DEFINE
BOTAO_0
PORTB,0
#DEFINE
BOTAO_1
PORTB,1
#DEFINE
BOTAO_2
PORTB,2
#DEFINE
BOTAO_3
PORTB,3
; 1 -> LIBERADO
; 0 -> PRESSIONADO
; ESTADO DO BOTO 0
; ESTADO DO BOTO 1
; ESTADO DO BOTO 2
; ESTADO DO BOTO 3
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
74
;**************************************
;*
SADAS
*
;**************************************
#DEFINE
#DEFINE
DISPLAY
RS
#DEFINE
ENABLE
PORTD
PORTE,0
PORTE,1
; SINAL DE ENABLE ,ATIVO NA BORDA DE DESCIDA
;**************************************
;*
VETOR DE RESET DO MICROCONTROLADOR
*
;**************************************
ORG 0X0000
; ENDEREO DO VETOR DE RESET
GOTO CONFIGURACAO
; PULA PARA CONFIG DEVIDO A REGIO
;**************************************
;*
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)
CLRWDT
DECFSZ
GOTO $-2
DECFSZ
GOTO $-6
TEMPO0,F
TEMPO1,F
RETURN
;**************************************
;*
TEMPO 1 segundo
;**************************************
TEMPO_1S
MOVWF
TEMPO3
MOVLW
MOVWF
0X05
SEGA
MOVLW
MOVWF
0XFF
SEGB
MOVLW
MOVWF
0XFF
SEGC
PULO4
PULO3
PULO2
PULO1
DECFSZ
SEGC,F
GOTO PULO1
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
75
DECFSZ
GOTO
SEGB,F
PULO2
DECFSZ
GOTO
SEGA,F
PULO3
DECFSZ
GOTO
TEMPO3
PULO4
RETURN
;**************************************
; * ROTINA DE ESCRITA DE UM CARACTER NO DISPLAY
*
;**************************************
; ESTA ROTINA ENVIA UM CARACTER PARA O MDULO DE LCD. O CARACTER A SER
; ESCRITO DEVE SER COLOCADO EM WORK (W) ANTES DE CHAMAR A ROTINA.
ESCREVE
MOVWF
NOP
BSF
GOTO
BCF
MOVLW
CALL
RETUR
DISPLAY
ENABLE
$+1
ENABLE
.1
DELAY_MS
; RETORNA
;**************************************
;*
ROTINA DE ESCRITA DA TELA PRINCIPAL
*
;**************************************
; ESTA ROTINA ESCREVE A TELA PRINCIPAL DO PROGRAMA, COM AS FRASES:
MOSTRA_TELA_PRINCIPAL
BCF
TELA_PRINCIPAL
BCF
MOVLW
CALL
MOVLW
CALL
RS
0X01
ESCREVE
.1
DELAY_MS
MOVLW
CALL
BSF
0X83
ESCREVE
RS
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'S'
ESCREVE
'e'
ESCREVE
'l'
ESCREVE
'e'
ESCREVE
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
76
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'c'
ESCREVE
'i'
ESCREVE
'o'
ESCREVE
'n'
ESCREVE
'e'
ESCREVE
BCF
MOVLW
CALL
BSF
RS
0XC4
ESCREVE
RS
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'u'
ESCREVE
'm'
ESCREVE
''
ESCREVE
'b
ESCREVE
'o
ESCREVE
't'
ESCREVE
'a'
ESCREVE
'o'
ESCREVE
RETURN
;**************************************
;*
CONFIGURAES INICIAIS DE HARDWARE E SOFTWARE
;**************************************
CONFIGURACAO
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
BANK1
MOVLW
MOVWF
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
77
MOVLW
MOVWF
B'11111111'
TRISB
MOVLW
MOVWF
B'11111111'
TRISC
MOVLW
MOVWF
B'00000000'
TRISD
MOVLW
MOVWF
B'00000100'
TRISE
MOVLW
MOVWF
B'11011111'
OPTION_REG
MOVLW
MOVWF
B'00000000'
INTCON
MOVLW
MOVWF
B'00000111'
ADCON1
BANK0
; CONFIGURA OPTIONS
; PULL-UPs DESABILITADOS
; INTER. NA BORDA DE SUBIDA DO RB0
; TIMER0 INCREM. PELO CICLO DE MQUINA
; WDT - 1:128
; TIMER - 1:1
; CONFIGURA INTERRUPES
; DESABILITADA TODAS AS INTERRUPES
;**************************************
;*
INICIALIZAO DA RAM
*
;**************************************
; ESTA ROTINA IR LIMPAR TODA A RAM DO BANCO 0, INDO DE 0X20 A 0X7F.
; EM SEGUIDA, AS VARIVEIS DE RAM DO PROGRAMA SO INICIALIZADAS.
MOVLW
MOVWF
LIMPA_RAM
CLRF
INCF
MOVF
XORLW
BTFSS
GOTO
BSF
0X20
FSR
INDF
FSR,F
FSR,W
0X80
STATUS,Z
LIMPA_RAM
TELA_PRINCIPAL
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
78
;**************************************
;*
CONFIGURAES INICIAIS DO DISPLAY
*
;**************************************
; ESTA ROTINA INICIALIZA O DISPLAY P/ COMUNICAO DE 8 VIAS, DISPLAY PARA 2
; LINHAS, CURSOR APAGADO E DESLOCAMENTO DO CURSOR DIREITA.
INICIALIZACAO_DISPLAY
BCF
RS
MOVLW
CALL
0X30
ESCREVE
MOVLW
CALL
.3
DELAY_MS
MOVLW
CALL
0X30
ESCREVE
MOVLW
CALL
0X30
ESCREVE
MOVLW
CALL
B'00111000'
ESCREVE
MOVLW
CALL
B'00000001'
ESCREVE
MOVLW
CALL
.1
DELAY_MS
; DELAY DE 1MS
MOVLW
CALL
B'00001100'
ESCREVE
MOVLW
CALL
B'00000110'
ESCREVE
BSF
RS
;**************************************
;*
VARREDURA DOS BOTES
*
;*
LOOP PRINCIPAL
*
;**************************************
; A ROTINA PRINCIPAL FICA CHECANDO O ESTADO DOS BOTES. CASO ALGUM SEJA
; PRESSIONADO, A ROTINA DE TRATAMENTO DO BOTO CHAMADA.
VARRE
CLRWDT
BTFSS
GOTO
BOTAO_0
TRATA_BOTAO_0
BTFSS
GOTO
BOTAO_1
TRATA_BOTAO_1
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
79
BTFSS
GOTO
BOTAO_2
TRATA_BOTAO_2
BTFSS
GOTO
BOTAO_3
TRATA_BOTAO_3
MOVLW
MOVWF
FILTRO_TECLA
FILTRO_BOTOES
BTFSS
GOTO
TELA_PRINCIPAL
VARRE
CALL
GOTO
MOSTRA_TELA_PRINCIPAL
VARRE
; VOLTA PARA VARRER TECLADO
FILTRO_BOTOES,F
VARRE
RS
0X01
ESCREVE
.1
DELAY_MS
; DELAY DE 1MS
MOVLW
CALL
BSF
0X80
ESCREVE
RS
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'B'
ESCREVE
'o'
ESCREVE
't'
ESCREVE
'a'
ESCREVE
'o'
ESCREVE
''
ESCREVE
'0'
ESCREVE
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
80
BSF
TELA_PRINCIPAL
GOTO VARRE
DECFSZ
GOTO
FILTRO_BOTOES,F
STATUS,Z
VARRE
FILTRO_BOTOES,F
VARRE
RS
0X01
ESCREVE
.1
DELAY_MS
; DELAY DE 1MS
MOVLW
CALL
BSF
0X88
ESCREVE
RS
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
'B'
ESCREVE
'o'
ESCREVE
't'
ESCREVE
'a'
ESCREVE
'o'
ESCREVE
''
ESCREVE
'1'
ESCREVE
BSF
TELA_PRINCIPAL
GOTO VARRE
END
; FIM DO PROGRAMA
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
81
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
82
teste, aluno;
temperatura;
int dado = 100;
3.14;
Valor
Binrio
Hexadecimal
Decimal
6 Operadores
Aritmticos
Operador
+
*
/
%
++
--
Operao
Adio
Subtrao
Multiplicao
Diviso
Resto da diviso
Incremento
Decremento
Operador
==
!=
>
>=
<
<=
Relacionais
Operao
Igual a
Diferente
Maior que
Maior ou igual a
Menor que
Menor ou igual a
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
83
Lgicos
Operador
&&
||
!
Operador
&
|
^
~
>>
<<
Operao
AND
OR
Not
Bit a Bit
Operao
AND
OR
XOR
NOT (inverte o estado dos bits)
Deslocamento de bit(s) direita
Deslcocamento de bit(s) esquerda
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
84
Projeto Integrador
Lista de Materiais Placa de Desenvolvimento de Microcontrolador PIC
Item Quant
Especificao
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
01
01
01
01
02
02
01
02
05
10
10
01
01
06
02
01
17
18
01
01
19
20
21
22
23
01
01
08
01
01
PIC 16F877A
CI ULN2003
CI LM358
CI MAX232
Soquete torneado 40 pinos
Soquete torneado 16 pinos
Cristal de 4MHZ
Capacitor cermico de 33pF
Capacitor eletrolitico de 1F x 16V
Resistor de 10K
Resistor de 330R
Resistor de 470R
Resistor de 4K7
Mini botes Conector para PCI de 8 vias
Concector RJ 11 fmea para PCI
Com 6 pinos
Trimpot de 10K
Placa Perfurada universal para
montagem do circuito 100x150mm
LCD 16 X2
7805
LED 3mm
Conector para fonte
Base de fusvel com fusvel de 0,5A
Aplicao no
circuito
Processador
Driver de 500mA
entrada analgica
Comunicao serial
Conexo externa
Gravao in circuit
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
85
86
Caractere
Decimal
Caractere
32
espao
80
33
81
34
"
82
35
83
36
84
37
85
38
&
86
39
'
87
40
88
41
89
42
90
43
91
44
92
45
93
46
94
47
95
48
96
49
97
50
98
51
99
52
100
53
101
54
102
55
103
56
104
57
105
58
106
59
107
60
<
108
61
109
62
>
110
63
111
64
112
65
113
66
114
67
115
68
116
69
117
70
118
71
119
72
120
73
121
74
122
75
123
76
124
77
125
78
126
79
127
DEL
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
87
4- Em Program File, anexar o arquivo .hex gerado pelo MPLAB. Esse arquivo
est no mesmo diretrio (mesma pasta) que o projeto do MPLAB.
5- Simular clicando no Play
AnotaesdeAulaMicrocontroladoresProfNiltonSerigioli
88