Escolar Documentos
Profissional Documentos
Cultura Documentos
MICROCONTROLADORES
FATEC TATUÍ
5º Semestre
Elaboradores:
Microchip.
2 FATEC TATUÍ
CONCEITOS BÁSICOS
Para a programação de microcontroladores é necessário ter o
conhecimento de duas outras bases numéricas além da decimal, a base
binária e a base hexadecimal.
L EI D E F O R M AÇ Ã O N U M É R IC A
n-1 n-2 n-3 0 -1 -2
N = an .b + an-1 .b + an-2 .b +…+a1 .b , a1 .b + a2 .b +…+
-m
am-1 .b
Onde:
N = número
Exemplo:
Solução:
Então:
N = 8 + 4 + 0 + 1 = 13 (decimal)
Solução:
m = 2 n = 3 b=2
N = 1 .4 + 1. 2 + 0 + 1 . 0,5 + 1. 0,125
N = 6, 625 (decimal)
3 FATEC TATUÍ
C ON VERSÃ O D ECIMAL P AR A BIN ÁR IO
S I S T E M A N U M É R I C O H E X A D E C I M AL ( b a s e 1 6 )
Principal propriedade:
Ex:
(3A)h =(00111010)b
3 A
4 FATEC TATUÍ
O PER AÇÕ ES AR ITM ÉTIC AS C OM NÚ MER OS B INÁ RIOS
S O M A ( AD I Ç Ã O )
Ex: 101
Operandos Result. Carry
+11
A B R C
0 0 0 0 1000 → Resultado
0 1 1 0 Carry → C = 1
1 0 1 0
1 1 0 1
Complemento de um número:
Ex.:
A = (1110)b e B = (1010)b
R = A-B = A + /B
Então: 1110
+ 0110
10100
Portanto, R = (0100)b
2) Idem para:
A = (1010)b e B = (1110)b
R = A-B → R = A + B
/B = 0001 + 1 → /B = 0010
Então: 1010
+ 0010
01100
5 FATEC TATUÍ
M U L T I P L I C AÇ Ã O E D I V I S ÃO P EL A B AS E
F U N Ç Õ E S E P O R T AS L Ó G IC AS
A S
0 1
S = A
1 0
A B S
0 0 0
0 1 0 S = A.B
1 0 0
1 1 1
6 FATEC TATUÍ
• “OU” ou “OR” → independência
A B S
0 0 0
S = A+B
0 1 1
1 0 1
1 1 1
• “XOR” → ou exclusivo
A B S
0 0 0
0 1 1
1 0 1 S = A B
1 1 0
Á LGEB R A B OO LE AN A
Postulados
A . 1 = A A + 1 = 1
A . 0 = 0 A + 0 = A
A . /A = 0 A + /A = 1
A 1 = /A
7 FATEC TATUÍ
L Ó G I C A D E P R O G R AM AÇ Ã O
LÓGIC A D E PROGRAM A
FL UXOGR AM A
SÍMBOLOS FUNÇÃO
Processamento em
processo geral.
Ex.: cálculo de dois
números
8 FATEC TATUÍ
O M IC R O C O N T R O L AD O R ( M C C ) E O M IC R O PR O C E S S AD O R ( M C P)
• Timers/Counters;
• Comparadores
M I C R O P R O C E S S AD O R
M I C R O C O N T R O L AD O R
Figura1b: Microcontrolador
9 FATEC TATUÍ
V AN T A G E N S D O M C C E M R E L A Ç Ã O A O M C P
• Maior confiabilidade
• Manutenção rápida
Domésticas
• Controle de Impressoras
• Ajuste de vídeo
• Máquinas de lavar
• celulares
Industriais
• CNC
• CLP
• Inversores
• Etc.
A R Q U I T E T U R AS H AR V A R D x V O N - N E U M AN N
São tipos de estruturas internas de máquinas, ou seja, como suas
partes internas se interligam.
10 FATE C TAT UÍ
Na arquitetura Harvard como o barramento de instrução é maior do
que 8 bits, o OPCODE (OPeration CODE) da instrução já inclui o dado e o
local onde ele vai operar (quando necessário)(figura 14) , o que significa
que apenas uma posição de memória é utilizada por instrução,
economizando assim muita memória de programa. Desta forma, dentro da
palavra do OPCODE, que pode ser de 12, 14 ou 16 bits, não sobra muito
espaço para o código da instrução propriamente dito, por isso os PICs
utilizam o código RISC.
VO N- NEU M AN N
8bits
Memória de
CPU Dados/Inst
Programa e
Endereços Dados
H ARV ARD
11 FATE C TAT UÍ
TIPOS DE MEMÓRIA DO MCC
MEMÓR IA D E PR OGR AM A M E M Ó R I A D E D AD O S
1. ROM
1. R AM
2. PROM
2. EEPRO
3. EPROM
4. FL ASH
C AR AC T E R Í S T I C AS D AS M E M Ó R I AS
M E M Ó R I AS D E PR O G R AM A → a l o c a m o s c ó d i g o s o u i n s t r u ç õ e s
para o processador executar.
Memória que pode ser gravada pelo usuário apenas uma vez.
Nos microcontroladores da Microchip que utilizam este tipo de memória
tem a letra C incorporada no código comercial.
4. FL ASH
12 FATE C TAT UÍ
M E M Ó R I AS D E D AD O S → u t i l i za d a n o a r m a ze n a m e n t o d e d a d o s o u
variáveis de um sistema.
13 FATE C TAT UÍ
A CPU GENÉRICA DO MCC
• OPERAÇÕES LÓGICAS
1. ULA
• OPERAÇÕES ARITM ÉTICAS
• RISC
TIPOS
CPU 2. CÓDIGO DE INSTRUÇÃO • CISC
• SISC
• USO G ERAL
3 . R E G I S T R AD O R E S
• FINALIDADES ESPECÍFICAS (SFRs)
14 FATE C TAT UÍ
CISC (Complex Instruction Set Computer)
3 . R E G I ST R AD O R E S
INDF
TMR0
S TPACTLU S
FSR
PORTA
Outros
SFRs
GPRs
Registradores
de Uso Geral
( R AM)
W
15 FATE C TAT UÍ
O PIC
PIC (Peripherical Interface Controler)
HISTÓRIA
16 FATE C TAT UÍ
Uma das razões do sucesso do PIC é a base de sua utilização, ou
seja, quando se aprende a trabalhar com um modelo, fica fácil migrar
para outros modelos, já que todos têm uma estrutura parecida.
17 FATE C TAT UÍ
O PIC 16F628A
Principais características:
• 16 pinos de I/O;
programável de tensão;
• Um watchdog timer;
• 35 instruções;
AR QU ITETUR A IN TER N A
18 FATE C TAT UÍ
Figura 7- Arquitetura Interna do PIC16F628A
19 FATE C TAT UÍ
P I N AG E M ( E n c a p s u la m e n to s P DI P e SO IC )
C AR AC T E R Í S T I C AS E L É T R I C AS E O U T RAS
+14V
(Vdd +0,3V)
21 FATE C TAT UÍ
O SCIL AD OR ES
HS Cristal/Ressonador cerâmico de
alta frequência (até 20MHz)
XT Cristal/Ressonador de alta
frequência (até 4MHz)
22 FATE C TAT UÍ
LP Cristal/Ressonador de baixas
frequências (até 200KHz)
CICLO DE MÁQUINA
O PIC divide a frequência gerada pelo oscilador principal (clock
externo) por quatro, dando origem ao um sinal de clock com frequência
quatro vezes menor.
23 FATE C TAT UÍ
PIPELINE
O processo “pipelining” é uma técnica de segmentação que permite
ao MCC fazer a busca de uma instrução num determinado ciclo de
máquina e realizar a sua decodificação e execução no ciclo seguinte.
Considera-se que cada instrução é armada e executada num ciclo de
máquina. Contudo, se uma instrução provocar uma mudança no conteúdo
do contador do programa (PC), e caso ele não aponte para o endereço
seguinte na memória de programa, mas sim para outro (como acontece em
saltos ou chamadas de sub-rotinas), deve-se considerar que a execução
desta instrução demora dois ciclos de máquina, pois a instrução deve ser
processada de novo, mas desta vez a partir do endereço correto. Veja a
figura 11:
24 FATE C TAT UÍ
M AP E AM E N T O D E ME M Ó R I A
• d e MPE
r oMgÓ
r aRm
IAa S( F l a s h ) C A P A C I D A D E 2D0E4 8AxR1M4A Z E N A M E N T O
• d e D a d o s ( R AM ) 224x8
• EEPROM 128x8
M E M Ó R I A D E P R O G R AM A
0000h
Vetor de reset
Vetor de interrupção
0004h Tipo: 14 bits
Tamanho: 2048 palavras
Vetor de reset: 0000h
Vetor de inter.: 0004h
USO GERAL
07FFh
M E M Ó R I A D E D AD O S
25 FATE C TAT UÍ
Tabela 3- Memória de Dados
MEMÓRI A EEPROM
O acesso a esta memória é feito através dos registradores EEADR e
EEDATA. O primeiro armazena o endereço e o segundo armazena o dado.
A P I LH A O U S T AC K
A pilha é uma memória, independente da memória de dados e da
memória de programa, com estrutura LIFO (Last In First Out), onde o
último dado a entrar será o primeiro a sair. Possui oito níveis de
profundidade com armazenamento de 13 bits cada. Sua função é guardar
o valor do PC (Program Counter) quando ocorre um salto do programa
principal para o endereço de um subprograma a ser executado, fazendo
com que o MCC tenha total controle sobre as chamadas de rotinas. Seu
funcionamento é como o de buffer circular, onde o endereço da última
cha mad a é o pr imeiro a r etorn ar em uma cha mad a RETUR , R ETLW ou
RETIE. Como não há nenhuma flag indicando o transbordamento da pilha,
se houver uma chamada de rotina que ocupe mais de oito níveis a
primeira será sobrescrita, impossibilitando o retorno correto do programa.
13bits 0005h
CALL,RETURN Memória de
RE TFIE, RETLW programa
03FFh
Memória de
PC<12:0> programa
somente 16F628 07FFh
1FFh
27 FATE C TAT UÍ
FOR MATO D AS I NSTRUÇÕES
As instruções são formadas por um conjunto de bits que são
decodificadas pelo MCC, fazendo com que ele execute uma operação bem
definida. A quantidade de bits pode variar de uma para outra, dependendo
do MCC. No caso particular do PIC16F628A, todas as instruções possuem
o mesmo tamanho, 14 bits.
• OPCODE
• Operando
LI N G U AG E M AS S E M L Y
Na Família do PIC, cada instrução em assembly é armazenada no
MCC ocupando apenas uma posição da memória de programa (cada
posição tem 14 bits de largura). Esta palavra de 14 bits que foi
armazenada na memória é cham ada de OPCODE.
28 FATE C TAT UÍ
esses montes de 1’s e 0’s, porém sabem o que é MOVW F, INCF, BSF, etc.
Para resolver o problema foi dado um nome a cada instrução, o
mnemônico da instrução, utilizando a linguagem Assembly que nada mais
é do que uma representação mais amigável do opcode.
• Label
• Mnemônico
• Operando
• Comentário
• Diretivas
Label
Mnemônico
Operando
Comentário
Diretivas
São com andos que não fazem parte do set de instruções do MCC,
mas são reconhecidas pelo programa montador. Elas não são convertidas
diretamente em linguagem de máquina e sim, usadas para controlar o
Assembly. As mais utilizadas são: #DEFINE, #INCLUDE, ENDC, END e
outras.
29 FATE C TAT UÍ
TE R M O S U TI LI Z AD O S
Todas as instruções utilizam os seguintes dados para descrever a
sua nomenclatura:
Campo Descrição
F (file) Endereço de Registrador (0 a 127 )d.
W (work) Registrador Work (acumulador).
B ( bit) Endereço do bit dentro de um
registrador de 8 bits.
Seleção do destino da instrução:
d (destino) d = 0 (armazena o resultado em W)
d = 1 (armazena o resultado em f)
K Valor imediato (literal) de 8 bits ou label
label Nome alfanumérico.
T (teste) Testa um bit de um byte
se este é 0 ou 1.
Valor numérico no programa que
L (literal) pode ser decimal, binário, hexadecimal
ou código ASCII.
S (skip) Pula a próxima linha do programa
se uma determinada condição for
satisfeita.
S (set) Um bit de um byte será setado, ou seja,
forçado a assumir nível 1.
C (clear) Um bit de um byte será forçado
a assumir nível 0, ou seja, "clear" um bit.
Z (zero) resultado da operação for zero.
ADD – soma.
COM – Complemento.
SUB – Subtração.
A C O N S TR U Ç Ã O D O S N O ME S D AS I N S TR U Ç Õ ES
Com base nos termos apresentados até aqui, será muito mais fácil
entender o significado de uma instrução por meio do seu nome, pois ele é
composto pela junção desses termos.
R E S U MO D AS I N S TR U Ç Õ E S
Todo MCC é capaz de executar um conjunto de tarefas denominadas
instruções. O PIC 16F628A é capaz de executar 35 instruções, que são
dividas em quadro grupos (Tabela5):
DECISÃO (TESTE) não tem não tem BCF, BSF não tem
31 FATE C TAT UÍ
Tabela 6- Instruções resumidas
32 FATE C TAT UÍ
C O N JU N TO D E IN S TR U Ç Õ E S D E T AL H AD AS
ADDLW
Sintaxe ADDL W, k
Descrição Adiciona o conteúdo de k em W.
Bits de STATUS afetados C, DC, Z
Exemplo ADDLW 0x15
ADDWF
Sintaxe ADDWF f, d
Descrição Soma W com o registrador f;
d = 0: Resultado é armazenado em W.
d = 1: Resultado é armazenado no
registrador f.
Bits de STATUS afetados Z, C, DC
Exemplo ADDWF FSR, 0
ANDLW
Sintaxe ANDLW k
Descrição Operação AND lógico do conteúdo do
registrador W com o literal ‘k’. O resultado é
armazenado no registrador ‘f’.
Bits de STATUS afetados Z
Exemplo ANDLW 0x0F
ANDWF
Sintaxe ANDWF f, d
Descrição Operação AND lógico de W com o
registrador ‘f’:
d = 0: Resultado é armazenado no
registrador W.
d = 1: Resultado é armazenado no
registrador ‘f’.
BCF
Sintaxe BCF f, b
Descrição Zera o bit (0 ≤ b ≤ 7) do registrador ‘f’.
Bits de STATUS afetados Nenhum
Exemplo BCF PORTB, 1
33 FATE C TAT UÍ
BSF
Sintaxe BSF f, b
Descrição Seta o bit (0 ≤ b ≤ 7) do registrador ‘f’.
Bits de STATUS afetados Nenhum
Exemplo BSF PORTA, 3
BTFSC
Sintaxe BTFSC f, b
Descrição Testa o bit do registrador ‘f’ e salta uma
instrução se bit é igual a zero.
Bits de STATUS afetados Nenhum
Exemplo BTFSC STATUS, C
GOTO Label_1
GOTO Label_2
BTFSS
Sintaxe BTFSS f, b
Descrição Testa o bit do registrador ‘f’ e salta uma
instrução se bit é igual a ‘1’.
Bits de STATUS afetados Nenhum
Exemplo BTFSS LED
GOTO Label_1
GOTO Label_2
CALL
Sintaxe CALL k
Descrição Salta para a Subrotina k. Primeiro, o endereço
de retorno (PC+1) é salvo na pilha, depois o valor de
‘k’ é carregado no Contador do Programa(PC),
fazendo com que o programa salte para o endereço k.
Bits de STATUS afetados Nenhum
Exemplo CALL TESTE
CLRF
Sintaxe CLRF f
Descrição O conteúdo do registrador ‘f’ é zerado e o bit Z
do STATUS é setado.
Bits de STATUS afetados Z
Exemplo CLRF PORTB
34 FATE C TAT UÍ
CLRW
Sintaxe CLRW
Descrição O conteúdo do registrador W é zerado e o bit Z
do STATUS é setado.
Bits de STATUS afetados Z
Exemplo CLRW
CLRWDT
Sintaxe CLRWDT
Descrição Zera o temporizador Watchdog (WDT), zera a
pré-escala do WDT e seta os bits /PD e /TO.
Bits de STATUS afetados /PD , /TO, Z
Exemplo CLRWDT
COMF
Sintaxe COMF f, d
Descrição Gera o complemento do registrador ‘f’, ou seja,
troca os ‘1’s por ‘0’s e vice-versa:
d = 0: O resultado é armazenado no registrador
W.
d = 1: O resultado é armazenado no registrador
‘f’.
Bits de STATUS afetados Z
Exemplo COMF PORTB
DECF
Sintaxe DECF f, d
Descrição Decrementa o conteúdo do registrador ‘f’:
d = 0: O resultado é armazenado no registrador
W.
d = 1: O resultado é armazenado no registrador
‘f’.
Bits de STATUS afetados Z
Exemplo DECF PORTB, 1
35 FATE C TAT UÍ
DECFSZ
Sintaxe DECFSZ f, d
Descrição Decrementa o conteúdo do registrador ‘f’:
d = 0: O resultado é armazenado no registrador
W.
d = 1: O resultado é armazenado no registrador
‘f’.
Se o resultado for zero, então a próxima
instrução é descartada e um NOP é executado.
Bits de STATUS afetados Nenhum
Exemplo DECFSZ CONTADOR, 1
GOTO Label_1
GOTO Label_2
GOTO
Sintaxe GOTO k
Descrição Salta para o endereço k
Bits de STATUS afetados Nenhum
Exemplo GOTO Label_1
INCF
Sintaxe INCF f, d
Descrição Incrementa o conteúdo do registrador ‘f’:
d = 0: O resultado é armazenado no registrador
W.
d = 1: O resultado é armazenado no registrador
‘f’.
Bits de STATUS afetados Z
Exemplo INCF CNT, F
INCFSZ
Sintaxe INCFSZ f, d
Descrição Incrementa o conteúdo do registrador ‘f’:
d = 0: O resultado é armazenado no registrador
W.
d = 1: O resultado é armazenado no registrador
‘f’.
Se o resultado for zero, então a próxima
instrução é descartada e um NOP é executado.
Bits de STATUS afetados Nenhum
Exemplo INCFSZ CONTADOR, 1
GOTO Label_1
GOTO Label_2
36 FATE C TAT UÍ
IORLW
Sintaxe IORLW k
Descrição Executa OU lógico de W com k
Bits de STATUS afetados Z
Exemplo MOVLW b’ 00001011’
IORLW b’ 01100001’ ; W = 01101011
IORWF
Sintaxe IORWF f, d
Descrição Executa o OU lógico de W com o registrador ‘f’:
d = 0: O resultado é armazenado no registrador
W.
d = 1: O resultado é armazenado no registrador
‘f’.
Bits de STATUS afetados Z
Exemplo IORWF REG, 0
MOVF
Sintaxe MOVF f, d
Descrição Move o valor do registrador ‘f’ para:
d = 0: O resultado é armazenado no registrador
W.
d = 1: O resultado é armazenado no registrador
‘f’.
Bits de STATUS afetados Z
Exemplo MOVF FSR, F
MOVLW
Sintaxe MOVLW k
Descrição Move o valor literal ‘k’ para o registrador W.
Bits de STATUS afetados Nenhum
Exemplo MOVLW 0x1C
MOVWF
Sintaxe MOVWF f
Descrição Move o conteúdo de W para o registrador ‘f’.
Bits de STATUS afetados Nenhum
Exemplo MOVWF OPTION
37 FATE C TAT UÍ
NOP
Sintaxe NOP
Descrição Não executa nenhuma operação, utilizado para
ajustar rotinas de temporização.
Bits de STATUS afetados Nenhum
Exemplo NOP
OPTION
Sintaxe OPTION
Descrição O conteúdo do registrador W é carregado no
registrador
Bits de STATUS afetados Nenhum
Exemplo MOVLW b’00100110’
OPTION
RETFIE
Sintaxe RETFIE
Descrição Carrega o Contador do Programa (PC) com o
valor do topo da pilha e seta o bit GIE.
Bits de STATUS afetados Nenhum
Exemplo RETFIE
RETLW
Sintaxe RETLW k
Descrição O registrador W é carregado com o valor literal
‘k’. O PC é carregado com o valor do topo da pilha (TOS
– Top of the Stack).
Bits de STATUS afetados Nenhum
Exemplo RETLW 0x0A
RETURN
Sintaxe RETURN
Descrição Carrega o PC com o valor do topo.
Bits de STATUS afetados Nenhum
Exemplo RETURN
38 FATE C TAT UÍ
RLF
Sintaxe RLF f, d
Descrição O valor do registrador ‘f’ é rotacionado um bit
para a esquerda através do Carry:
d = 0: O resultado é armazenado no
registrador W.
d = 1: O resultado é armazenado no
registrador ‘f’.
Bits de STATUS afetados C
Exemplo RLF REG1, 0
RRF
Sintaxe RRF f, d
Descrição O valor do registrador ‘f’ é rotacionado um bit
para a direita através do Carry:
d = 0: O resultado é armazenado no
registrador W.
d = 1: O resultado é armazenado no
registrador ‘f’.
Bits de STATUS afetados C
Exemplo RRF REG1, 0
SLEEP
Sintaxe SLEEP
Descrição Ativa modo Sleep, zera o bit /PD (Power –
Down) e seta o bit /TO (Time Out). O WDT e a pré-
escala são limpos. O processador é colocado no modo
Sleep com o oscilador parado.
Bits de STATUS afetados /TO, /PD
Exemplo SLEEP
SUBLW
Sintaxe SUBLW k
Descrição Subtrai (utilizando o método complemento de
dois) W do literal ‘k’ e armazena o resultado em W.
Bits de STATUS afetados C, DC, Z
Exemplo SUBLW 0x03
39 FATE C TAT UÍ
SUBWF
Sintaxe SUBWF f, d
Descrição Subtrai (utilizando o método complemento de
dois) W do registrador F.
d = 0: O resultado é armazenado no
registrador W.
d = 1: O resultado é armazenado no
registrador ‘f’.
Bits de STATUS afetados C, DC, Z
Exemplo SUBWF REG, 1
SWAPF
Sintaxe SWAPF f, d
Descrição O nibble mais significativo e o menos
significativo do registrador ‘f’ são trocados pelo outro.
d = 0: O resultado é armazenado no
registrador W.
d = 1: O resultado é armazenado no
registrador ‘f’.
Bits de STATUS afetados Nenhum
Exemplo SWAPF CNT, 0
XORLW
Sintaxe XORLW k
Descrição Executa a operação lógica “OU Exclusivo” do
literal ‘k’ com o conteúdo de W. O resultado é
armazenado no registrador W.
Bits de STATUS afetados Z
Exemplo XORLW 0xAF
XORWF
Sintaxe XORWF f, d
Descrição Executa a operação lógica “OU Exclusivo”
entre o conteúdo de W e o registrador ‘f’:
d = 0: O resultado é armazenado no
registrador W.
d = 1: O resultado é armazenado no
registrador ‘f’.
Bits de STATUS afetados Z
Exemplo XORWF CONTADOR, 1
40 FATE C TAT UÍ
O U T R O S C O M AN D O S AC E I T O S P E L O MP L AB
EQU
Sintaxe label EQU k
Descrição Define um valor numérico para o label. Deve
ser um valor literal de 0 – 255d
Bits de STATUS afetados Nenhum
Exemplo VAR1 EQU 0x0A
MOVFW
Sintaxe MOVFW f
Descrição Move o conteúdo do registrador ‘f’ para
W.
Bits de STATUS afetados Z
Exemplo MOVFW PORTA
Sintaxe
Descrição
Bits de STATUS afetados
Exemplo
Sintaxe
Descrição
Bits de STATUS afetados
Exemplo
41 FATE C TAT UÍ
R E G I S T R A D O R E S C O M F I N A L I D AD E S E S P E C I A I S ( S F R S )
R – bit de leitura
W – bit de escrita
-q – depende da condição
Registradores SFRs
FUNÇÕES TIPOS
STATUS, PCON, OPTION,
Gerais INTCON, PIR1, PIE1, PCL e
PCLATH
Portas TRIS e PORTS
Contadores TIMER0, TIMER1 e TIMER2
EEADR, EEDATA, EECON1 e
EEPROM
EECON2
Módulo CCP CCP1CON, CCPR1H e CCPR1L
Módulo Comparador CMCON
Módulo Voltagem de Referência VRCON
TXSTA, RCSTA, SPBRG, TXREG e
Módulo USART
RECREG
Endereçamento Indireto FSR e INDF
G E R AI S
1) ST ATU S
42 FATE C TAT UÍ
Registrador: STATUS Endereços: 03h, 83h, 103h, 183h
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
R/W R/W R/W R R R/W R/W R/W
IRP PR1 RP0 /TO /PD Z DC C
Condição em Power-On Reset (POR)
0 0 0 1 1 X X X
Z: Indicação de Zero:
C: Carry/borrow:
0 = 37 KHz.
1 = 1 MHz.
3) OPTION
1 = Pull-ups desabilitados.
44 FATE C TAT UÍ
1 = A interrupção ocorrerá na borda de subida.
PS 2/1/0 TMR0 W DT
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 0 1:32 1:16
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128
45 FATE C TAT UÍ
0 = As interrupções de periféricos não serão tratadas.
46 FATE C TAT UÍ
0 = Interrupção da EEPROM desabilitada.
5) P C L e P C L AT H
48 FATE C TAT UÍ
P O R T AS
1) TRIS
2) PORTS
49 FATE C TAT UÍ
C O N T AD O R E S
1) TIMER0
2) TIMER1
50 FATE C TAT UÍ
00 = prescaler de 1:1.
01 = prescaler de 1:2.
10 = prescaler de 1:4.
11 = prescaler de 1:8.
1 = Timer1 habilitado
3) TIMER2
TOUTPS3
TOUTPS2
TOUTPS1
51 FATE C TAT UÍ
0010 = postcaler de 1:3 1010 = postcaler de 1:11
0011 = postcaler de 1:4 1011 = postcaler de 1:12
0100 = postcaler de 1:5 1100 = postcaler de 1:13
0101 = postcaler de 1:6 1101 = postcaler de 1:14
0110 = postcaler de 1:7 1110 = postcaler de 1:15
0111 = postcaler de 1:8 1111 = postcaler de 1:16
1 = Timer 2 habilitado.
T2CKPS1
00 = prescaler de 1:1
01 = prescaler de 1:4
EEPROM
1 ) E E AD R e E E D AT A
O primeiro é o registrador onde será especificado o endereço para
a escrita ou leitura da EEPROM interna do PIC16F628A.
52 FATE C TAT UÍ
O EEDATA possui duas funções distintas: nas operações de escrita
da EEPRO M, ele deve ser preenchido com o dado a ser armazenado, já
nas operações de leitura, ele armazena o dado lido.
2) EECON1 e EECON2
São registradores de operação da EEPROM. O EECON1 é
responsável pelas operações de leitura e escrita da EEPROM e detecção
de erro.
53 FATE C TAT UÍ
MÓDULO CCP
1100 = PW M ligado.
1101 = PW M ligado.
1110 = PW M ligado.
1111 = PW M ligado.
54 FATE C TAT UÍ
Registrador: CCPR1L Endereços: 15h
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
R/W R/W R/W R/W R/W R/W R/S R/S
Registrador de controle do CCP1 - Parte baixa
Condição em Power-On Reset (POR)
X X X X X X X X
MÓDULO COMPAR AD OR
1) CMCON
Normal (C2INV=0):
Inversa (C2INV=0):
Normal (C1INV=0):
Inversa (C1INV=0):
55 FATE C TAT UÍ
0 = Normal.
1 = Inversa.
0 = Normal.
1 = Inversa.
CM ESQUEMA CM ESQUEMA
111
000
56 FATE C TAT UÍ
100 010
011 110
CM ESQUEMA CM ESQUEMA
001
101
57 FATE C TAT UÍ
1 = Tensão de referência ligada ao pino RA2.
0 = Range baixo.
1 = Range alto.
Se VRR = 1:
Se VRR = 0:
M Ó D U LO U S AR T
1) TXSTA e RCSTA
0 = Slave.
1 = Master.
0 = Transmissão em 8 bits.
1 = Transmissão em 9 bits.
0 = Transmissão desabilitada.
0 = Assíncrono.
1 = Síncrono.
0 = TSR cheio.
1 = TSR vazio.
TX9D: Valor a ser transmitido como 9º bit. Pode ser usado como
paridade ou endereçamento.
0 = USART desabilitada.
1 = USART habilitada.
0 = Recepção em 8 bits.
1 = Recepção em 9 bits.
59 FATE C TAT UÍ
1 = Estouro do limite de 3 bytes recebidos antes da leitura de
RCREG (para limpar deve-se zerar o bit CREN).
2) TXREG e RCREG
3) SPBRG
60 FATE C TAT UÍ
O INDF não é um registrador realmente verdadeiro, pois trata-se
somente de um espelho do endereço apontado pelo FSR.
PROGRAM AÇÃO
Um programa escrito em linguagem assembler pode ser escrito em
qualquer PC utilizando-se qualquer processador de texto que possa gerar
arquivos ASCII (W ord, Notpad, etc). Um arquivo de texto que contenha um
programa em assembler é denominado de source ou código assembler.
61 FATE C TAT UÍ
Figura15- Fluxo da programação do PIC
62 FATE C TAT UÍ
formato é muito importante quando há transferência do programa para o
PIC em uma forma legível.
MPLAB ID E
Distribuído gratuitamente pela Microchip Tecnology, o MPLAB IDE
será utilizado para o desenvolvimento dos programas-fontes em
Assembly, que ap ós serem convertidos em programa objetivo, são
gravados no MCC. O MPLAB IDE é um conjunto de software que permite,
entre outras coisas:
2º - Criando o programa-fonte
3º - Criando projeto
4º - Montando projeto
5º - Debugando projeto
I N IC I AL I Z AN D O O M P L AB I D E 8. 10
Depois de complementada a instalação, dê um duplo-clique no ícone
do MPLAB IDE na área de trabalho ou selecione
Iniciar/Programas/Microchip MPLAB IDE/ MPLAB IDE. Logo aparece uma
tela da figura 16. Este é o ambiente em que serão montadas as
aplicações (programas) que serão gravadas no MCC.
63 FATE C TAT UÍ
Figura 16- MPLAB IDE 8.10
C R I AN D O PR O J E T O
Primeiro Passo:
64 FATE C TAT UÍ
Na janela exibida na figura 18, escolha o modelo de MCC que será
usado no projeto, no caso 16F628A e clique em Avançar para prosseguir.
Segundo Passo:
65 FATE C TAT UÍ
Terceiro Passo:
Quarto Passo:
66 FATE C TAT UÍ
Figura 21- Passo quatro (Inclusão de Arquivos ao projeto)
67 FATE C TAT UÍ
VISU ALIZANDO O PROJETO
Após a criação do projeto provavelmente a tela do MPLAB esteja
vazia, então deve-se clicar no menu VIEW e em seguida na opção
PROJECT, ver figura 23.
C RI AN D O E S AL V AN D O AR Q U I V O- FO N TE E M AS S E M BL Y
Crie um novo arquivo .ASM clicando em File/New. Ele será o
pr ogr a m a- fon t e do pr ojet o e es c r i to em Lin gu ag em A s sem bl y. A se gu ir ,
um modelo para estruturação do programa-fonte que será usado na
criação das aplicações. Para evitar problemas, utilize sempre letras
maiúsculas e não use acentos, cedilhas ou caracteres especiais nos
comentários. Não se preocupe em tentar entender a função de cada linha
da estruturação proposta, pois será explicado m ais adiante. Apenas leia
com atenção.
( programa exemplo)
68 FATE C TAT UÍ
Figura 24- Criando e salvando arquivo-fonte.
AB R I N D O O PR O GR AM A F O N TE
Na figura 24, verifica-se que nenhum arquivo fonte (Source File)
está adicionado ao projeto, portanto deve-se adicioná-lo posicionando o
mouse em cima da pasta Source Files e clicar o botão direito do mouse e
escolher a opção Add files..., então seguir as solicitações de localização
do arquivo fonte (.ASM).
M O N T AN D O O P RO J E TO ( C O MPI L AN D O)
O arquivo .ASM só poderá ser montado (compilado) se tiver sido
editado corretamente.
70 FATE C TAT UÍ
Figura 27- Relatório de compilação com mensagens.
71 FATE C TAT UÍ
A G R AV AÇ Ã O D O P R O G R AM A N O MC C
A gravação do PIC é feita por um sistema gravador (programmer),
formado por um hardware e um software de gravação executado num PC.
72 FATE C TAT UÍ
Figura 29-Gravador do Kit
73 FATE C TAT UÍ
O hardware do gravador foi alterado em relação ao projeto original
e na figura abaixo tem-se o diagrama esquemático final do gravador.
Descrição do circuito:
I NS T AL AN D O O SO F TW AR E I CP R OG N O
MICROCOMPU TAD OR
Passo 1
74 FATE C TAT UÍ
Figura 31- Arquivos relacionados ao icprog
Passo 2
Passo 3
C O NFI G U R AN D O I C PR O G P AR A W I N D O W S 2 0 00, N T, M E, X P
Se o S.O . for o W indow s NT, 2000 ou Window s XP, é necessário um
driver (icprog.sys), o qual já vem incluído no arquivo zipado do icprog e
deve estar na mesma pasta que o executável.
Procedimento:
76 FATE C TAT UÍ
Na aba compatibilidade:
77 FATE C TAT UÍ
Pressionar Aplicar
Pressionar OK
78 FATE C TAT UÍ
Pressionar OK.
79 FATE C TAT UÍ
Figura 39- Configuração de hardware
80 FATE C TAT UÍ
Comando de gravação
R E AB R I N DO O AR Q UI V O H E X AD E C I M AL D O P R OG R AM A
81 FATE C TAT UÍ
GR AV AÇÃO IN-CIR CUI T (ICSP)
Uma grande parte dos modelos da família PIC possibilita a chamada
gravação “in-circuit”. Isso serve para que o PIC possa a ser gravado
diretamente na placa montada. Como a gravação é feita de forma serial,
utilizando somente cinco pinos, é possível a instalação de um soquete na
placa para introduzir os sinais necessários à gravação. Isso exige uma
série de cuidados no projeto do hardware, a fim de evitar que as tensões
de gravação prejudiquem os demais periféricos.
Vss: GND.
82 FATE C TAT UÍ
INTERRUPÇÃO (IRQ)
Uma interrupção é um evento de hardware que, quando ocorre,
provoca um desvio no programa, para que o evento seja tratado. Ao
término do tratamento do evento que deu origem à interrupção, o
programa retorna ao ponto em que parou quando ocorreu o desvio. O MCC
utilizado possui dez fontes de interrupção.
83 FATE C TAT UÍ
ESTRUTURA DA ROTINA DE TRATAMENTO DA
INTERRUPÇÃO
A primeira coisa que deve ser feita quando tratar de interrupção é
salvar o conteúdo de alguns registradores que podem ser manipulados
dentro da rotina de interrupção, para que possam resgatar seus
conteúdos quando retornar ao programa principal. Isso é necessário
porque alguns registradores podem ser manipulados no programa
principal, como os registradores W ou STATUS, também podem ser
manipulados dentro da rotina de interrupção.
INTERRUPÇÃO
SALVAR W e STATUS
DESLIGAR INTERRUÇÃO
IDENTIFICA ORIGEM
DA INTERRUPÇÃO e
EXECUTA
RECUPERA W e STATUS
LIMPA FLAG DE
INTERRUPÇÃO
LIGA INTERRUPÇÃO
RETORNA
84 FATE C TAT UÍ
R E C U R S O S AV A N Ç A D O S ( P E R I F É R I C O S )
Serão apresentados de forma resumida os recursos existentes no
PIC 16F628A, tais como:
1. Timer 0 (8 bits)
3. Timer 2 (8 bits)
5. Comparador analógico
TIMERS
O PIC 16F628A possui três temporizadores que dão ao MCC
recursos que podem ser aproveitados nas mais diversas aplicações,
como: contadores, temporizadores, relógios, medidores, etc.
TIMER 0
Ele pode ser utilizado tanto como temporizador quanto contador.
Esse módulo possui um registrador de 8 bits, chamado TMR0, que pode
incrementado pelo ciclo de clock interno (ou ciclo de instrução) ou por um
sinal externo aplicado no pino RA4/T0CK1. O TMR0 ocupa os endereços
01h e 101h dos respectivos bancos 0 e 2 de memória RAM. O bit T0CS
(OPTION<5>) define se TMR0 será incrementado pelo ciclo de instrução
(T0CS=0) ou se por sinal externo aplicado no pino RA4/T0CK1 (T0CS=1).
85 FATE C TAT UÍ
DIAGRAMA TIMER 0
FOSC/4
=
OPTION, PSA=
ciclo de 0: prescaler aplicado ao TMR0.
máquina
1: prescaler aplicado ao WDT.
Cristal
1:16 1:256
TMR0
PSA
Flag de sinalização de
86
Prescaler estouro do Timer0
PS2,PS1,PS0 INTCON,TOIF=
0: não ocorreu estouro
1: ocorreu estouro do timer
Prescaler WDT
WDT 1:1 1:16
1:2 1:32
1:4 1:64
Contador
OPTION,T0CS= 1:8 1:128
Detector 0: clock interno (ciclo de máquina)
de Borda 1: clock externo (T0CKI)
RA4/T0CKI
0: borda de subida
1: borda de descida Bit de Habilitação de Interrupção do TMR0
INTCON, TOIE =
0: interrupção do timer desligada.
FATE C TAT UÍ
1: interrupção do timer ligada.
TIMER 1
O Timer 1 é outro contador automático do sistema, mas com uma
enorme vantagem sobre o Timer 0: trata-se de um contador de 16 bits.
Desta forma, o valor do contador é armazenado em duas posições da
memória: TMR1L (parte baixa) e TMR1H (parte alta).
87 FATE C TAT UÍ
DIAGRAMA TIMER 1
FOSC/4
=
T1CON,TMR1ON=
1: liga timer1
ciclo de
0: desliga timer1
máquina
PIR1,TMR1IF
(flag de estouro)
Cristal
Flag de sinalização de
estouro do Timer1
Chave PIR1,TMR1IF=
Liga/Desliga 0: não ocorreu estouro
Prescaler TMR1L TMR1H
88
T1CKPS1,T1CKPS0 (byte LSB) (byte MSB) 1: ocorreu estouro do timer
Seletor de
função
Prescaler: Registradores de contagem no modo
16 bits (contagem de 0 a 65535)
1:8
Contador
1:4
1:2
1:1
T1CON,TMR1CS =
0:contagem com base no ciclo de máquina
1: contagem em T1CK1
RB6/T1CKI
Bit de Habilitação de Interrupção do Timer1
PIE1,TMR1IE =
0:interrupção do timer1 desligada
1: interrupção do timer1 ligada
FATE C TAT UÍ
TIMER 2
Este timer, por sua vez, volta a ser de 8 bits e só pode ser
incrementado pelo clock da máquina. Por outro lado, ele possui duas
vantagens sobre os demais.
C C P – C AP TU R E , C O M P AR E e P W M
Esses três recursos estão relacionados ao mesmo módulo dentro do
PIC, denominado CCP. Isso significa que só pode se utilizar um dos
sistemas de cada vez. Através do registrador CCP1CON pode-se
configurar qual recurso será habilitado, alterando-se os valores dos bits
CCP1M3:CCP1M0.
C APTU RE
Este modo serve para contar o tempo, através do TMR1, entre
pulsos externos através do pino CCP1 (RB3). Com isso pode-se
implementar facilmente um timer para períodos de ondas.
C O MP AR E
Nesse modo também utiliza o TMR1 como base de tempo. No
entanto, aqui, o valor do contador é constantemente comparado ao valor
escrito nos registradores CCP1L e CCP1H. Quando uma igualdade
acontecer, uma das seguintes ações irá acontecer:
90 FATE C TAT UÍ
PWM
O PW M é provavelmente o recurso mais utilizado dentro do CCP, já
que possibilita criar uma saída analógica, porque quando uma onda PW M
passa por um filtro externo, pode ser convertida em um sinal variável de 0
a 5VDC.
PW MPERÍODO = 1ms
Quando ao Duty Cycle (DC), isto é, o tempo que a onda fica ativa
(nível lógico alto), seu valor será considerado pelo registrador CCPR1L.
Como esse também é um registrador de 8 bits e precisa-se de 10 bits
para a precisão, os 2 bits menos significativos encontram-se em
CCP1CO N <CCP1X:CCP1Y> . Assim é possível calcular:
C O MP AR AD O R E S
O PIC16F628A possui internamente dois comparadores analógicos.
O interessante é que esses comparadores podem ser configurados
eletronicamente em oito opções. Cada uma dessas opções ligará as
entradas e saídas dos comparadores de uma forma diferente. Além disso,
o resultado da comparação analógica poderá ser enviado como um sinal
digital a um dos pinos do PIC e/ou tratado internamente pela lógica do
sistema.
91 FATE C TAT UÍ
Depois de configurados os comparadores, o resultado da
comparação poderá ser acessado em:
92 FATE C TAT UÍ
U S AR T
O PIC 16F628A utiliza o recurso da USART (Universal Syncronous
A s yn c r o no us Re c eiv er Tr an sm i ter ) par a s e c om u ni ca r c om o m un do r e al
de forma simples e eficiente. Com este sistema é possível implementar
uma linha de comunicação com um PC, através do padrão RS-232, sem
preocupação com a programação em relação às rotinas de recepção e
transmissão.
M O D O AS S Í N C R ON O
O sincronismo dos dois lados da comunicação é feito pelo próprio
dado, isto é, o sistema consegue saber quando cada dado começa. Isto é
possível através de três conceitos muito simples: marcas para o início
(start bit) e fim de dado (stop bit) e precisão no tamanho de cada bit
transmitido (baud rate).
93 FATE C TAT UÍ
Por último, existe ainda a possibilidade da transmissão de um 9º bit
(entre o final do dado e Stop Bit), que serve para checar a integridade da
informação recebida. Esse bit é chamado de Paridade, e pode ser
configurado como ímpar ou par. A paridade uma comunicação é opcional.
94 FATE C TAT UÍ
MODO SÍNCRONO
A transmissão síncrona utiliza um sinal de clock para sincronizar o
transmissor e o receptor. Sendo assim, serão necessárias duas linhas de
transmissão, uma para o sinal de clock e outra para os dados. Da mesma
forma que no modo assíncrono, a transmissão síncrona pode ser de 8 ou
9 bits, sendo o m eio, no entanto, utilizado de form a half-duplex, ou seja,
a transmissão pode ser dar nos dois sentidos, porém não
simultaneamente.
CÓ D I G O AS C I I
O código ASCII (American Standard Code for Information
Interchange) é um dos mais utilizados em comunicação serial e é dividido
em dois grupos: os caracteres impressos e os caracteres de controle. Os
caracteres impressos são formados por 26 letras (maiúsculas e
minúsculas), os números de 0 a 9, pontuação e caracteres especiais como
ponto, vírgula, interrogação, etc. os caracteres de controle ocupam as
duas primeiras colunas da tabela, e não são impressos, servindo para
efetuar o controle ou facilitar a transmissão de informação numa
comunicação.
95 FATE C TAT UÍ
A s e g u i r a T a b e l a d o CÓ DI G O AS C I I :
96 FATE C TAT UÍ
RESET
O vetor RESET (localização 0x00h), ativo em nível baixo, leva o
MCC a reiniciar seus registradores para valores iniciais pré-definidos na
fabricação. Um dos mais importantes efeitos de um reset é o que zera o
contador de programa (PC), fazendo com que o programa comece a ser
executado a partir da primeira instrução do softw are programado. Em
suma, este reinício de atividade pode ocorrer de forma manual, por
deficiência na alimentação ou até mesmo por erro no software. Para o
MCC funcionar corretamente, ele dever ter seu pino MCLR em nível alto.
Se houver uma variação para zero, ocorrerá a condição de RESET. Este
evento pode ocorrer de seis formas:
• O PC será zerado;
• O W DT será inicializado;
97 FATE C TAT UÍ
POWER-ON RESET (POR)
Este é um circuito interno ao MCC que o mantém em reset até que a
tensão de alimentação (VDD) alcance tensão suficiente quando a tensão
de alimentação é ligada, para que o MCC possa funcionar corretamente. É
selecionado pelo registrador PCON<1> no endereço 0Ch.
MODO SLEEP
Este é um modo de funcionamento de baixo consumo (menos de
1µA) útil em sistemas que funcionam com bateria, nos quais é crítico o
consumo de energia.
Uma vez no modo SLEEP, três são os eventos que fazem com que
ocorra um wake-up, ou seja, o MCC “acorda”:
98 FATE C TAT UÍ
Interrupção por mudança de estado
RB7:RB4
99 FATE C TAT UÍ
PS2:PS0 W DT ESTOURO
000 1:1 18ms
001 1:2 36ms
010 1:4 72ms
011 1:8 144ms
100 1:16 288ms
101 1:32 576ms
110 1:64 1,15s
111 1:128 2,3s
Tabela 6: Estouro do W DT
Instrução SLEEP
Instrução CLRW DT
M AS TE R C LE AR E N AB L E
Esta é opção que define o uso do pino 4, que pode ser I/O ou
Master Clear externo (MCLR). Ao habilitar esta opção, o pino 4 funciona
como MCLR.
L O W V OL T AG E P R O G R AM
Este é recurso relativamente novo para muitos modelos de PIC.
Trata-se do sistema de programação do PIC (gravação da memória de
programa) em baixa tensão: 5V. Normalmente essa programação é
habilitada por uma alta tensão (13V) no pino MCLR. Acontece que hoje é
possível criar sistemas onde um PIC possa gravar o programa de outro
PIC, ou então efetuar um upgrade remoto. Para facilitar essa
implementação, a Microchip elaborou um sistema onde não é necessário
os 13V, raramente disponíveis na maioria dos projetos. Assim, todo o
processo utiliza somente o nível TTL, custom izando o hardware. Para que
esse sistema funcione de forma robusta e eficaz, um pino deve ser
dedicado à função de entrar no modo de programação. Quando habilitada
esta opção, o pino 10 deixa de ser o RB4 e passa a operar em PGM.
D AT A EE READ PR OTECT
Com esta opção ativada, não será possível ler a m emória de dados
(EEPROM Interna) através do gravador do PIC. Durante o
desenvolvimento, ou até em alguns tipos de projeto, sua leitura pode ser
uma forma interessante de achar erros e solucionar problemas.
100 FATEC TATUÍ
CODE PROTECT
É a mais importante opção a ser configurada. Ativado o código de
proteção, ninguém mais consegue ler o programa gravado no chip, nem
mesmo o programador. O chip pode ser regravado, mas não pode ser lida
a sua memória de programa, até que uma nova gravação seja feita com
essa opção desativada. Ativar o código de proteção garante que o
programa gravado no componente não será copiado de forma alguma.
D E FI NI N D O AS C O N FI G UR AÇ Õ E S NO PR Ó P RI O P R O GR AM A
Para evitar a chata tarefa de ter de configurar essas opções, todas
as vezes que for gravar um PIC, e também para evitar dúvidas sobre o
correto estado de cada uma delas, é possível especificar esta escolha no
próprio código do programa, por meio de uma diretriz de compilação. A
diretriz _CO NFIG (com dois underlines) configura diretamente as opções
de gravação. Para facilitar o trabalho com ela, os arquivos de include já
definem nomes para as diversas opções. No caso, do PIC16F628A, tem-se
as seguintes opções:
_EXTCLK_O SC: Para clock externo sem saída CKO UT (com I/O).
_CONFIG
_ CP_ ON &_PW RTE_ON &_W DT_OFF&_INTOSC _O SC_ NO CKOUT
CÓDIGO ID
O PIC16F628A possui quatro posições de memória reservadas para
armazenamento de um núm ero de ID (identificação) no chip. A diretiva
_IDLOCS é usada para este fim. Embora cada posição de memória tenha 8
bits, só os 4 bits menos significativos estão disponíveis. Desta forma
pode-se gravar quatro dígitos de 0 a 9 e de A a F como bits ID. O
exemplo seguinte mostra como gravar o ID no chip. Observe que o valor a
ser gravado é 1234h.
_IDLOCS H’1234’
E xe m pl os de ha r dw ar e e so f t w ar e.
I NÍ CI O
C O N FI G U R AÇ Õ E S
I NI CI AL I Z AÇ Õ E S
R E GI S TR AD O R E S ,
I / O ’ s , p ul l -
u p s , c om pa r a dor es
M AI N
AC E N D E L E D
;-------------------------------------------------------------------
; PROGRAMA BÁSICO
; ACENDER LED
; MICROCONTROLADORES FATEC - PROF. ORLANDO
; VERSÃO: 1.0 DATA: 08/09
;-------------------------------------------------------------------
; DESCRIÇÃO DO ARQUIVO
;-------------------------------------------------------------------
; Acender um led que está alocado em RA2, acende em nível baixo,
; utilizando as instr uções de bits .
; -------------------------------------------------------------------
; ARQUIVOS DE DEFINIÇÕES
;
#INCLUDE <P16F628A.INC> ;ARQUIVO PADRÃO MICROCHIP PARA 16F628A
;
; DEFINIÇÃO DAS CONFIGURAÇÕES NO PRÓPRIO PROGRAMA
__CONFIG _BOREN_O N & _CP_OF F & _PW RTE_O N & _W DT_OF F &
_LVP_OFF & _MCLRE_ON & _XT_OSC
VAR1 ;USUÁRIO
VAR2 ;REGISTRADORES TEMPORÁRIOS PARA USO GERAL.
;-------------------------------------------------------------------
; VETOR DE RESET
;-------------------------------------------------------------------
ORG 0x00 ;ENDEREÇO INICIAL DE PROCESSAMENTO
GOTO INICIO
;-------------------------------------------------------------------
; INICIO DO PROGRAMA
;-------------------------------------------------------------------
ORG 0X05
INICIO
BANK1 ;ALTERA PARA O BANCO 1.
MOVLW b'11111111' ;
MOVW F TRISB ;DEFINE O PORTB COMO ENTRADAS
MOVLW b'11111011' ;DEFINE O RA2 COMO SAÍDA E AS
;DEMAIS COMO ENTRADAS.
MOVW F TRISA
MOVLW b'10000000' ;
MOVWF OPTION_REG ;PULL-UPS DESAB ILIT ADOS <7>
;DEMAIS BITS IRRELEVANTES.
BANK0 ;RETORNO PARA O BANCO 0
MOVLW b'00000000'
MOVW F INTCON ;TODAS A INTERRUPÇÕES DESLIGADAS
MOVLW b'00000111'
MOVW F CMCON ;DEFINE O MODO DE OPERAÇÃO DO
;COMPARADOR
;-------------------------------------------------------------------
; ROTINA PRINCIPAL
;-------------------------------------------------------------------
MAIN
BCF LED ;ACENDE LED
GOTO MAIN ;VAI PARA MAIN
;-------------------------------------------------------------------
; FIM DO PROGRAMA
;-------------------------------------------------------------------
END
INÍCIO
CO NF IG UR AÇÕ ES
I NI CI AL I Z AÇ Õ E S
R E GI S TR AD O R E S,
I/O’s, pull-
ups,comparadores
M AI N
BOTÃO S1 NÃO
AC I O N AD O ?
SIM AP AG A L ED
AC E N D E L E D
;-------------------------------------------------------------------
; PROGRAMA BÁSICO
; BOTÃO E LE D
; MICROCONTROLADORES FATEC - PROF. ORLANDO
; VERSÃO: 1.0 DATA: 08/09
;-------------------------------------------------------------------
; DESCRIÇÃO DO ARQUIVO
;-------------------------------------------------------------------
; Acender um led que está alocado em RA2, acende em nível baixo,
; através do acionamento de um botão (S1) que está alocado em RA3 também
; em nível bai xo.
; -------------------------------------------------------------------
; ARQUIVOS DE DEFINIÇÕES
;
107 FATEC TATUÍ
#INCLUDE <P16F628A.INC> ;ARQUIVO MICROCHIP PARA 16F628A
;-------------------------------------------------------------------
; PAGINAÇÃO DE MEMÓRIA
;-------------------------------------------------------------------
;DEFINIÇÃO DE COMANDOS DE USUÁRIO PARA ALTERAÇÃO DA PÁGINA DE
MEMÓRIA
;
#DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMÓRIA
#DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MAMÓRIA
#DEFINE LED PORTA,2
#DEFINE S1 PORTA,3
;-------------------------------------------------------------------
; VARIÁVEIS
;-------------------------------------------------------------------
; DEFINIÇÃO DOS NOMES E ENDEREÇOS DE TODAS AS VARIÁVEIS
; UTILIZADAS PELO SISTEMA
VAR1 ;USUÁRIO
VAR2 ;REGISTRADORES TEMPORÁRIOS PARA USO GERAL.
;-------------------------------------------------------------------
; VETOR DE RESET
;-------------------------------------------------------------------
ORG 0x00 ;ENDEREÇO INICIAL DE PROCESSAMENTO
GOTO INICIO
;-------------------------------------------------------------------
; INICIO DO PROGRAMA
;-------------------------------------------------------------------
ORG 0X05
INICIO
BANK1 ;A LT ERA P ARA O BANCO 1.
MOVLW b'11111111' ;
MOVW F TRISB ;DEFINE O PORTB COMO ENTRADA
MOVLW b'11111011' ;DEFINE O RA2 COMO SAÍDA E AS
;DEMAIS COMO ENTRADAS.
MOVW F TRISA
MOVLW b'10000000' ;
MOVWF OPTION_REG ;PULL-UPS DESABILITADOS <7>
;DEMAIS BITS IRRELEVANTES.
BANK0 ;RETORNO PARA O BANCO 0
MOVLW b'00000000'
MOVW F INTCON ;TODAS A INTERRUPÇÕES DESLIGADAS
MOVLW b'00000111'
MOVW F CMCON ;DEFINE O MODO DE OPERAÇÃO DO
;COMPARADOR
;-------------------------------------------------------------------
Exercícios extensão:
2.1- Mudar o código para fazer o led ficar aceso quando a tecla não
estiver acionada, e piscar quando acionada.