Você está na página 1de 48

Curso PIC 1 Desbravando o PIC

Eng. Diego Camilo Fernandes Labtools Mosaico Didactic Division

O que fazemos ...

Desenvolvimento de projetos (hardware e software); Consultoria em engenharia eletrnica e produo; Servios completos: da idia ao produto; Treinamentos em microcontroladores; Elaborao de materiais didticos.

Com quem trabalhamos ...


A Mosaico HPS j desenvolveu projetos com microcontroladores para diversas reas: bioengenharia (mdicos / odontologia / esttica); automao & controle (controladores / indicadores); instrumentao (sensores); sistemas de energia (estabilizadores / no breaks); sistemas de segurana (alarmes); telecomunicaes (telefonia).

PIC

Programa Programa

Entradas Entradas

PIC PIC

Sadas Sadas

As famlias de PIC...

Desempenho das famlias do PIC

Performance

10Fxxx 10Fxxx
0.75 kBytes 24 Bytes

12Fxxx 12Fxxx
3.5 kBytes 128 Bytes

16Fxxx 16Fxxx

18Fxxxx 18Fxxxx

Prog Mem: Mem: Data Mem: Mem:

14 kBytes 368 Bytes

128 kBytes 3968 Bytes

Memria

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

Mapa da Memria de Programa

Mapa da Memria de Dados

[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

Set de instrues o Instruo Instru


[AND] E [AND] E [CLR] Limpar [CLR] Limpar

Instruo [ADD] Soma [ADD] Soma

File (Registrador) File (Registrador) Literal Literal Bit Bit Test Test Zero Zero Skip (Pula) Skip (Pula) Clear (0) Clear (0) Set (1) Set (1) Argumento Argumento File (Endereo) File (Endereo) Destino (W/F) Destino (W/F) Bit (Nmero) Bit (Nmero) Literal (Valor) Literal (Valor)

[COM] Complementa [COM] Complementa [DEC] Decrementa [DEC] Decrementa [INC] Incrementa [INC] Incrementa [IOR] OU [IOR] OU [MOV] Move [MOV] Move [RL] Rotaciona Esq. [RL] Rotaciona Esq. [RR] Rotaciona Dir. [RR] Rotaciona Dir. [SUB] Subtrai [SUB] Subtrai [SWAP] Inverte [SWAP] Inverte [XOR] OU exclusivo [XOR] OU exclusivo [RET] Retornar [RET] Retornar

Comandos em Assembly
Lidando com os dados pg. 85

MOVLW move uma constante (literal) para o acumulador Sintaxe: MOVLW Exemplo: MOVLW k ;onde k uma constante mover o nmero 10 para o acumulador 10 ;

Comandos em Assembly
Lidando com os dados pg. 85

MOVWF move o contedo do acumulador para um registrador (ou varivel); Sintaxe: MOVWF Exemplo: MOVLW MOVWF f ;onde f um registrador mover o nmero 30 para registrador PORTB 30 ; PORTB ;

Comandos em Assembly
Lidando com os dados pg. 85

MOVF move o contedo de um registrador para o acumulador ou para o prprio registrador; Sintaxe: MOVF f,d ;onde f um registrador e d o destino (W ou F)

mover o contedo do registrador PORTB Exemplo: para o acumulador MOVF PORTB,W ;

Comandos em Assembly
Lidando com os dados pg. 85

CLRF limpa um registrador; Sintaxe: CLRF Exemplo: CLRF f ;onde f um registrador limpar o registrador PORTB PORTB ;

Comandos em Assembly
Lidando com os dados pg. 85

CLRW limpa o acumulador; Sintaxe: CLRW Exemplo: CLRW limpar o acumulador

Comandos em Assembly
Trabalhando com rotinas pg. 91

GOTO desvia o fluxo do programa para um determinado ponto da memria de programa Sintaxe: GOTO Exemplo: GOTO INICIO ; desvia programa para a label incio. nome ;onde o nome uma identificao para onde deseja pular.

Comandos em Assembly
Trabalhando com rotinas pg. 91

CALL desvia o fluxo do programa para um determinado ponto da memria de programa e gasta um nvel de pilha Sintaxe: CALL Exemplo: CALL DELAY ; chama a rotina DELAY nome ;onde o nome uma identificao da rotina.

Comandos em Assembly
Trabalhando com rotinas pg. 91

RETURN finaliza a execuo de uma rotina voltando ao ltimo endereo guardado na pilha sem afetar o acumulador Sintaxe: RETURN Exemplo: RETURN

Comandos em Assembly
Trabalhando com rotinas pg. 91

RETLW finaliza a execuo de uma rotina voltando ao ltimo endereo guardado na pilha e com um valor guardado no acumulador; Sintaxe: RETLW Exemplo: RETLW 10 ; retorna de uma rotina com o valor 10 no acumulador k ; onde k uma constante (literal)

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 GOTO GOTO f,b ; onde f um registrador e b o bit a ser testar o bit Z do registrador STATUS STATUS,Z ; testa bit Z de STATUS

RESULT_UM 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 GOTO GOTO f,b ; onde f um registrador e b o bit a ser testar o bit 0 do registrador PORTA PORTA,0 ; testa bit 0 de PORTA

RESULT_ZERO RESULT_UM

Comandos em Assembly
Tomando decises e fazendo desvios pg. 94 BSF seta um bit do registrador Sintaxe: BSF f,b ; onde f um registrador e b o bit a ser setado setar um o bit 0 do registrador PORTA ; seta bit 0 de PORTA

Exemplo: BSF

PORTA,0

Comandos em Assembly
Tomando decises e fazendo desvios pg. 94 BCF limpa um bit do registrador Sintaxe: BCF f,b ; onde f um registrador e b o bit a ser limpado limpar o bit 0 do registrador PORTA ; limpa bit 0 de PORTA

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 f,d ; onde f um registrador e d o destino (W ou F)

Comandos em Assembly

Exemplo: incrementar o registrador PORTB e o resultado no prprio registrador INCFSZ GOTO GOTO PORTB,F ; incremento do PORTB

DIF_DE_ZERO IGUAL_A_ZERO

Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101 Somando ADDWF soma o contedo do acumulador ao registrador. Sintaxe: ADDWF f,d ; onde f um registrador e d o destino (W ou F)

Comandos em Assembly

Exemplo: Somar 50 ao contedo do registrador A e resultado deve ser guardado em A (A = A + 50). MOVLW ADDWF 50 ; A,F; move 50 em W 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 B,W ; move o contedo de B para W A,W ; soma W com A e resultado em W 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 k ; onde k uma constante

Exemplo: Somar 50 ao contedo do registrador acumulador ADDLW 50 ; soma 50 com o contedo de W

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 f,d ; onde f um registrador e d o destino (W ou F)

Comandos em Assembly

Exemplo: decrementar o registrador PORTB e o resultado no prprio registrador DECFSZ GOTO GOTO PORTB,F ; decremento do PORTB

DIF_DE_ZERO IGUAL_A_ZERO

Comandos em Assembly
Fazendo operaes aritmticas bsicas pg. 101 Subtraindo SUBWF subtrai o contedo do acumulador ao registrador. Sintaxe: SUBWF f,d ; onde f um registrador e d o destino (W ou F)

Comandos em Assembly

Exemplo: Subtrair 50 ao contedo do registrador A e resultado deve ser guardado em A (A = A - 50). MOVLW SUBWF 50 ; A,F; move 50 em W 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 B,W ; move o contedo de B para W A,W ; subtrai W com A e resultado em W (W = A - W) 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 k ; onde k uma constante (W = k - W) subtrair 50 ao contedo do acumulador 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 SUBLW BTFSC GOTO GOTO X,W 50 STATUS,C MAIOR_IG MENOR ; move X para o acumulador ; W = 50 - W ; testa o bit C de STATUS ; se X >= 50 (result. negativo) ; se X < 50 (result. positivo)

Comandos em Assembly
Comparando pg. 105 Exemplo 2 - comparar se X = 50 MOVF SUBLW BTFSS GOTO GOTO X,W 50 STATUS,Z ; move X para o acumulador ; W = 50 - W ; testa o bit Z de STATUS

DIFERENTE ; se X != 50 IGUAL ; se X = 50

Comandos em Assembly
Comparando pg. 105 Exemplo 3 - comparar se X > Y MOVF SUBWF BTFSC GOTO BTFSS GOTO GOTO X,W Y,W STATUS,C MENOR STATUS,Z MAIOR IGUAL ; move X para o acumulador ;W=Y-W ; testa o bit C de STATUS ; se X < Y (result. negativo) ; testa o bit Z de STATUS ; se X > Y (result. positivo) ; 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 f,d ; onde f um registrador e d o destino (W ou F)

Exemplo: Multiplicar o registrador X por 2 BCF RLF STATUS,C 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 ;multiplica por 2 (X = X / 2)

RRF X,F

Você também pode gostar