Nothing Special   »   [go: up one dir, main page]

Assembly Pic16f84a

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 23

DCA0104 – Arquitetura de Computadores

Visão Geral do PIC16F84A


Introdução à Programação Assembly
Diogo Pinheiro Fernandes Pedrosa
diogo@dca.ufrn.br
Departamento de Engenharia de Computação e Automação
Centro de Tecnologia
Universidade Federal do Rio Grande do Norte
Sobre o Microcontrolador

Faz parte da série 16 da Microchip

Memória flash para armazenar programa (1KB)

Memória RAM de 68 bytes

Palavra de 8 bits (1 byte)

Dois registradores de “porto” (E/S)
Sobre o Microcontrolador

Pinagem
Sistemas Embarcados

Restrição de hardware (memória, CPU, …)

Códigos eficientes

Códigos focados nas restrições existentes

Testes podem ser feitos em kits de
desenvolvimento ou simuladores
Desenvolvimento dos Programas

Considerar o conjunto de instruções

Saber que as instruções de um programa vêm
desse conjunto

Saber que a execução das instruções é
sequencial e que, eventualmente, pode ter essa
sequência alterada
Desafio

Própria codificação → linguagem humana X
linguagem da máquina

Aprender linguagem de máquina?

Programar em linguagem de alto nível!

Programar em assembly!
Desenvolvimento do Programa
Instruções da Série 16
Sobre a Unidade Lógico Aritmética.
Operandos:
> f → para indicar posição da
memória
> b → para indicar um bit específico
dentro da palavra
> d → para indicar o destino da
operação da ULA
> k → para valor literal (ou valor
imediato)

Mais detalhes das instruções: buscar


no datasheet do microcontrolador.
Exemplos:

CLRW → clear W
Faz com que o valor do registrador W
seja zero. O bit Z do registrador de
status fica com nível lógico “1”.

CLRF f → faz com que a posição da


memória f fique com valor zero.

ADDWF f, d → soma o conteúdo do


registrador W com o conteúdo da
posição de memória f e salva no local
indicado por d.
Pode modificar os bits Z, C e DC do
registrador de status
Formato do Código e Diretivas do
Montador
Programa Simples
; Programa simples MOVLW 00
; transferência de dados MOVWF TRISB
BCF STATUS, 5
list p=16f84a
CLRF PORTA
STATUS EQU 03
PORTA EQU 05 LOOP MOVF PORTA, 0
TRISA EQU 05 MOVWF PORTB
PORTB EQU 06 GOTO LOOP
TRISB EQU 06 END

ORG 00

START BSF STATUS, 5


MOVLW B’00011000’
MOVWF TRISA
Criar Projeto
No menu do MPLAB…

Project > Project Wizard


Criar Projeto
No menu do MPLAB…

File > New…


Digitar código!
File > Save As… (tipo Assembly Source File)
Escolher nome e colocar extensão .ASM
Project > Add Files to Project…

Project > Build Options > Project > MPASM Assembler


Assinalar formato hexadecimal, desmarcar sensível ao caso
Project > Build All
Simulação
Debugger > Select Tool > MPLAB Sim

Debugger > Stimulus Controller > New Scenario


Sob PIN, escolher RB3 e RB4, com ação Toogle

View > Watch


Selecionar PCL, TRISA, PORTA, TRISB, PORTB
Para Testar...
Substituir o código deste projeto por:

MOVLW 00
MOVWF PORTA
MOVWF PORTB
LOOP BCF PORTB, 3
BTFSS PORTA, 3
BSF PORTB, 3
BCF PORTB, 4
BTFSS PORTA, 4
BSF PORTB, 4
GOTO LOOP
END

Criar o ambiente de estímulos para o PORTA, com os pinos 3 e 4, selecionando Toogle


para ação. Observar as variáveis PCL, PORTA, PORTB e W.

Você também pode gostar