Title: Microcontroladores
1Microcontroladores
2Microcontroladores - Tópicos
- Conceitos Básicos de Arquitetura de Computadores
- Arquitetura Básica de um Microcontrolador
- Estudo de caso PIC 16F84
- Instruction Set PIC 16F84
- Programando em Linguagem de Montagem
- Sistema de Desenvolvimento MPLAB
- Exemplos de utilização
- Referências Bibliográficas
31. Conceitos Básicos de Arquitetura de
Computadores
- Arquitetura Havard X von Neuman
41. Conceitos Básicos de Arquitetura de
Computadores
- Organização Básica de um Computador Digital
51. Conceitos Básicos de Arquitetura de
Computadores
- Organização Básica de um Computador Digital
61. Conceitos Básicos de Arquitetura de
Computadores
2
4
6
8
1
0
T
i
m
e
I
F
I
D
E
X
W
B
M
E
M
71. Conceitos Básicos de Arquitetura de
Computadores
- Arquitetura RISC Execução de instruções
81. Conceitos Básicos de Arquitetura de
Computadores
- RISC- Execução de instruções Data Hazard
91. Conceitos Básicos de Arquitetura de
Computadores
- RISC- Execução de instruções Data Hazard
101. Conceitos Básicos de Arquitetura de
Computadores
- RISC- Execução de instruções Data Hazard
111. Conceitos Básicos de Arquitetura de
Computadores
- Exemplo de Arquitetura RISC - MIPS
122. Arquitetura Básica de um Microcontrolador
132. Arquitetura Básica de um Microcontrolador
142. Arquitetura Básica de um Microcontrolador
- Microcontrolador Unidade de Memória
152. Arquitetura Básica de um Microcontrolador
- Microcontrolador Unidade Central de
Processamento
162. Arquitetura Básica de um Microcontrolador
- Microcontrolador CPU ? Memória
172. Arquitetura Básica de um Microcontrolador
- Microcontrolador Unidade de E/S
- Portas de entrada, saída e bi-direcionais
182. Arquitetura Básica de um Microcontrolador
- Microcontrolador Porta Serial
192. Arquitetura Básica de um Microcontrolador
- Microcontrolador Unidade de Timer
202. Arquitetura Básica de um Microcontrolador
- Microcontrolador Watchdog
212. Arquitetura Básica de um Microcontrolador
- Microcontrolador Conversor A/D
223. Estudo de Caso PIC 16F84
- Microcontrolador PIC 16F84
- Microcontrolador RISC de 8 bits
233. Estudo de Caso PIC 16F84
- Memória Flash Memória de Programa
- Memória EEPROM Memória de Dados (que devem ser
- mantidos sem alimentação)
- Memória RAM Memória de Dados (usada pelo
programa durante sua execução) - Free-Run Timer Registrador de 8 bits que
trabalha independente do programa, que é
incrementado a cada 4 ciclos de clock - Unidade Central de Processamento
243. Estudo de Caso PIC 16F84
- Aplicações
- Aplicações automobilísticas
- Controle de equipamentos industriais
- Tranca de portas
- Dispositivos de segurança
253. Estudo de Caso PIC 16F84
263. Estudo de Caso PIC 16F84
273. Estudo de Caso PIC 16F84
283. Estudo de Caso PIC 16F84
- Pinagem
- Pin no.1 RA2 Second pin on port A. Has no
additional function - Pin no.2 RA3 Third pin on port A. Has no
additional function. - Pin no.3 RA4 Fourth pin on port A. TOCK1 which
functions as a timer is also found on this pin - Pin no.4 MCLR Reset input and Vpp programming
voltage of a microcontroller - Pin no.5 Vss Ground of power supply.
- Pin no.6 RB0 Zero pin on port B. Interrupt input
is an additional function. - Pin no.7 RB1 First pin on port B. No additional
function. - Pin no.8 RB2 Second pin on port B. No additional
function. - Pin no.9 RB3 Third pin on port B. No additional
function. - Pin no.10 RB4 Fourth pin on port B. No
additional function. - Pin no.11 RB5 Fifth pin on port B. No additional
function. - Pin no.12 RB6 Sixth pin on port B. 'Clock' line
in program mode. - Pin no.13 RB7 Seventh pin on port B. 'Data' line
in program mode. - Pin no.14 Vdd Positive power supply pole.
- Pin no.15 OSC2 Pin assigned for connecting with
an oscillator - Pin no.16 OSC1 Pin assigned for connecting with
an oscillator - Pin no.17 RA2 Second pin on port A. No
additional function - Pin no.18 RA1 First pin on port A. No additional
function.
293. Estudo de Caso PIC 16F84
- Geração de clock - osciladores
303. Estudo de Caso PIC 16F84
313. Estudo de Caso PIC 16F84
- Unidade Central de Processamento
323. Estudo de Caso PIC 16F84
- Unidade Lógica e Aritmética
333. Estudo de Caso PIC 16F84
- PIC 16F84 - Diagrama de Blocos
343. Estudo de Caso PIC 16F84
353. Estudo de Caso PIC 16F84
- Registro de Estado
- bit 0 - C - bit de carry
- bit 1 - DC - bit de carry para operações BCD
- bit 2 - Z - bit de zero
- bit 3 - PD - Powder-down 1 quando a fonte é
ligada e 0 quando executa instrução sleep - bit 4 - TO - Time-out 0 - watchdog overflow e
1 - caso contrário - bit 65 - RP1-RP0 - bits de seleção de bancos00
banco zero e 01 banco 1 para endereçamento
direto de memória - bit 7 - IRP (Register Bank Select) seleciona
banco de memória para endereçamento indireto de
memória - 1 banco 2 e 3 0 banco 0 e 1
363. Estudo de Caso PIC 16F84
373. Estudo de Caso PIC 16F84
383. Estudo de Caso PIC 16F84
- Registro de Opção
- bit 02 - PS0, PS1,PS2 - Define escala do timer
- bit 3 PSA assinala presacaler entre TMR0 e
watchdog. - bit 4 T0SE Source Edge Select
- bit 5 TOCS TMR0 Clock Source Select
- bit 6 INTEDG Interrupt Edge Select
- bit 7 RBPU PORTB Pull-up Enable
393. Estudo de Caso PIC 16F84
- Portas registrador conectado a pinos de entrada
e saída - TRISA 85h
- TRSIB 86h
403. Estudo de Caso PIC 16F84
- PORTB
- Tem um resistor pull-up interno pra definição de
nível 1 reset no RPBU bit do registrador de
opção - Definição de input/output 0/1
- Exemplo pinos 0,1,2 e 3 como entrada e 4,5,6 e
7 como saída - clrf STATUS Bank0
- clrf PORTB PORTB0
- bsf STATUS,RP0 Bank1
- movlw 0x0f define pinos de entrada e saída
- movwf TRISB escreve no registrador TRISB
413. Estudo de Caso PIC 16F84
- PORTA
- Pino 4 tem dupla função entrada externa para o
timer TMR0 (programação através do bit T0CS do
regsitrador de opção) - Definição de input/output 0/1
- Exemplo pinos 0,1,2, 3 e 4 como entrada e 5,6 e
7 como saída - clrf STATUS Bank0
- clrf PORTA PORTA0
- bsf STATUS,RP0 Bank1
- movlw 0x1f define pinos de entrada e saída
- movwf TRISA escreve no registrador TRISA
423. Estudo de Caso PIC 16F84
- Organização
- de Memória
- Dois bancos de
- memória dados e
- programa.
- Dados EEPROM e
- registradores GPR
- Programa FLASH
433. Estudo de Caso PIC 16F84
- Memória de Programa
- Memória FLASH 1024 X 14 bits
- endereço 0000h reset
- endereço 0004h vetor de interrupção
- Memória de Dados
- EEPROM 64 X 8
- Não é diretamente acessada. É acessada através
EEADR e EEDATA - RAM registradores GPR (General Purpose Register)
- localização 0x0C até 0x4F 68 posições
- Registrador SFR (Special Function Register)
- Ocupam as 12 primeiras posições dos dois bancos
de memória
443. Estudo de Caso PIC 16F84
- Bancos de Memória
- Selecionados via bits RP0 e RP1 do registrador de
STATUS - Exemplo
- bcf STATUS, RP0 zera o bit RP0 do registrador
STATUS, - selecionando o banco 0
- bsf STATUS, RP0 seta o bit RP0 do registrador
STATUS, - selecionando o banco 1
- MACROS
- BANK0 macro BANK1 macro
- bcf STATUS, RP0 bsf STATUS, RP0
- endm endm
453. Estudo de Caso PIC 16F84
- Program Counter PC registrador de 13 bits
- Contém o endereço da instrução que irá ser
executada - Pilha 8 palavras de 13 bits
- instruções CALL, RETURN, RETWL ou RETFIE
463. Estudo de Caso PIC 16F84
- Programação
- para utilização da memória de programa, o
microcontrolador deve estar setado em um modo
especial, conectando o pino MCLR ao Vdd (4,5 a
5,5 V). A Memória de programa é programada
serialmente usando dois pinos data/clock. - Modos de endereçamento direto ou indireto
473. Estudo de Caso PIC 16F84
- Endereçamento direto
- Exemplo de acesso
- a registradores SFR
- bsf STATUS, RP0 Bankl
- movlw 0xFF w0xFF
- movwf TRISA address of
- TRISA
- register
is - taken
- from
-
instruction - movwf
483. Estudo de Caso PIC 16F84
- Endereçamento indireto
- Exemplo
- Apagar 16 posições da RAM
- movlw 0x0C endereço inicial
- movwf FSR FSR aponta 0x0C
- LOOP clrf INDF INDF 0
- incf FSR endereço
- btfss FSR,4 tudo apagado?
- goto loop não, volta
- CONTINUE
- sim, OK
493. Estudo de Caso PIC 16F84
503. Estudo de Caso PIC 16F84
- Interrupções
- Registrador de Controle INTCON
513. Estudo de Caso PIC 16F84
- bit 0 RBIF (RB Port Change Interrupt Flag bit)
Bit which informs about changes on pins 4, 5, 6
and 7 of port B.1at least one pin has changed
its status0no change occured on any of the
pinsbit 1 INTF (INT External Interrupt Flag
bit) External interrupt occured.1interrupt
occured0interrupt did not occurIf a rising or
falling edge was detected on pin RB0/INT, (which
is defined with bit INTEDG in OPTION register),
bit INTF is set. Bit must be cleared in interrupt
subprogram in order to detect the next
interrupt.bit 2 T0IF (TMR0 Overflow Interrupt
Flag bit) Overflow of counter TMR0.1 counter
changed its status from FFh to 00h0overflow did
not occurBit must be cleared in program in order
for an interrupt to be detected.
523. Estudo de Caso PIC 16F84
- bit 3 RBIE (RB port change Interrupt Enable bit)
Enables interrupts to occur at the change of
status of pins 4, 5, 6, and 7 of port B. 1
enables interrupts at the change of
status0interrupts disabled at the change of
statusIf RBIE and RBIF were simultaneously set,
an interrupt would occur.bit 4 INTE (INT
External Interrupt Enable bit) Bit which enables
external interrupt from pin RB0/INT.1external
interrupt enabled0external interrupt
disabledIf INTE and INTF were set
simultaneously, an interrupt would occur.bit 5
T0IE (TMR0 Overflow Interrupt Enable bit) Bit
which enables interrupts during counter TMR0
overflow.1interrupt enabled0interrupt
disabledIf T0IE and T0IF were set
simultaneously, interrupt would occur.
533. Estudo de Caso PIC 16F84
- bit 6 EEIE (EEPROM Write Complete Interrupt
Enable bit) Bit which enables an interrupt at the
end of a writing routine to EEPROM1interrupt
enabled0interrupt disabledIf EEIE and EEIF
(which is in EECON1 register) were set
simultaneously , an interrupt would occur. - bit 7 GIE (Global Interrupt Enable bit) Bit
which enables or disables all interrupts.1all
interrupts are enabled0all interrupts are
disabled
543. Estudo de Caso PIC 16F84
- Tipos de interrupções
- Término de escrita de dados na EEPROM
- TMR0 interrupção causada por timer overflow
- Interrupção pela alteração dos pinos RB4 à RB7 da
porta B - Interrupção externa do pino do microcontrolador
RB0/INT
553. Estudo de Caso PIC 16F84
- PUSH e POP no tratamento de interrupções
563. Estudo de Caso PIC 16F84
- Exemplo de como salvar registradores no
tratamento de interrupção - Testar o banco corrente
- Armazenar o registrador W do banco corrente
- Armazenar o registrador STATUS no banco 0
- Executar a rotina de interrupção (ISR)
- Restaurar o registrador STATUS
- Restaurar o registrado W
573. Estudo de Caso PIC 16F84
- Push
- btfss STATUS, RP0 banco 0
- goto RPOCLEAR sim
- bcf STATUS, RP0 não, vá para banco 0
- movwf W_TEMP salva registrador W
- swapf STATUS, W W lt- STATUS
- movwf STATUS_TEMP STATUS_TEMP lt- W
- bsf STATUS_TEMP,1 RP0(STATUS_TEMP)1
- goto ISR_code push completo
- RPOCLEAR
- movwf W_TEMP salvo registrador W
- swapf STATUS_W W lt- STATUS
- movwf STATUS_TEMP STATUS_TEMP lt- W
-
- ISR_code
-
- rotina de interrupção
-
583. Estudo de Caso PIC 16F84
- Pop
- swapf STAUS_TEMP W lt- STATUS_TEMP
- movwf STATUS STATUS lt- W
- btfss STATUS, RP0 banco 1 ?
- goto Return_WREG não
- bcf STATUS, RP0 sim vá para banco 0
- swapf W_TEMP, F retorna conteúdo de W
- swapf W_TEMP, W
- bsf STATUS_RP0 VOLTO BANCO 1
- retfie terminou POP
- Return_WREG
- swapf W_TEMP, F retorna conteúdo de W
- swapf W_TEMP, W
- retfie terminou POP
593. Estudo de Caso PIC 16F84
- MACROS para POP e PUSH
- PUSH macro
- movwf W_TEMP W_TEMP lt- W
- swapf W_TEMP,F swap W_TEMP,F
- BANK1 macro para mudar para banco 1
- swapf OPTION_REG, W W lt- OPTION_REG
- movwf OPTION_TEMP OPTION_TEMP lt- W
- BANK0 macro para mudar para banco 0
- swapf STATUS,W W lt- STATUS
- movwf STAT_TEMP STAT_TEMP lt- W
- endm
- POP macro
- swapf STA_TEMP,W Wlt- STAT_TEMP
- movwf STATUS STATUS lt-W
- BANK1 macro para mudar para banco 1
- swapf OPTION_TEMP,W Wlt-OPTIO_TEMP
- movwf OPTION_REG OPTION_REG lt- W
- BANK0 macro para mudar para banco 0
603. Estudo de Caso PIC 16F84
- Interrupção externa via pino RB0/INT do
microcontrolador - triggered pela borda de subida do sinal ( se bit
INTEDG1 no OPTION6) ou de descida (INTEDG 0) - quando temos sinal em INT, INTF 1(INTCON1)
- para desabilitar, fazer INTE 0 (INTCON4)
- Interrupção TMR0 counter overflow
- seta T0IF (INTCON2)
- Interrupção pela alteração dos pinos 4,5,6 e 7 da
porta B - seta RBIF (INTCON0)
- Interrupção de fim de escrita na EEPROM
- seta EEIF (INTCON6)
613. Estudo de Caso PIC 16F84
- Inicialização de interrupções
- Inicialização da interrupção externa no pino RB0
- clrf INTCON todas interrupções
desabilitadas - movlw B00010000 apenas a interrupção
externa é habilitada - bsf INTCON, GIE ocorrências de
interrupções permitida
623. Estudo de Caso PIC 16F84
- Exemplo Como o PIC16F84 tem apenas uma
localização onde o endereço de uma sub-rotina é
armazenado, precisamos verificar se existe uma
rotina de interrupção sendo executada, quando
ocorre uma outra interrupção. - org ISR_ADDR endereço da rotina de
interrupção - btfsc INTCON, GIE GIE está OFF ?
- goto ISR_ADDR não, volte para o início
- PUSH macro PUSH
- btfsc INTCON, RBIF mudanças portb4..7 ?
- goto ISR_PORTB vá para o tratamento relativo
às mudanças - btfsc INTCON, INTF ocorreu interrupção
externa ? - goto ISR_RB0 vá para o tratamento relativo à
int. ext. - btfsc INTCON, TOIF overflow do timer TMRO ?
- goto ISR_TMRO vá p/ o tratamento relativo
overflow timer - BANK1 macro BANK1
- btfsc EECON1, EEIF fim da escrita na EEPROM
? - goto ISR_EEPROM vá p/ o tratamento relativo
fim escrita EEPROM - BANK0 macro BANK0
-
633. Estudo de Caso PIC 16F84
- Exemplo continuação
- ISR_PORTB
-
-
- goto END_ISR
- ISR_RB0
-
-
- goto END_ISR
- ISR_TMRO
-
-
- goto END_ISR
- ISR_EEPROM
-
-
- goto END_ISR
- END_ISR
643. Estudo de Caso PIC 16F84
- Timer TMR0
- 8 bits (0 a 255)
653. Estudo de Caso PIC 16F84
- Diagrama de tempo de interrupção com o timer
- transição 255 para 0 T0IF é setado
663. Estudo de Caso PIC 16F84
- Exemplo Determinar o número de voltas de um
motor
673. Estudo de Caso PIC 16F84
- Exemplo Inicialização do timer pra sinal com
borda de decida de fonte de clock externo - clrf TMRO TRMO 0
- clrf INTCON interrupções e T0IF0,
desabilitados - bsf STATUS, RP0 banco 1 pelo OPTION_REG
- movlw B00110001 escala 14, borda de
descida para clock externo, pull up na
porta B ativada - movwf OPTION_REG OPTION_REG lt- W
- TO_OVFL
- btfss INTCON, T0IF testa bit overflow
- goto TO_OVFL interrupção não ocorreu, espere
-
- parte do programa que processa o número de
voltas do motor -
- goto TO_OVFL