Técnica Programação Assembler - PIC - Microchip

Técnica Programação Assembler - PIC - Microchip

(Parte 2 de 6)

ROTINA W_TEMP _TEMPORARIO FLAGS CONTADOR_2

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 7/28

- Diretivas

São comandos Assembler que são colocados no código-fonte mas, normalmente, não são transformados em códigos operacionais (opcodes) pelo compilador. Através das diretivas o programador informa como o compilador deve proceder para interpretar as informações escritas na Área de Código e relacionar com as informações do controlador usado através do arquivo de inclusão ([ arquivo ].inc).

Regras

Diretivas

- devem ser posicionados sempre a partir da coluna 1 (junto à lateral esquerda da tela).

EXEMPLO: #INCLUDEP16F628A.INC; ARQUIVO PADRÃO DO CONTROLADOR

#DEFINEL1_ALTAPORTB,1; DEFINE NOME PARA BIT RB1 NO PORTB

Diretivas CBLOCK ENDC ORG

- devem ser posicionados com um espaço (mínimo) da coluna 1, preferencialmente com um espaço do tipo tab. - separar o Endereço da Diretiva utilizando espaços ou tab.

CBLOCK0x20; ENDEREÇO DE INÍCIO DAS VARÁVEIS W_TEMP; REG. TEMPORÁRIO PARA VALOR DE W _TEMPORARIO; REG. TEMPORÁRIO FLAGS; REG. PARA FLAG DE CONTROLE ENDC; FIM DO BLOCO DE VARIÁVEIS

ORG0x00; ENDEREÇO VETOR DE RESET

-Endereços (label)

São nomes criados pelo programador para indicar o destino de desvios condicionais do programa ou início de sub-rotinas.

Regras

- o nome do Endereço não pode ser repetido para destinos diferentes – uma vez criado um

Endereço para um destino de desvio, ele é único e individual para aquele destino. - deve ser iniciado por um carácter alfabético (não deve ser um carácter numérico).

- Endereços compostos devem ser separados sempre por under-line (não usar hífen ( - )ou espaço). - deve ser sempre posicionado na coluna 1 (junto à lateral esquerda da tela) uma única vez - a partir do Endereço inicia-se a sequencia de instruções do desvio. - um Endereço pode ser repetido inúmeras vezes dentro do código-fonte desde que precedido pela instrução GOTO ou CALL.

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 8/28 a) Desvio Condicional INICIO BTFSSBOTAO; VERIFICA O ESTADO DO BIT QUE REPRESENTA BOTAO GOTODESLIGA_LED; BOTAO = 0 > VAI PARA DESLIGA_LED BSFLED; BOTAO = 1 > LIGA LED GOTOINICIO; RETORNA PARA INICIO DESLIGA_LED BCFLED; DESLIGA LED GOTOINICIO; RETORNA PARA INICIO b) Desvio ou Chamada de Sub-Rotina

- Instruções (mnemônicos)

As instruções informam ao processador as operações que devem ser realizadas com os registros e bits dentro do código-fonte. O termo “mnemônico” indica que cada instrução é a abreviatura de um texto indicativo da função da instrução.

Regras

- as instruções devem ser posicionadas a partir da coluna 2 ou mais adiante (interessante que se utilize um espaço TAB). - separar os operadores das instruções com um ou mais espaços ou vários TAB.

┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ └─> Comentário
│ │ │ │ └─> Espaços (3 x TAB)
│ │ │ └─> Operador (constante)
│ │ └─> Espaços (1 x TAB)
│ └─> Instrução
└─> Espaços (1 x TAB)

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 9/28

┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ └─> Comentário
│ │ │ │ └─> Espaços (3 x TAB)
│ │ │ └─> Operador (constante)
│ │ └─> Espaços (1 x TAB)
│ └─> Instrução
└─> Espaços (1 x TAB)

- Operadores

Os Operadores informam a instrução sobre os dados que serão usados e a localização dos registros onde os dados se encontram. Os Operadores podem ser registros, variáveis ou constantes, normalmente identificados por um Nome (existente, no caso dos Registros Especiais ,ou criado, no caso dos Registros de Usuário).

Regras

- operadores devem seguir instruções separados por espaços (utilizar um ou mais espaços TAB).

- operadores múltiplos devem ser separados por vírgulas.

┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ └─> Comentário
│ │ │ │ └─> Espaços (3 x TAB)
│ │ │ └─> Operador (constante numérica)
│ │ └─> Espaços (1 x TAB)
│ └─> Instrução
└─> Espaços (1 x TAB)
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ └─> Comentário
│ │ │ │ └─> Espaços (3 x TAB)
│ │ │ └─> Operador (variável)
│ │ └─> Espaços (1 x TAB)
│ └─> Instrução
└─> Espaços (1 x TAB)
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ └─> Comentário
│ │ │ │ └─> Espaços (3 x TAB)
│ │ └─> Operador (endereço)
│ │ └─> Espaços (1 x TAB)
│ └─> Instrução
└─> Espaços (1 x TAB)

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 10/28

┬ ┬ ┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │ │ └─> Comentário
│ │ │ │ │ │ └─> Espaços (3 x TAB)
│ │ │ │ │ └─> Operador (registro de destino)
│ │ │ │ └─> Vírgula separando Operadores Múltiplos (os espaços entre operadores não existe)
│ │ │ └─> Operador (registro de origem)
│ │ └─> Espaços (1 x TAB)
│ └─> Instrução
└─> Espaços (1 x TAB)

- Comentários

Comentários são textos explicativos da operação de um código-fonte, uma linha de comando ou linhas de comando. Podem ser escritos utilizando quaisquer caracteres inclusive com acentuação (Portugues).

Regras

- comentários devem começar sempre por ponto-e-vírgula (;) – o compilador ignora todo e qualquer carácter após o ponto-e-vírgula (;) até o fim da linha. - comentários que continuam na linha seguinte devem ser precedidos, também, por ponto-evírgula (;), mesmo se precedidos por espaços. - podem ser colocados em qualquer posição do texto do código-fonte (separados ou não por um ou mais espaços ou TAB’s, antes ou depois de linhas de instrução).

CBLOCK0x20; ENDEREÇO DE INÍCIO DAS VARÁVEIS W_TEMP; REG. TEMPORÁRIO PARA VALOR DE W _TEMPORARIO; REG. TEMPORÁRIO FLAGS; REG. PARA FLAG DE CONTROLE ENDC; FIM DO BLOCO DE VARIÁVEIS

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 1/28

ARQUIVO BASICO.asm

Para escrever um código-fonte vamos utilizar o arquivo BÁSICO.asm como referencia. Este arquivo foi desenvolvido para facilitar o início de qualquer desenvolvimento novo, apresentando ao programador uma tela que não esteja em branco. A extensão do nome do arquivo já é .asm, logo, o texto será como um códigofonte válido.

O texto apresenta uma sequencia de atividades através de capítulos indicando o quê o programador deve fazer durante a criação do código-fonte. Os capítulos podem ser excluídos (quando não usados), ou novos podem ser acrescentados (de acordo com a necessidade).

Algumas sequencias de instruções e Nomes de variáveis de uso geral já se encontram listadas no texto. São baseados na experiencia de uso e recomendações do fabricante logo, facilitam ao programador lembrar dos detalhes necessários antes de encontrar dificuldades durante simulação. As instruções e Nomes não utilizados podem ser descartados.

Recomenda-se que, antes de escrever o código-fonte, o programador desenvolva detalhamente a sequencia lógica de funcionamento do projeto em um fluxograma.

Inicialmente o texto BÁSICO.asm será apresentado sem comentários no mesmo formato encontrado no arquivo quando aberto pelo MPLAB – Microchip.

;PIMIL – PICARETAGENS MIL LTDA- SISTEMAS DE AUTOMAÇÃO
; PROJETO:
; CLIENTE:
; NOME ARQUIVO:
; INÍCIO0/0/0VERSÃO..... 0.0RESPONSÁVEL.....
; INÍCIO0/0/0VERSÃO..... 0.0RESPONSÁVEL.....
; INÍCIO0/0/0VERSÃO..... 0.0RESPONSÁVEL.....
; INÍCIO0/0/0VERSÃO..... 0.0RESPONSÁVEL.....

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 12/28

#INCLUDE<P16F628A.INC>; ARQUIVO PADRÃO DO CONTROLADOR

__CONFIG B’10000101001000’; 3F50h – REGISTRO DE CONFIGURAÇÃO

; BIT CÓDIGO FUNÇÃO VALOR ; 13 CP Code Protection 1 Desligado

; 12 Não implementado 0

; 10 Não implementado 0

;8Não implementado0

(Parte 2 de 6)

Comentários