Escolar Documentos
Profissional Documentos
Cultura Documentos
Microcontroladores Unicamp
Microcontroladores Unicamp
Barramento de dados
Barramento de controle
REGS.
REGS. DE ESPECIAIS
PROPÓSITO UNIDADE
GERAL DE ENTRADA
UNID. DE E SAÍDA
UNIDADE DE
CONTROLE
ARITMÉTICA E LÓGICA
DISPOSITIVOS
DE E/S
Barramento de dados
Barramento de endereços
Barramento de controle
A B RDM REM PC
C D RI
E F SP
... ...
UNID. DE
UNIDADE DE
CONTROLE
ARITMÉTICA E LÓGICA
• Arquitetura RISC
2 4 6 8 10
Time
IF ID EX MEM WB
Instruction Data
lw $2, 200($0) 8 ns fetch
Reg ALU
access
Reg
Instruction
lw $3, 300($0) 8 ns fetch
...
8 ns
Program
execution 2 4 6 8 10 12 14
Time
order
(in instructions)
Instruction Data
lw $1, 100($0) Reg ALU Reg
fetch access
Instruction Data
lw $2, 200($0) 2 ns Reg ALU Reg
fetch access
Instruction Data
lw $3, 300($0) 2 ns Reg ALU Reg
fetch access
2 ns 2 ns 2 ns 2 ns 2 ns
Value of CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
register $2: 10 10 10 10 10/– 20 – 20 – 20 – 20 – 20
Program
execution
order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg
Value of CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
register $2: 10 10 10 10 10/– 20 – 20 – 20 – 20 – 20
Program
execution
order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg
ID/EX
0
M
u WB
x EX/MEM
1
Control M WB
MEM/WB
EX M WB
IF/ID
Add
Add
4 Add result
RegWrite
Branch
Shift
left 2
MemWrite
ALUSrc
Read
MemtoReg
Instruction
PC Address register 1
Read
data 1
Read
register 2 Zero
Instruction
Registers Read ALU ALU
memory Write 0 Read
data 2 result Address 1
register M data
u Data M
Write x memory u
data x
1
0
Write
data
Instruction 16 32 6
[15– 0] Sign ALU MemRead
extend control
Instruction
[20– 16]
0 ALUOp
M
Instruction u
[15– 11] x
1
RegDst
– Aplicações automobilísticas
– Tranca de portas
– Dispositivos de segurança
• Pinagem
• Reset
• Registro de Estado
• 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 6:5 - RP1-RP0 - bits de seleção de bancos:00 = 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
• Registro de Opção
• Registro de Opção
• Registro de Opção
• bit 0:2 - 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
• TRISA – 85h
• TRSIB – 86h
09/22/09 Ricardo Pannain 39
3. 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 ; PORTB=0
bsf STATUS,RP0 ; Bank1
movlw 0x0f ; define pinos de entrada e saída
movwf TRISB ; escreve no registrador TRISB
• 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 ; PORTA=0
bsf STATUS,RP0 ; Bank1
movlw 0x1f ; define pinos de entrada e saída
movwf TRISA ; escreve no registrador TRISA
• Organização
de Memória:
• Dois bancos de
memória: dados e
programa.
• Dados: EEPROM e
registradores GPR
• Programa: FLASH
• 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
• 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
• Programação
• Endereçamento direto
• Exemplo de acesso
a registradores SFR
• 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
• Interrupções
• Interrupções
– Registrador de Controle INTCON
bit 0 RBIF (RB Port Change Interrupt Flag bit) Bit which informs about
changes on pins 4, 5, 6 and 7 of port B.
1=at least one pin has changed its status
0=no change occured on any of the pins
bit 1 INTF (INT External Interrupt Flag bit) External interrupt occured.
1=interrupt occured
0=interrupt did not occur
If 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 00h
0=overflow did not occur
Bit must be cleared in program in order for an interrupt to be detected.
bit 4 INTE (INT External Interrupt Enable bit) Bit which enables external interrupt from pin
RB0/INT.
1=external interrupt enabled
0=external interrupt disabled
If 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.
1=interrupt enabled
0=interrupt disabled
If T0IE and T0IF were set simultaneously, interrupt would occur.
bit 6 EEIE (EEPROM Write Complete Interrupt Enable bit) Bit which enables
an interrupt at the end of a writing routine to EEPROM
1=interrupt enabled
0=interrupt disabled
If 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.
1=all interrupts are enabled
0=all interrupts are disabled
• Inicialização de interrupções
• Timer TMR0
– 8 bits (0 a 255)
d = 0 destino é W; d = 1 destino f
f = endereço de de 7 bits de registrador
b = endereço de 3 bits
f = endereço de 7 bits de registrador
k = imediato de 8 bits
k = imediato de 11 bits
Campo Descrição
• Linguagem assembly
– Labels
– Instruções
– Operandos
– Diretivas
– Comentários
• Labels
• Instruções
• Operandos
DIRETIVAS DESCRIÇÃO
DIRETIVAS DESCRIÇÃO
_config seta configuração de bits
processor define o tipo do microcontrolador
• Macros
PIC
RA0 RB0
RB1
RA1 RB2
RB3
RA2 RB4
RA3 RB5
RB6
RA4 RB7
L1 L2 L3 L4 L5 L6 L7 L8
PIC
RA0 RB0
RB1
RA1 RB2
RB3
RA2 RB4
RA3 RB5
RB6
RA4 RB7
abcdefg.
PIC
RA0 RB0
RB1
RA1 RB2
RB3
RA2 RB4
RA3 RB5
RB6
RA4 RB7
PIC
RA0 RB0
RB1
RA1 RB2
RA2 RB3
RB4
RA3 RB5
RB6
RA4 RB7
PIC
RA0 RB0
RB1
RA1 RB2
RB3
RA2 RB4
RA3 RB5
RB6
RA4 RB7
PIC
RA0 RB0
RB1
RA1 RB2
RA2 RB3
RB4
RA3 RB5
RB6
RA4 RB7
L1 L2 L3 L4 L5 L6 L7 L8
PIC
RA0 RB0
RB1
RA1 RB2
RA2 RB3
RB4
RA3 RB5
RB6
RA4 RB7
PIC
RA0 RB0
RB1
RA1 RB2
RA2 RB3
RB4
RA3 RB5
RB6
RA4 RB7
PIC
RA0 RB0
RB1
RA1 RB2
RA2 RB3
RB4
RA3 RB5
RB6
RA4 RB7
abcdefg.
PIC
RA0 RB0
RB1
RA1 RB2
RA2 RB3
RB4
RA3 RB5
RB6
RA4 RB7
• Programa que irá simular um contador de 2 dígitos (00 a 99). Para sua
realização, serão utilizados dois displays de 7 segmentos, e dois
conversores binário-7segmentos, que recebe um número binário de 4
bits e transforma este número para a representação do display. Para
exibir os números nos displays, utilizaremos a porta B, sendo que os 4
bits menos significativos representarão o número a ser exibido no
primeiro display (unidade), e os 4 bits mais significativos representarão
o número a ser exibido no segundo display (dezena). Este contador
terá duas chaves e um botão (push buttom). A chave ligada à entrada
RA0 da porta A irá controlar o sentido da contagem (0 = Decrescente e
1 = Crescente). A chave ligada à entrada RA1 da porta A irá controlar
a parada do contador (0 = Parar e 1 = Contar). E, por último, o botão
ligado à RA2 servirá de reset, ou seja, quando pressionado, irá zerar
os displays e recomeçar a contagem.
abcdefg. abcdefg.
a
b
c
d
e
f
g
a
b
c
d
e
f
g
4543
4543
PH
D3
D2
LD
D3
D2
D1
D0
LD
BI
D1
D0
BI
PH
PIC
RA0 RB0
RB1
RA1 RB2
RB3
RA2 RB4
+V
RA3 RB5
RB6
RA4 RB7