Você está na página 1de 28

PROGRAMAO ASSEMBLER PIC - Microchip

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

PROGRAMAO ASSEMBLER
s vezes, as coisas que nos so mais importantes permanecem desconhecidas, escondidas por trs da sua familiaridade. Ldwig Wittgenstein, filsofo A arte de criar um programa ou algoritmo para controlar alguma coisa envolve muito mais que o conhecimento de uma linguagem de programao com suas instrues e recursos. Envolve o conhecimento do que deseja controlar. Como opera, funciona, responde, envia e recebe informaes. A maioria dos problemas no envolve exclusivamente informaes digitais, mas informaes analgicas que devem ser manipuladas para atingir valores que podem ser lidos pelo sistema de controle. Envolve, ainda, a compreenso destes valores e o que representam para o sistema controlado. Pior, o programador deve ter conhecimento dos valores representados para transform-los em valores digitais e interpret-los adequadamente para que os sinais de controle enviados de retorno para o sistema tenham o correto desempenho. Em suma, o programador no deve e no pode ser um simples organizador de instrues, mas um profundo conhecedor do processo para que o programa ou algoritmo desenvolvido seja o menor e o mais eficiente possvel. Assim como diz a frase do filsofo, o programador deve pensar o impensvel, ver o invisvel, imaginar o inimaginvel para produzir uma obra de arte.

INTRODUO
Assembler uma linguagem de programao usada para desenvolver o cdigo-fonte para uma determinada aplicao que utilize microcontroladores. uma linguagem com cdigos e mnemnicos (baixo nvel) que permitem o controle do processamento no nvel de um bit de um registro portanto, aproxima o usurio da manipulao da informao dentro do ncleo de processamento e das memrias de programa e dados individualmente. Ainda assim, o Assembler uma linguagem para compreenso humana e no da mquina. A mquina s compreende informaes na forma binria, que de compreenso impossvel pelo humano. Logo, deve existir um elemento tradutor da linguagem Assembler (humana) para a linguagem de mquina (binria). O tradutor um programa residente elaborado pelo fabricante do dispositivo microcontrolador (compilador) que reconhece os comandos e mnemnicos da linguagem Assembler (que normalmente exclusiva para cada fabricante) um arquivo code.asm - e converte em linguagem de mquina um arquivo code.hex que ser gravado na memria de programa do microcontrolador atravs de um dispositivo gravador adequado. A fig.1 mostra, esquemticamente, o processo:

Fig. 1 Processo de formao de cdigo-fonte e gravao no MCU

CDIGO-FONTE (.asm)
Os programas usados para criar um cdigo-fonte so, essencialmente, editores de texto. Enquanto o cdigo est sendo escrito, todas as facilidades encontradas nos editores de texto esto presentes. O cdigo s ser transformado em um arquivo executvel aps a compilao bem sucedida do cdigo-fonte. Mesmo aps a compilao, o que apresentado para o programador na tela continua sendo um texto. Lembre-se que o arquivo executvel (aquele que gravado na memria de programa do controlador)
Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 2/28

ilegvel para ns humanos. Portanto, escrever o cdigo-fonte de uma aplicao um exerccio de apresentao de texto. Para facilitar o trabalho do programador, os programas para edio de cdigo-fonte trazem uma srie de facilidades automticas tais como colorir o texto de acordo com a funo de cada palavra, mas no organiza esse texto na tela. Isto funo do programador (trabalho braal). Um cdigo-fonte bem elaborado (no aspecto visual, porque no aspecto lgico outro assunto) tem apresentao tal que facilite a leitura, compreenso do funcionamento, correo (quando necessrio) e evoluo por qualquer outro programador, ou pelo seu criador (um ano depois).

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

APRESENTAO
A apresentao utilizada do cdigo-fonte ser aquela mostrada no arquivo BSICO.asm, desenvolvido a partir de aplicaes prticas e facilita as explicaes e informaes de como utilizar as diretivas e instrues do microcontrolador bem como a maneira de escrever de tal forma que o compilador seja capaz de interpretar e produzir o arquivo executvel sem erros. A formatao do texto do cdigo-fonte foi organizada para permitir o fcil sequenciamento do procedimento de programao utilizando, bsicamente, tres grandes captulos: 1- rea de Identificao Nesta rea so colocadas as informaes que identificam o cdigo-fonte.A fig.2 mostra parte da rea de Identificao do arquivo BSICO.asm:

Fig. 2 Trecho da rea de Identificao no Cdigo-Fonte

claro que a fig.2 mostra apenas uma sugesto, visto que o tipo de informao constante na rea de Identificao depende exclusivamente dos objetivos do programador.

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

2- rea de Diretivas Nesta rea o programador coloca as instrues que orientam o compilador na formao do arquivo executvel. A fig.3 mostra parte da rea de Diretivas do arquivo BSICO.asm:

Fig. 3 Trecho da rea de Diretivas no Cdigo-Fonte

A quantidade de diretivas depende do nmero de variveis envolvidas no processo, quantidade de constantes, nmero de entradas e sadas empregadas pelo controlador etc..

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

3- rea de Cdigo Nesta rea escrito o programa efetivo que ser gravado na memria do controlador. O compilador monta o arquivo executvel com as instrues desta re a partir das diretivas dadas na rea de Diretivas. A fig.4 mostra parte da rea de Cdigo do arquivo BSICO.asm:

Fig. 4 Trecho da rea de Cdigo no Cdigo-Fonte

A extenso da rea de Cdigo dependente apenas da complexidade do sistema externo a ser controlado, podendo possuir tabelas de valores e caracteres, sub-rotinas, interrupes, clculos matemticos etc..

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

REGRAS BSICAS
Para escrever o cdigo-fonte algumas regras bsicas devem ser observadas. Como o cdigo-fonte um editor de texto, a formatao do texto pode seguir algumas regras simples comuns a todo o cdigo-fonte: no se usa acentuao do Portugues (acentos, til, cedilha etc.) lembre-se que a lngua de origem do Assembler o Ingles que no tem nenhum tipo de acentuao. para evitar possveis problemas de identificao do tamanhodo caixa da letra, utilizar sempre letras maisculas (caixa alta) para qualquer texto no cdigo-fonte o processador tem cdigos diferentes para identificar a mesma letra quando maiscula (caixa alta) ou minscula (caixa baixa), o que pode causar erro de compilao e este erro no identificado como tamanho do caixa da letra, mas como Nome (label) inexistente.

Nas figuras 2, 3 e 4 podemos ver como a apresentao do texto do cdigo-fonte atendendo a estas regras bsicas - trabalho braal feito pelo programador. No entanto, essa preocupao facilita a leitura e interpretao do cdigo-fonte pelo programador a qualquer tempo. Para escrever na linguagem de cdigo-fonte utilizamos os seguintes elementos: Nomes (labels) So criados e utilizados para identificar: Endereos Variveis Constantes Registros Bits Os elementos especiais de um controlador (Registros de Funo Especial e seus respectivos Bits) so identificados por Nomes fornecidos pelo fabricante. Normalmente so mnemnicos ou abreviaturas da funo deste elemento na operao do controlador. Os elementos de uso geral (Registros e Bits) so identificados por Nomes criados pelo programador e que, preferencialmente, devem ser relacionados funo proposta de cada um deles. Os Nomes empregados no cdigo-fonte no so interpretados pelo compilador so apenas para interpretao humana durante a compilao sero substitudos pelos endereos fsicos das memrias (registros, bits e endereos). Regras - um Nome no pode ser repetido para elementos diferentes uma vez criado um Nome, ele nico e individual para aquele cdigo-fonte. - deve ser iniciado por um carcter alfabtico ou under-line (no deve ser um carcter numrico ou dois . under-line). - pode ser formado por letras e nmeros desde que o primeiro carcter no seja numrico. - nomes compostos devem ser separados sempre por under-line (no usar hfen ( - )ou espao). - no deve conter smbolos grficos ou gramaticais. EXEMPLO:
ROTINA W_TEMP _TEMPORARIO FLAGS CONTADOR_2
Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 7/28

Diretivas So comandos Assembler que so colocados no cdigo-fonte mas, normalmente, no so transformados em cdigos operacionais (opcodes) pelo compilador. Atravs das diretivas o programador informa como o compilador deve proceder para interpretar as informaes escritas na rea de Cdigo e relacionar com as informaes do controlador usado atravs do arquivo de incluso ([ arquivo ].inc). Regras Diretivas
#INCLUDE #DEFINE

- devem ser posicionados sempre a partir da coluna 1 (junto lateral esquerda da tela). EXEMPLO:
#INCLUDE #DEFINE P16F628A.INC L1_ALTA PORTB,1 ; ARQUIVO PADRO DO CONTROLADOR ; DEFINE NOME PARA BIT RB1 NO PORTB

Diretivas
CBLOCK ENDC ORG

- devem ser posicionados com um espao (mnimo) da coluna 1, preferencialmente com um espao do tipo tab. - separar o Endereo da Diretiva utilizando espaos ou tab. EXEMPLO:
CBLOCK 0x20 W_TEMP _TEMPORARIO FLAGS ENDC ; ENDEREO DE INCIO DAS VARVEIS ; REG. TEMPORRIO PARA VALOR DE W ; REG. TEMPORRIO ; REG. PARA FLAG DE CONTROLE ; FIM DO BLOCO DE VARIVEIS

ORG

0x00

; ENDEREO VETOR DE RESET

Endereos (label) So nomes criados pelo programador para indicar o destino de desvios condicionais do programa ou incio de sub-rotinas. Regras - o nome do Endereo no pode ser repetido para destinos diferentes uma vez criado um Endereo para um destino de desvio, ele nico e individual para aquele destino. - deve ser iniciado por um carcter alfabtico (no deve ser um carcter numrico). - Endereos compostos devem ser separados sempre por under-line (no usar hfen ( - )ou espao). - deve ser sempre posicionado na coluna 1 (junto lateral esquerda da tela) uma nica vez a partir do Endereo inicia-se a sequencia de instrues do desvio. - um Endereo pode ser repetido inmeras vezes dentro do cdigo-fonte desde que precedido pela instruo GOTO ou CALL.

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

EXEMPLO: a) Desvio Condicional


INICIO BTFSS GOTO BSF GOTO DESLIGA_LED BCF GOTO BOTAO DESLIGA_LED LED INICIO LED INICIO ; VERIFICA O ESTADO DO BIT QUE REPRESENTA BOTAO ; BOTAO = 0 > VAI PARA DESLIGA_LED ; BOTAO = 1 > LIGA LED ; RETORNA PARA INICIO ; DESLIGA LED ; RETORNA PARA INICIO

b) Desvio ou Chamada de Sub-Rotina


CALL SUB_ROTINA RETURN SUB_ROTINA ; DESVIA PARA SUB-ROTINA ; SEQUENCIA DE INSTRUES DE EXECUO ; NORMAL DO PROGRAMA

; SEQUENCIA DE INSTRUES DE EXECUO ; DA SUB-ROTINA ; SADA DA SUB-ROTINA

Instrues (mnemnicos) As instrues informam ao processador as operaes que devem ser realizadas com os registros e bits dentro do cdigo-fonte. O termo mnemnico indica que cada instruo a abreviatura de um texto indicativo da funo da instruo. Regras - as instrues devem ser posicionadas a partir da coluna 2 ou mais adiante (interessante que se utilize um espao TAB). - separar os operadores das instrues com um ou mais espaos ou vrios TAB. EXEMPLO:
MOVLW CT_TEMPO ; COLOCA CONSTANTE CT_TEMPO NO REG. W

> Comentrio > Espaos (3 x TAB) > Operador (constante) > Espaos (1 x TAB) > Instruo > Espaos (1 x TAB)

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

MOVWF

TEMPO

; COLOCA O VALOR DE W NO REG. TEMPO

> Comentrio > Espaos (3 x TAB) > Operador (constante) > Espaos (1 x TAB) > Instruo > Espaos (1 x TAB) Operadores Os Operadores informam a instruo sobre os dados que sero usados e a localizao dos registros onde os dados se encontram. Os Operadores podem ser registros, variveis ou constantes, normalmente identificados por um Nome (existente, no caso dos Registros Especiais ,ou criado, no caso dos Registros de Usurio). Regras - operadores devem seguir instrues separados por espaos (utilizar um ou mais espaos
TAB).

- operadores mltiplos devem ser separados por vrgulas. EXEMPLO:


MOVLW CT_TEMPO ; COLOCA CONSTANTE CT_TEMPO NO REG. W

> Comentrio > Espaos (3 x TAB) > Operador (constante numrica) > Espaos (1 x TAB) > Instruo > Espaos (1 x TAB)
MOVWF TEMPO ; COLOCA O VALOR DE W NO REG. TEMPO

> Comentrio > Espaos (3 x TAB) > Operador (varivel) > Espaos (1 x TAB) > Instruo > Espaos (1 x TAB)
GOTO SET_UP ; DESVIA PARA ENDEREO SET_UP

> Comentrio > Espaos (3 x TAB) > Operador (endereo) > Espaos (1 x TAB) > Instruo > Espaos (1 x TAB)

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

SWAPF

W_TEMP , F

; TROCA NIB_LO C/ NI_HI EM W_TEMP COLOCA EM ; W_TEMP

> Comentrio > Espaos (3 x TAB) > Operador (registro de destino) > Vrgula separando Operadores Mltiplos (os espaos entre operadores no existe) > Operador (registro de origem) > Espaos (1 x TAB) > Instruo > Espaos (1 x TAB) Comentrios Comentrios so textos explicativos da operao de um cdigo-fonte, uma linha de comando ou linhas de comando. Podem ser escritos utilizando quaisquer caracteres inclusive com acentuao (Portugues). Regras - comentrios devem comear sempre por ponto-e-vrgula (;) o compilador ignora todo e qualquer carcter aps o ponto-e-vrgula (;) at o fim da linha. - comentrios que continuam na linha seguinte devem ser precedidos, tambm, por ponto-evrgula (;), mesmo se precedidos por espaos. - podem ser colocados em qualquer posio do texto do cdigo-fonte (separados ou no por um ou mais espaos ou TABs, antes ou depois de linhas de instruo). EXEMPLO:
; ----------------------------------------------------------------------------------------------------------------------------------------------------------; DEFINIO DE VARIVEIS CBLOCK 0x20 W_TEMP _TEMPORARIO FLAGS ENDC ; ENDEREO DE INCIO DAS VARVEIS ; REG. TEMPORRIO PARA VALOR DE W ; REG. TEMPORRIO ; REG. PARA FLAG DE CONTROLE ; FIM DO BLOCO DE VARIVEIS

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

ARQUIVO BASICO.asm
Para escrever um cdigo-fonte vamos utilizar o arquivo BSICO.asm como referencia. Este arquivo foi desenvolvido para facilitar o incio de qualquer desenvolvimento novo, apresentando ao programador uma tela que no esteja em branco. A extenso do nome do arquivo j .asm, logo, o texto ser como um cdigofonte vlido. O texto apresenta uma sequencia de atividades atravs de captulos indicando o qu o programador deve fazer durante a criao do cdigo-fonte. Os captulos podem ser excludos (quando no usados), ou novos podem ser acrescentados (de acordo com a necessidade). Algumas sequencias de instrues e Nomes de variveis de uso geral j se encontram listadas no texto. So baseados na experiencia de uso e recomendaes do fabricante logo, facilitam ao programador lembrar dos detalhes necessrios antes de encontrar dificuldades durante simulao. As instrues e Nomes no utilizados podem ser descartados. Recomenda-se que, antes de escrever o cdigo-fonte, o programador desenvolva detalhamente a sequencia lgica de funcionamento do projeto em um fluxograma. Inicialmente o texto BSICO.asm ser apresentado sem comentrios no mesmo formato encontrado no arquivo quando aberto pelo MPLAB Microchip.
; ----------------------------------------------------------------------------------------------------------------------------------------------------------; REA DE IDENTIFICAO ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ; PIMIL PICARETAGENS MIL LTDA. - SISTEMAS DE AUTOMAO ; ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; IDENTIFICAO DE PROJETO ; ; PROJETO .....................: ; CLIENTE ......................: ; NOME ARQUIVO .......: ; ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; DATAS E VERSES
;

; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... ; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... ; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... ; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... ; ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; DESCRIO OPERACIONAL ; ; ; ; ; ; ; ; ; ; ; ; ;

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

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; REA DE DIRETIVAS ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ARQUIVO DE DEFINIES #INCLUDE <P16F628A.INC> ; ARQUIVO PADRO DO CONTROLADOR

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; CONFIGURAO DO CONTROLADOR __CONFIG B10000101001000 ; ; ; ; ; ; ; ; ; ; ; ; BIT 13 12 11 10 8 7 6 5 3 2 4,1,0 CDIGO CP ; 3F50h REGISTRO DE CONFIGURAO FUNO Code Protection No implementado No implementado No implementado No implementado Low Voltage Programming Brown-out Reset Enable RA5/Master Clear Enable Power-up Time Enable Watchdog Timer Enable Oscillator Selection VALOR 1 Desligado 0 0 0 0 1 Desligado 0 Ligado 0 RA5 entrada digital 0 Ligado 0 Desligado 100 Oscilador Interno

LVP BOREN MCLRE PWTERN WDTEN FOSC2:FOSC0

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF BSF STATUS,RP0 STATUS,RP0 ; ATIVA BANCO DE MEMRIA 0 (ZERO) ; ATIVA BANCO DE MEMRIA 1 (UM)

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; VARIVEIS CBLOCK 0X20 ; ENDEREO INICIAL MEMRIA USO GERAL ; REGISTRO TEMPORRIO PARA W ; REGISTRO TEMPORRIO PARA STATUS ; REGISTRO PARA DESVIOS CONDICIONAIS ; REGISTRO CONTAGEM CONT_1 ; FIM BLOCO MEMRIA USO GERAL

W_TEMP STATUS_TEMP FLAG CONT_1 ENDC

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; FLAG INTERNO #DEFINE F_CONT_1 FLAG,1 ; DESVIO CONT_1 NO REG. FLAG, BIT 1

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; CONSTANTES CT_CONT_1 EQU .250 ; CONSTANTE DE INCO DO CONT_1

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ENTRADAS #DEFINE B1 PORTA,1 ; BOTAO B1 LIGADO AO PINO RA1

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; SADAS #DEFINE L1 PORTA,6 ; LED L1 LIGADO AO PINO RA6

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

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; REA DE CDIGO ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; VETOR DE RESET ORG GOTO 0X00 SET_UP ; ENDEREO INICIAL DO CDIGO ; VAI PARA INCIO DO SET_UP CONTROLADOR

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; VETOR DE INTERRUPO ORG MOVWF SWAPF MOVWF GOTO 0X04 W_TEMP STATUS,W STATUS_TEMP SAI_INT ; ENDEREO INICIAL DA INTERRUPO ; SALVA W EM W_TEMP ; TROCA NIB_HI POR NIB_LO EM STATUS E GRAVA ; EM W ; SALVA STATUS EM STATUS_TEMP ; VAI PARA FIM DA INTERRUPO

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; TRATAMENTO DAS INTERRUPES ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; FIM DA INTERRUPO SAI_INT SWAPF MOVWF SWAPF SWAPF RETFIE STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W ; TROCA NIB_HI POR NIB_LO EM STATUS_TEMP E ; GRAVA EM W ; RECUPERA STATUS ; TROCA NIB_HI POR NIB_LO EM W_TEMP E ; GRAVA EM W_TEMP ; TROCA NIB_HI POR NIB_LO EM W_TEMP E ; RECUPERA EM W ; RETORNA DA INTERRUPO

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; INCIO DO SET_UP DO CONTROLADOR SET_UP BANK1 MOVLW MOVWF B'10000011' OPTION_REG ; PGINA DE MEMRIA 1 ; RESISTORES PULL-UP DESABILITADOS ; TRANSIO RB0/INT NO UTILIZADA ; INCREMENTO TMR0 INTERNO (CM) ; TRANSIO T0CK1 NO UTILIZADA ; PRE SCALER SELECIONADO PARA TMR0 ; DIVISO 1:16 NO PRE SCALER ; INTERRUPES NO HABILITADAS ; RA2:3 ENTRADA, DEMAIS SADAS ; TODOS OS BITS SADAS ; CHAMA VALOR EXISTENTE NO ENDEREO ; CALIBRADOR DO OSCILADOR LOCAL ; PGINA DE MEMRIA 0 B'00000111' CMCON ; DESLIGA OS COMPARADORES ANALGICOS E ; HABILITA OS PINOS DO PORTA PARA I/O DIGITAL
Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 14/28

MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF CALL MOVWF BANK0 MOVLW MOVWF

B'00000000' INTCON B'00001100' TRISA B'00000000' TRISB 3FFh OSCCAL

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; INCIO DAS VARIVEIS CLRF CLRF PORTA PORTB ; COLOCA ZERO NO REGISTRO PORTA ; COLOCA ZERO NO REGISTRO PORTB

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ROTINA PRINCIPAL ROT_PRINC ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ROTINAS SECUNDRIAS ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; SUB-ROTINAS ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; FIM DO CDIGO END ; FIM DO CDIGO

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

ARQUIVO BASICO.asm - COMENTADO


1- rea de Identificao Esta rea foi criada para que o projetista possa identificar e descrever o tipo de cdigo-fonte que se encontra no arquivo. Como na abertura do programa a tela apresentada comea exatamente nesta posio, o programador identifica a origem, destino, aplicao, datas etc. que interessam logo de incio. Observar que o texto da rea de Identificao formado por Comentrios todas as linhas so iniciadas por ponto-e-vrgula (;) logo, como so ignoradas pelo compilador, pode-se usar a acentuao normal da lngua portuguesa. Os comentrios expressos em cada captulo procuram orientar o programador para realizar o cdigo-fonte da melhor maneira possvel.
; ----------------------------------------------------------------------------------------------------------------------------------------------------------; REA DE IDENTIFICAO ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ; PIMIL PICARETAGENS MIL LTDA. - SISTEMAS DE AUTOMAO ; ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; IDENTIFICAO DE PROJETO ; ; PROJETO .....................: [nome de identificao ou referencia do projeto] ; CLIENTE ......................: [nome do cliente ou mercado ou produto de aplicao] ; NOME ARQUIVO .......: [nome de localizao do arquivo no servidor principal ou outro meio de arquivo[ ; ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; DATAS E VERSES ; ; [cada linha pode conter informaes desde o princpio do projeto, modificaes e descrio sucinta de cada modificao realizada]
;

; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... [nome ou sigla do programdor] ; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... ; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... ; INCIO.... 00/00/0000 VERSO..... 00.00 RESPONSVEL..... ; ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; DESCRIO OPERACIONAL ;
[Descrever a operao do cdigo-fonte com informaes suficientes para a correta compreenso do funcionamento. Deve existir documentao com diagramas eltricos detalhados, lista de materiais e manual de instrues/operao/manuteno em outros tipos de documentos que podem e devem ser referenciados neste captulo. Procurre no se apoiar em documentao exclusivamente eletronica.]

; ; ; ; ; ; ; -----------------------------------------------------------------------------------------------------------------------------------------------------------

2- rea de Diretivas Nesta rea o programador define todos os parametros de uso do controlador, identificando o modelo de controlador, a configurao, os Nomes dos Registros e Bits de Uso Geral, a correlao existente entre os Nomes dos dispositivos de Entrada/Sada e os Registros Especiais.

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

Essas informaes sero utilizadas pelo compilador para transformar o arquivo do cdigo-fonte (code.asm) em um arquivo na linguagem de mquina (code.hex). O compilador no interpreta a forma de captulos agrupando as diretivas por funo ou destinao. Durante a execuo da compilao do cdigo-fonte, apenas as diretivas so buscadas e interpretadas. A sequencia em que esto escritas e a distribuio organizada ignorada sua utilidade reside apenas na facilidade de leitura e interpretao pelo programador. O Anexo 2 mostra uma comparao da rea de Diretivas comentada e simples onde se pode ver a diferena de tamanho de texto com a compreenso deste mesmo texto. Outros captulos, alm dos apresentados, podem ser acrescentados para melhorar o detalhamento das diretivas bem como podem ser excludos quando no utilizados no projeto.
; ----------------------------------------------------------------------------------------------------------------------------------------------------------; REA DE DIRETIVAS ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ARQUIVO DE DEFINIES
[Neste captulo o programador deve definir os arquivos de incluso com o modelo do microcontrolador usado e as macros com sequencias de instrues j estabelecidas sub rotinas.]

#INCLUDE

<P16F628A.INC>

; ARQUIVO PADRO DO CONTROLADOR

> Comentrio > Arquivo de Incluso do microcontrolador selecionado > Diretiva


; ----------------------------------------------------------------------------------------------------------------------------------------------------------; CONFIGURAO DO CONTROLADOR
[Neste captulo coloca-se a configurao que o controlador vai operar. O acesso ao registro de configurao s possvel durante a gravao ds memria de programa. As opes de configurao dependem do modelo de controlador e devem ser estabelecidas com as informaes da folha de dados do modelo escolhido no arquivo de incluso.]

__CONFIG B10000101001000

; 3F50h REGISTRO DE CONFIGURAO

> Comentrio > Valor numrico do Registro de Configurao que representa as opes escolhidas (ver Nota) > Instruo MPASM
[Nota: o valor numrico colocado aps a instruo CONFIG pode assumir qualquer representao, isto , decimal ou binria ou hexadecimal. Para melhor compreenso das opes determinadas pelo programador, recomenda-se a utilizao do formato binrio, compatvel com a pgina da folha de dados do componente O Anexo 1 mostra a cpia da folha do datasheet que contm as informaes de aplicao das opes de uso do controlador 16F628A..] [Descrever as opes do registro CONFIG torna mais fcil interpretar as escolhas de funcionamento do componente. Para cada modelo de controlador existe um registro especfico, que o programador deve buscar na folha de dados.]]

; ; ; ; ; ; ; ; ; ; ; ;

BIT 13 12 11 10 8 7 6 5 3 2 4,1,0

CDIGO CP

LVP BOREN MCLRE PWTERN WDTEN FOSC2:FOSC0

FUNO Code Protection No implementado No implementado No implementado No implementado Low Voltage Programming Brown-out Reset Enable RA5/Master Clear Enable Power-up Time Enable Watchdog Timer Enable Oscillator Selection

VALOR 1 Desligado 0 0 0 0 1 Desligado 0 Ligado 0 RA5 como entrada digital 0 Ligado 0 Desligado 100 Oscilador Interno sem sada de clock

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

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; PGINA DE MEMRIA


[O processo de substituio de uma linha de instruo por um Nome pode ser interessante quando a linha se torna comum e repetitiva dentro do cdigo-fonte. Observar que este procedimento s possvel para a substituio de uma nica linha de instruo. Para a substituio de duas ou mais linhas de instruo (sequencia) deve-se criar uma Macro.]

#DEFINE #DEFINE

BANK0 BANK1

BCF BSF

STATUS,RP0 STATUS,RP0

; ATIVA BANCO DE MEMRIA 0 (ZERO) ; ATIVA BANCO DE MEMRIA 1 (UM)

> Comentrio > Nome do bit controlado pela Instruo > Nome do registro onde est o bit controlado pela Instruo > Instruo substituda pelo Nome > Nome que substitui a linha de instruo > Diretiva de Definio
[No exemplo, utilizamos o nome BANK1 em substituio instruo BCF STATUS,RP0 (colocar o valor zero no bit POR do registro STATUS para ativar o Banco 1 da memria RAM). No cdigo-fonte, o programador escreve este nome sempre que for necessrio ativar o Banco 1 de memria.]

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; VARIVEIS
[Neste captuloo programador declara todas as variveis (registros) que vai empregar no cdigo-fonte, com exceo dos Registros Especiais j existentes. A diretiva CBLOCK pode ser empregada diversas vezes no cdigo-fonte para alocar variveis em diversas posies de memria. O programador deve verificar no datasheet do componente as reas disponveis para uso geral nos diversos bancos de memria, bem como os endereos disponveis, e distribuir as variveis adequadamente. O controlador no muda de banco de memria automticamente funo a ser determinada pelo programador (ver Paginao de Memria).] [A diretiva CBLOCK orienta o compilador no relacionamento entre o Nome da varivel e o endereo de memria de uso geral onde ser colocado.]

CBLOCK

0X20

; ENDEREO INICIAL MEMRIA USO GERAL

> Comentrio > Endereo de memria de uso geral a partir do qual sero includas as variveis > Diretiva indicando incio das varveis a partir do endereo de memria indicado
W_TEMP STATUS_TEMP FLAG CONT_1 ; REGISTRO TEMPORRIO PARA W ; REGISTRO TEMPORRIO PARA STATUS ; REGISTRO PARA DESVIOS CONDICIONAIS ; REGISTRO CONTAGEM CONT_1

> Comentrio identificando funo da varivel > Lista de Nomes das variveis (ateno ao nmero de registros disponveis a partir do endereo indicado)
[Os Nomes das variveis W_TEMP e STATUS_TEMP, bem como o seu uso, so recomendao do fabricante para cdigos-fonte que utilizam o recurso da Interrupo. O programador pode alterar ou no esses nomes mas deve atender s recomendaes do fabricante no uso.]

ENDC

; FIM BLOCO MEMRIA USO GERAL

> Comentrio identificando funo da varivel > Diretiva indicando que terminou a alocao de variveis na memria
; ----------------------------------------------------------------------------------------------------------------------------------------------------------; FLAG INTERNO
[Este captulo destinado descrio dos desvios condicionais flags que o sistema controlado necessita para operar A necessidade de desvios condicionais determinada pelo programador. O Nome de cada flag deve ser tal que indique a sua funo no cdigo-fonte para facilitar a compreenso do funcionamento.]

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

#DEFINE

F_CONT_1

FLAG,1

; DESVIO CONT_1 NO REG. FLAG, BIT 1

> Comentrio > Posio do bit associado ao Nome > Nome do registro que contm o bit associado ao Nome > Nome associado ao bit 1 do registro FLAG > Diretiva de Definio
[Cada flag alocado em um bit de um registro Nome recomendado FLAG devidamente declarado no captulo das Variveis dentro da diretiva CBLOCK.. No exemplo, o Nome F_CONT_1 est sendo associado ao bit 1 do registro FLAG. O programador usa o Nome F_CONT_1 no cdigo-fonte.]

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; CONSTANTES
[Constantes so valores numricos que o cdigo-fonte emprega para iniciar contadores, temporizadores, realizar comparaes lgicas, acionar sadas etc..Neste captulo o programador relaciona um Nome a um valor numrico que pode ser representado na forma decimal, binria ou hexadecimal, ou ainda na forma de uma expresso aritmtica.]

CT_CONT_1

EQU

.250

; CONSTANTE DE INCO DO CONT_1

> Comentrio > Valor numrico da constante associado ao Nome CT_CONT_1 > Diretiva de Igualdade (Equal) > Nome da Constante Numrica
[A utilizao de um Nome relacionado a uma constante numrica traz vantagens para o programador (no para o cdigo-fonte). A lista de constantes est localizada em uma rea especfica do texto do cdigo-fonte captulo Constantes onde so especificadas as aplicaes destas constantes. No cdigo-fonte, o programador vai utilizar sempre o Nome relacionado constante e no o valor numrico. Se houver necessidade de se modificar o valor numrico para adequar a operao do cdigo-fonte, o programador faz a alterao no captulo Constantes. O compilador se encarrega de fazer as alteraes no restante do cdigo-fonte.]

;-----------------------------------------------------------------------------------------------------------------------------------------------------------; ENTRADAS
[Neste captulo so relacionados os Nomes associados aos dispositivos externos de controle que enviam sinais ao controlador entradas (input) onde cada entrada corresponde a um bit de um registro PORT.]

#DEFINE

B1

PORTA,1

; BOTAO B1 LIGADO AO PINO RA1

> Comentrio > Posio do bit associado ao Nome > Nome do registro que contm o bit associado ao Nome > Nome associado ao bit 1 do registro PORTA > Diretiva de Definio
[Cada dispositivo de entrada alocado em um bit de um registro PORT. Ao se associar um Nome a um dispositivo externo, importante que seja o mesmo Nome empregado tanto no diagrama de circuito quanto no fluxograma. No exemplo, o Nome B1 est sendo associado ao bit 1 do registro PORTA. O programador usa o Nome B1 no cdigo-fonte.]

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; SADAS
[Neste captulo so relacionados os Nomes associados aos dispositivos externos que so comandados pelo controlador sidas (output) onde cada sada corresponde a um bit de um registro PORT.]

#DEFINE

L1

PORTA,6

; LED L1 LIGADO AO PINO RA6

> Comentrio > Posio do bit associado ao Nome > Nome do registro que contm o bit associado ao Nome > Nome associado ao bit 6 do registro PORTA > Diretiva de Definio
[Cada dispositivo de sada alocado em um bit de um registro PORT. Ao se associar um Nome a um dispositivo externo, importante que seja o mesmo Nome empregado tanto no diagrama de circuito quanto no fluxograma. No exemplo, o Nome L1 est sendo associado ao bit 6 do registro PORTA. O programador usa o Nome L1 no cdigo-fonte.]
Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 19/28

3- rea de Cdigo Nesta rea o programador escrever as instrues que devem controlar os dispositivos externos de acordo com o projeto eletro-eletronico de automao.
; ----------------------------------------------------------------------------------------------------------------------------------------------------------; REA DE CDIGO ; ----------------------------------------------------------------------------------------------------------------------------------------------------------; VETOR DE RESET
[O endereo 0X00 relativo ao Vetor de Reset. Quando o controlador ligado fonte ou quando ocorre um reset interno (por qualquer motivo) o programa inicia sempre neste endereo. O programador deve verificar no datasheet do controlador a disponibilidade de endereos livres para colocao de instrues antes da ocorrencia de outro Vetor automtico.] [A diretiva ORG avisa o compilador que o texto seguinte refere-se s instrues que devero ser gravadas na Memria de Programa a partir do endereo indicado.}

ORG

0X00

; ENDEREO INICIAL DO CDIGO

> Comentrio > Endereo de memria do Vetor de Reset > Diretiva indicando incio das instrues a partir do endereo da Memria de Programa indicado
GOTO SET_UP ; VAI PARA INCIO DO SET_UP CONTROLADOR

> Comentrio > Endereo de desvio para a rotina de SET_UP do controlador > Instruo de Desvio Incondicional
[Normalmente existem 4 posies na Memria de Programa antes do Vetor de Interrupo (endereos 0x00 a 0x03) que podem ser ocupados com instrues. No geral, costuma-se fazer um desvio para um endereo de memria onde est escrito o cdigo-fonte relativo ao SET_UP do controlador, que ocupa mais que 4 posies de memria. Este espao inicial tambm pode ser utilizado para as instrues de teste das funes de Brown-Out Detect e Power-On Reset.)

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; VETOR DE INTERRUPO


[O endereo 0X04 relativo ao Vetor de Interrupo. Quando interrupes so habilitadas, o programa desviado para este endereo sempre que ocorre uma interrupo. O programador pode iniciar a sequencia de instrues para tratamento das interrupes a partir deste endereo ou fazer um desvio para um endereo da Memria de Programa a partir do qual estar escrito o cdigo-fonte relativo ao tratamento das interrupes.] [O programador deve estar ciente de que o desvio para o Vetor de Interrupo ocorre para qualquer tipo de interrupo, bastando que esteja habilitada (bit relativo habilitao enable com valor 1 (um))]

ORG

0X04

; ENDEREO INICIAL DA INTERRUPO

> Comentrio > Endereo de memria do Vetor de Interrupo > Diretiva indicando incio das Interrupes a partir do endereo da Memria de Programa indicado
[A sequencia de instrues segue a recomendao da Microchip para manter inalterados os valores contidos nos registros STATUS e W quando houver um desvio para Tratamento de Interrupes no caso, Salvar Contexto uma vez que estes dois registros so permanentemente empregandos pela CPU. O objetivo destas instrues salvar os valores contidos nos registros STATUS (em STATUS_TEMP) e W (em W_TEMP) enquanto o programa realiza o atendimento da Interrupo requisitada. Quando o tratamento da interrupo for conpletado, o retorno rotina normal implica que os valores contidos nos dois registros no correspondem aos valores que existiam antes da requisio da interrupo logo, a probabilidade de que o programa apresente solues erradas quase de 100%. O programador deve seguir esta recomendao e, se houver outro registro que seja necessria a preservao do valor contido durante o tratamento da interrupo, deve ser incluso na sequencia de Salvar Contexto. A sequencia Salvar Contexto pode ser considerada como padro em todos os cdigos-fonte realizados.]

MOVWF SWAPF MOVWF

W_TEMP STATUS,W STATUS_TEMP

; SALVA W EM W_TEMP ; TROCA NIB_HI POR NIB_LO EM STATUS E GRAVA ; EM W ; SALVA STATUS EM STATUS_TEMP
Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 20/28

[Aps escrever a sequencia Salvar Contexto, o programador deve verificar qual foi a interrupo requisitada testando os bits referentes aos flags de sinalizao existentes nos registros adequados. Na existencia de um flag habilitado, o programa deve fazer o desvio para a rotina de tratamento da interrupo requisitada. Lembre-se sempre que a CPU no tem um mecanismo de desvio automtico para a interrupo requisitada, apenas para o Vetor de Interrupo.] [Depois de realizar todos os testes nos respectivos flags de sinalizao das interrupes para verificar qual foi requisitada e na possibilidade de nenhum flag habilitado (o desvio para o Vetor de Interrupo pode ter ocorrido devido a um rudo no controlador), o programa deve conter a instruo de desvio para a rotina de Recuperar Contexto SAI_INT]

GOTO

SAI_INT

; VAI PARA FIM DA INTERRUPO

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; TRATAMENTO DAS INTERRUPES


[Neste captulo, o programador deve escrever o cdigo-fonte para o tratamento de cada interrupo habilitada e que tenha um teste de flag com desvio para esta rea. Cada interrupo deve ter seu prprio cdigo-fonte completo e deve terminar sempre com a instruo de desvio para a rotina de Recuperar Contexto SAI_INT]

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; FIM DA INTERRUPO


[A sequencia de instrues segue a recomendao da Microchip para recuperar os valores contidos nos registros STATUS_TEMP e W_TEMP quando houvero retorno do Tratamento de Interrupes no caso, Recuperar Contexto. O objetivo destas instrues recuperar os valores contidos nos registros STATUS_TEMP (em STATUS) e W_TEMP (em W) aps o atendimento da Interrupo requisitada. Quando o tratamento da interrupo for conpletado, o retorno rotina normal implica na necessidade de se recuperar os valores existentes nos registros STATUS e W antes da interrupo. O programador deve seguir esta recomendao e, se houver outro registro que seja necessria a recuperao do valor contido, deve ser incluso na sequencia de Recuperarr Contexto.] [A sequencia Recuperar Contexto pode ser considerada como padro em todos os cdigos-fonte realizados.]

SAI_INT SWAPF MOVWF SWAPF SWAPF

STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W

; TROCA NIB_HI POR NIB_LO EM STATUS_TEMP E ; GRAVA EM W ; RECUPERA STATUS ; TROCA NIB_HI POR NIB_LO EM W_TEMP E ; GRAVA EM W_TEMP ; TROCA NIB_HI POR NIB_LO EM W_TEMP E ; RECUPERA EM W

[A sada do Tratamento das Interrupes s completada com a instruo abaixo. O cdigo-fonte retorna rotina principal aps a execuo da instruo RETFIE.]

RETFIE

; RETORNA DA INTERRUPO

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; INCIO DO SET_UP DO CONTROLADOR


[Este captulo de grande importancia. Aqui o programador deve estabelecer as condies que o controlador vai operar. Consiste em colocar valores (constantes) dentro de deteminados registros especiai para ativar/desativar recursos no controlador. Normalmente, os registros especiais envolvidos neste captulo so: OPTION_REG: resisitores de pull-up, transio do TMR0 e definio do Pre Scaler INTCON: habilitao ou no das interrupes TRIS: identificao de Entrada/Sada utilizda pelo registro PORT CMCON: escolha de aplicao dos Comparadores Analgicos (quando existentes no controlador escolhido) OSCCAL: emprego do valor de calibrao do oscilador interno (quando existente no controlador e habilitado no CONFIG) O programador deve observar a paginao de memria para ter acesso a estes registros.] [O endereo para incio do SET_UP deve ser escrito na forma mostrada. Lembre-se que o nome do endereo dado pelo programador e est direcionado no Vetor de Reset utilizando um desvio incondicional - GOTO.]

SET_UP
[Verificar a pgina de memria onde esto os registros que sero operados ver folha de dados do controlador. No caso de alterao da pgina de memria, utilizar o Nome definido no captulo Paginao de Memria para a ativao da rea correspodente. No exemplo, os registros especiais que sero operados esto localizados no BANK1.]

BANK1

; PGINA DE MEMRIA 1

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

[O direcionemento para a pgina de memria BANK1 permite o acesso aos registros especiais OPTION_REG, INTCON, TRISA e TRISB. O programador dever colocar em cada registro os valores necessrios para que o controlador opere dentro das caractersticas exigidas pelo cdigo-fonte e pela utilizao externa (circuito controlado)]. [A representao das constantes literais neste captulo devem ser no formato binrio para visualizao do estado lgico de cada bit do registro. Nos registros especiais, cada bit tem uma funo operacional no controlador.]

MOVLW MOVWF

B'10000011' OPTION_REG

; RESISTORES PULL-UP DESABILITADOS ; TRANSIO RB0/INT NO UTILIZADA ; INCREMENTO TMR0 INTERNO (CM) ; TRANSIO T0CK1 NO UTILIZADA ; PRE SCALER SELECIONADO PARA TMR0 ; DIVISO 1:16 NO PRE SCALER ; INTERRUPES NO HABILITADAS ; RA2:3 ENTRADA, DEMAIS SADAS ; TODOS OS BITS SADAS

MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF

B'00000000' INTCON B'00001100' TRISA B'00000000' TRISB

[Se no CONFIG foi escolhida a opo de uso do oscilador interno, verificar se o modelo possui um valor de calibrao gravado pelo fabricante no ltimo endereo da memria de programa. Se houver, utilizar a sequencia de instrues para colocar o valor da memria no registro OSCCAL.]

CALL MOVWF

3FFh OSCCAL

; CHAMA VALOR EXISTENTE NO ENDEREO ; CALIBRADOR DO OSCILADOR LOCAL

[Encerradas as operaes nos registros especiais na pgina de memria 1, retornar pgina de memria 0 (zero).]

BANK0

; PGINA DE MEMRIA 0

[O registro CMCON controla a configurao dos comparadoras analgicas do controlador. O fabricante inicia o controlador com os comparadores habilitados por questo de menor consumo do componente. Se o programa elaborado para o controlador no usa os comparadores, para deslig-los e utilizar as entradas analgicas como I/O digitais, carregar a constante B00000111no registro CMCON, que desliga as entradas analgicas dos comparadores.]

MOVLW MOVWF

B'00000111' CMCON

; DESLIGA OS COMPARADORES ANALGICOS E ; HABILITA OS PINOS DO PORTA PARA I/O DIGITAL

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; INCIO DAS VARIVEIS


[Por segurana, o fabricante recomenda que os registros PORT sejam iniciados em valores conhecidos do programador antes de se iniciar a Rotina Principal de comandos. No existe garantia de que os bits destes registros sejam iniciados com valor 0 (zero) na energizao do controlador ou aps um RESET de qualquer natureza. Para evitar acidentes, seguir a recomendao do fabricante. Observar que o comando CLRF utilizado faz com que o registro contenha o valor 0 (zero), isto , todos os bits estaro no nvel lgico baixo. O programador deve ter certeza de que estes valores so adequados para o cdigo-fonte escrito.]

CLRF CLRF

PORTA PORTB

; COLOCA ZERO NO REGISTRO PORTA ; COLOCA ZERO NO REGISTRO PORTB

[Outras variveis que podem ser iniciadas de um determinado valor conhecido pelo programador podem ser includas neste captulo.]

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ROTINA PRINCIPAL


[Neste captulo o programador escreve todas as sequencias de instrues necessrias ao correto funcionamento do projeto. O programdor pode estabelecer a lgica funcional principal neste captulo e direcionar as rotinas secundrias e sub-rotinas para outros captulos. O compilador no considera esta organizao em captulos desde que os endereos e retornos estejam corretamente colocados.]

ROT_PRINC

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

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; ROTINAS SECUNDRIAS


[Os desvios incondicionais ou condicionais existentes na Rotina Principal ou mesmo dentro das Rotinas Secundrias podem ser escritos neste captulo. O programador deve ter o cuidado de estabelecer os Nomes dos endereos de desvio para evitar erros no cdigo-fonte.] [Mesmo dentro das Rotinas Secundrias, o uso de Sub-Rotinas importante. Os Nomes dos endereos de desvio no podem ser repetidos para posies de memrias diferentes.]

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; SUB-ROTINAS
[Escrever sub-rotinas em separado das demais rotinas facilita a interpretao do cdigo-fonte. Este captulo deve conter apenas as sub-rotinas empregadas tanto pela Rotina Principal quanto pelas Rotinas Secundrias.] [Toda a sub-rotina deve comear com um Nome de endereo (que dever ser chamado a partir da instruo CALL), e deve terminar com a instruo RETURN. ]

; ----------------------------------------------------------------------------------------------------------------------------------------------------------; FIM DO CDIGO


[A instruo END indica para o compilador que as sequencias de instrues encerrou. de uso obrigatrio no final do cdigo-fonte.]

END

; FIM DO CDIGO

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

ANEXO 1 REGISTRO DE CONFIGURAO PIC 16F628A


A figura uma cpia da pgina da folha de dados (datasheet) do controlador mostrando o registro de Configurao do dispositivo. Em todos os controladores este registro dispe de 14 bits, e cada bit (ou conjunto de bits) determina o modo de operao do modelo. Como o acesso a esse registro est fora do alcance dos endereos disponveis de memria, a gravao dos valores em cada bit deve ser realizada no momento da gravao da memria de programa. Portanto, o programador deve colocar a diretiva de configurao ( __CONFIG ) na rea de Diretivas do cdigo-fonte.

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

ANEXO 2 COMPARATIVO DE CDIGO-FONTE DETALHADO COM SIMPLES (PARCIAL)

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

-----------------------------------------------------------------------------------------------------------------; REA DE DIRETIVAS; ---------------------------------------------------------------------------------------------------------------------------------------------------------------

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

ONT_1EQU.250 #DEFINEF_CONT_1FLAG,1ENDCCONT_1FLAGSTATUS_TEMPW_TEMPCBLOCK0X20#DEFINEBANK1BSFSTATUS,RP0#DEFINEBANK0BCFSTATUS,RP0__CONFIG B10000101001000#INCLUDE<P16F628A.INC>

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

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

Você também pode gostar