Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
PIC
Programa Programa
Entradas Entradas
PIC PIC
Sadas Sadas
As famlias de PIC...
Performance
10Fxxx 10Fxxx
0.75 kBytes 24 Bytes
12Fxxx 12Fxxx
3.5 kBytes 128 Bytes
16Fxxx 16Fxxx
18Fxxxx 18Fxxxx
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
[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]
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)
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
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
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