Escolar Documentos
Profissional Documentos
Cultura Documentos
Apresentacao PIC1
Apresentacao PIC1
Desbravando o PIC
Eng. Diego Camilo Fernandes
Labtools Mosaico Didactic Division
PIC
Programa
Programa
Entradas
Entradas
PIC
PIC
Sa
das
Sadas
As famlias de PIC...
Performance
Prog Mem:
Mem:
Data Mem:
Mem:
10Fxxx
10Fxxx
0.75 kBytes
24 Bytes
12Fxxx
12Fxxx
3.5 kBytes
128 Bytes
16Fxxx
16Fxxx
14 kBytes
368 Bytes
Memria
18Fxxxx
18Fxxxx
128 kBytes
3968 Bytes
Arquitetura do microcontrolador
A Microchip adotou a
arquitetura Harvard para a
sua linha de
microcontroladores.
RISC set de instrues
reduzido, a linha 16 possui
35 instrues.
Possui dois tipos de
memria, uma para dados e
outra para instrues.
Barramento de dados
separados para memria de
dados e memria de
programa.
Arquitetura do microcontrolador
Estruturao Interna
Os ciclos de mquina
Set
de
instru
es
Instruo
Instruo
[W]
[W]
[F]
[F]
[L]
[L]
[B]
[B]
[T]
[T]
[Z]
[Z]
[S]
[S]
[C]
[C]
[S]
[S]
[f]
[f]
[d]
[d]
[b]
[b]
[k]
[k]
Instruo
Work
Work
Instruo
[ADD]
[ADD]Soma
Soma
File
File(Registrador)
(Registrador)
Literal
Literal
[AND]
[AND]E
E
[CLR]
[CLR] Limpar
Limpar
Bit
Bit
Test
Test
[COM]
[COM]Complementa
Complementa
[DEC]
[DEC] Decrementa
Decrementa
Zero
Zero
Skip
Skip(Pula)
(Pula)
[INC]
[INC] Incrementa
Incrementa
[IOR]
[IOR] OU
OU
Clear
Clear(0)
(0)
Set
Set(1)
(1)
[MOV]
[MOV]Move
Move
[RL]
[RL] Rotaciona
RotacionaEsq.
Esq.
Argumento
Argumento
File
o)
File(Endere
(Endereo)
[RR]
[RR] Rotaciona
RotacionaDir.
Dir.
[SUB]
[SUB] Subtrai
Subtrai
Destino
Destino(W/F)
(W/F)
Bit
mero)
Bit(N
(Nmero)
[SWAP]
[SWAP]Inverte
Inverte
[XOR]
exclusivo
[XOR]OU
OU
exclusivo
Literal
Literal(Valor)
(Valor)
[RET]
[RET] Retornar
Retornar
Comandos em Assembly
Lidando com os dados pg. 85
Exemplo:
MOVLW
10 ;
Comandos em Assembly
Lidando com os dados pg. 85
f ;onde f um registrador
Exemplo:
MOVLW
30 ;
MOVWF
PORTB ;
Comandos em Assembly
Lidando com os dados pg. 85
PORTB,W ;
Comandos em Assembly
Lidando com os dados pg. 85
f ;onde f um registrador
Exemplo:
CLRF
PORTB ;
Comandos em Assembly
Lidando com os dados pg. 85
limpar o acumulador
Comandos em Assembly
Trabalhando com rotinas pg. 91
Exemplo:
GOTO
Comandos em Assembly
Trabalhando com rotinas pg. 91
Exemplo:
CALL
Comandos em Assembly
Trabalhando com rotinas pg. 91
Comandos em Assembly
Trabalhando com rotinas pg. 91
Exemplo:
RETLW
10 ; retorna de uma rotina com o valor 10 no
acumulador
Comandos em Assembly
Tomando decises e fazendo desvios pg. 94
BTFSC testa bit do registrador e pula a prxima linha se
o resultado for 0
Sintaxe:
BTFSC
testado
Exemplo:
BTFSC
STATUS,Z
GOTO
RESULT_UM
GOTO
RESULT_ZERO
Comandos em Assembly
Tomando decises e fazendo desvios pg. 94
BTFSS testa bit do registrador e pula a prxima linha se
o resultado for 1
Sintaxe:
BTFSS
testado
Exemplo:
BTFSS
PORTA,0
GOTO
RESULT_ZERO
GOTO
RESULT_UM
Comandos em Assembly
Tomando decises e fazendo desvios pg. 94
BSF seta um bit do registrador
Sintaxe:
BSF
Exemplo:
BSF
PORTA,0
Comandos em Assembly
Tomando decises e fazendo desvios pg. 94
BCF limpa um bit do registrador
Sintaxe:
BCF
Exemplo:
BCF
PORTA,0
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Somando
INCF incremento unitrio do registrador
Sintaxe:
INCF f,d ; onde f um registrador e d o destino
(W ou F)
Exemplo:
incrementar o registrador PORTB e o
resultado no prprio registrador
INCF PORTB,F
; incremento do PORTB
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Somando
INCFSZ incremento unitrio do registrador e pula a
prxima linha se o resultado for igual a zero
Sintaxe:
INCFSZ
Comandos em Assembly
Exemplo:
incrementar o registrador PORTB e o
resultado no prprio registrador
INCFSZ
PORTB,F
; incremento do PORTB
GOTO
DIF_DE_ZERO
GOTO
IGUAL_A_ZERO
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Somando
ADDWF soma o contedo do acumulador ao
registrador.
Sintaxe:
ADDWF
Comandos em Assembly
Exemplo:
Somar 50 ao contedo do registrador A e
resultado deve ser guardado em A (A = A + 50).
MOVLW
50 ;
move 50 em W
ADDWF
A,F;
soma W em A e resultado em A
Comandos em Assembly
Exemplo:
Somar o contedo do registrador B ao
contedo do registrador A e resultado deve ser guardado
em C (C = A+B).
MOVF
ADDWF
MOVWF
C;
move contedo de W em C
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Somando
ADDLW soma uma constante ao contedo do
acumulador.
Sintaxe:
ADDLW
Exemplo:
Somar 50 ao contedo do registrador
acumulador
ADDLW
50 ;
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Subtraindo
DECF decremento unitrio do registrador
Sintaxe:
DECF f,d ; onde f um registrador e d o destino
(W ou F)
Exemplo:
decrementar o registrador PORTB e o
resultado no prprio registrador
DECF PORTB,F
; incremento do PORTB
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Subtraindo
DECFSZ decremento unitrio do registrador e pula a
prxima linha se o resultado for igual a zero
Sintaxe:
DECFSZ
Comandos em Assembly
Exemplo:
decrementar o registrador PORTB e o
resultado no prprio registrador
DECFSZ
PORTB,F
; decremento do PORTB
GOTO
DIF_DE_ZERO
GOTO
IGUAL_A_ZERO
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Subtraindo
SUBWF subtrai o contedo do acumulador ao
registrador.
Sintaxe:
SUBWF
Comandos em Assembly
Exemplo:
Subtrair 50 ao contedo do registrador A e
resultado deve ser guardado em A (A = A - 50).
MOVLW
50 ;
move 50 em W
SUBWF
A,F;
subtrai W em A e resultado em A
(A = A - W)
Comandos em Assembly
Exemplo:
Subtrair o contedo do registrador B ao
contedo do registrador A e resultado deve ser guardado
em C (C = A-B).
MOVF
SUBWF
MOVWF
C;
move contedo de W em C
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Subtraindo
SUBLW subtrai uma constante ao contedo do
acumulador.
Sintaxe:
SUBLW
Exemplo:
SUBLW
50 ;
subtrai 50 do contedo de W
Comandos em Assembly
Comparando pg. 105
Com as operaes aritmticas, especialmente a
subtrao conseguimos realizar comparaes como
maior que menor que igual
Exemplo 1 - comparar se X >= 50
MOVF
X,W
SUBLW
50
; W = 50 - W
BTFSC
STATUS,C
GOTO
MAIOR_IG
GOTO
MENOR
Comandos em Assembly
Comparando pg. 105
Exemplo 2 - comparar se X = 50
MOVF
X,W
SUBLW
50
; W = 50 - W
BTFSS
STATUS,Z
GOTO
DIFERENTE ; se X != 50
GOTO
IGUAL
; se X = 50
Comandos em Assembly
Comparando pg. 105
Exemplo 3 - comparar se X > Y
MOVF
X,W
SUBWF
Y,W
;W=Y-W
BTFSC
STATUS,C
GOTO
MENOR
BTFSS
STATUS,Z
GOTO
MAIOR
GOTO
IGUAL
; se X = Y
(result. zero)
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Multiplicando
27
26
25
24
23
22
21
20
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Multiplicando
RLF Rotaciona o registrador esquerda
Sintaxe:
RLF
STATUS,C
RLF
X,F
;multiplica por 2 (X = X * 2)
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Dividindo
27
26
25
24
23
22
21
20
Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101
Dividindo
RRF Rotaciona o registrador direita
Sintaxe:
RRF f,d ; onde f um registrador e d o destino
(W ou F)
Exemplo: Dividir o registrador X por 2
BCF
STATUS,C
RRF X,F
;multiplica por 2 (X = X / 2)