Você está na página 1de 79

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CINCIAS EXATAS E NATURAIS CURSO DE CINCIAS DA COMPUTAO (Bacharelado)

PROTTIPO DE EDITOR FLUXOGRAMTICO COM INTERFACE VISUAL PARA GERAO DE CDIGO PARA O MICROCONTROLADOR PIC16C84 DA MICROCHIP TECHNOLOGY

TRABALHO DE CONCLUSO DE CURSO SUBMETIDO UNIVERSIDADE REGIONAL DE BLUMENAU PARA A OBTENO DOS CRDITOS NA DISCIPLINA COM NOME EQUIVALENTE NO CURSO DE CINCIAS DA COMPUTAO BACHARELADO

DRAYTON ROBERTO FONTANIVE

BLUMENAU, JUNHO/1999 1999/1-13

PROTTIPO DE EDITOR FLUXOGRAMTICO COM INTERFACE VISUAL PARA GERAO DE CDIGO PARA O MICROCONTROLADOR PIC16C84 DA MICROCHIP TECHNOLOGY
DRAYTON ROBERTO FONTANIVE

ESTE TRABALHO DE CONCLUSO DE CURSO, FOI JULGADO ADEQUADO PARA OBTENO DOS CRDITOS NA DISCIPLINA DE TRABALHO DE CONCLUSO DE CURSO OBRIGATRIA PARA OBTENO DO TTULO DE: BACHAREL EM CINCIAS DA COMPUTAO

Prof. Miguel Alexandre Wisintainer Orientador

Prof. Jos Roque Voltolini da Silva Coordenador do TCC

BANCA EXAMINADORA

Prof. Miguel Alexandre Wisintainer

Prof. Antonio Carlos Tavares

Prof. Jos Roque Voltolini da Silva

ii

AGRADECIMENTOS
Nos meses que passei desenvolvendo este trabalho, tive a honra de ter como orientador o professor Miguel Alexandre Wisintainer, o qual se mostrou muito determinado na orientao, sendo professor e amigo nas horas certas. Agradecimentos tambm ao professor Jos Roque V. da Silva que no seu papel de coordenador soube escutar e encaminhar a soluo de problemas. Por fim, mas no menos importante, agradeo o apoio recebido de minha famlia e de meus amigos pela compreenso, auxlio e estmulo no decorrer desse semestre.

iii

SUMRIO
SUMRIO........................................................................................................................... IV RESUMO ............................................................................................................................ VI ABSTRACT .......................................................................................................................VII LISTA DE FIGURAS....................................................................................................... VIII LISTA DE TABELAS ......................................................................................................... IX LISTA DE QUADROS......................................................................................................... X LISTA DE SIGLAS E ABREVIATURAS........................................................................... XI 1 INTRODUO .................................................................................................................. 1 1.1 Motivao ........................................................................................................................ 2 1.2 Justificativas .................................................................................................................... 3 1.3 Objetivos.......................................................................................................................... 3 1.4 Organizao do trabalho................................................................................................... 4 2 FLUXOGRAMAS .............................................................................................................. 5 2.1 Diagrama de blocos ou fluxograma de programa .............................................................. 5 2.2 Princpio do Data-Mapping .............................................................................................. 6 2.3 Como codificar significados visuais ................................................................................. 7 2.4 Componentes dos grficos................................................................................................ 7 2.5 Apresentao da informao no modo grfico .................................................................. 8 3 MICROCONTROLADORES ........................................................................................... 11 3.1 Introduo...................................................................................................................... 11 3.2 Arquitetura Harvard X Von Neumann ............................................................................ 12 3.3 O que o PIC? ............................................................................................................... 14 3.4 Microcontrolador PIC16C84 .......................................................................................... 16 3.4.1 Escrita e montagem de um programa em assemblY ..................................................... 17 3.4.2 Como constitudo um PIC, quais dispositivos contm e como interagir entre eles. .... 20 3.4.2.1 A rea de programa (EEPROM) e o Registrador de arquivo (Register File) .............. 20 3.4.2.2 A ALU e o registro W .............................................................................................. 24 3.4.2.3 O contador de programa e o Stack ............................................................................ 26 3.4.2.4 Porta A e PORTA B ................................................................................................. 30 3.4.3 conjunto de instrues do PIC16C84 ........................................................................... 32 3.4.4 consideraes sobre o MONTADOR do PIC16C84..................................................... 35 4 TRABALHOS CORRELATOS ........................................................................................ 37 4.1 Onagro ........................................................................................................................... 37 4.1.1 AMBIENTE PROPOSTO ........................................................................................... 37 4.1.2 Opes de menu do onagro ......................................................................................... 37

iv

4.1.3 Os cones de Operao ................................................................................................ 38 4.1.4 A Estrutura do Cdigo e os Mecanismos de Traduo ................................................. 39 4.1.5 Resultados................................................................................................................... 40 5 TTREE ............................................................................................................................. 42 5.1 Introduo...................................................................................................................... 42 5.2 Propriedades e mtodos mais utilizados x mais importantes ........................................... 43 6 ESPECIFICAO, IMPLEMENTAO E TESTES DO PROTTIPO.......................... 46 6.1 Tela principal ................................................................................................................. 47 6.1.1 Botes Padres............................................................................................................ 47 6.1.2 Botes PROCESS e CONDITION .............................................................................. 48 6.1.3 Botes GOTO e TO..................................................................................................... 49 6.1.4 Boto END.................................................................................................................. 50 6.1.5 Boto DELETE ........................................................................................................... 50 6.1.6 rea de definio do Zoom ......................................................................................... 50 6.1.7 Boto VARIABLES.................................................................................................... 50 6.1.8 Boto I/O .................................................................................................................... 51 6.1.9 Boto ASM FILE ........................................................................................................ 51 6.2 Tela Declaration of Variables......................................................................................... 51 6.3 Tela: I/O Input/Output................................................................................................. 52 6.4 Tela New Process........................................................................................................... 53 6.5 Tela: Condition .............................................................................................................. 55 6.6 Testes............................................................................................................................. 57 6.6.1 Circuito bsico para testes ........................................................................................... 57 6.6.2 Teste comparativo ....................................................................................................... 58 7 CONCLUSO.................................................................................................................. 62 ANEXO 1 - TESTES DE USURIOS FINAIS ................................................................... 64 ANEXO 2 PIP02............................................................................................................... 66 8 REFERNCIAS BIBLIOGRFICAS............................................................................... 67

RESUMO
Este trabalho implementa um editor de fluxogramas que, a partir de uma interface visual, gera um algoritmo voltado para o microcontrolador da famlia 16 da Microchip Technologys. Junto da descrio desse algoritmo gerado o cdigo assembly para o microcontrolador.

vi

ABSTRACT
This work implements a flowchart editor that through of a visual interface, generates a algorithm concerning to microcontroller of family 16 of the Microchip Technologys. With a algorithms description is create assembly code for the microcontroller.

vii

LISTA DE FIGURAS
Figura 1 - Diagrama de blocos ............................................................................................. 11 Figura 2 - Seqncia de trabalho da CPU ............................................................................. 12 Figura 3 - Arquitetura Harvard x Arquitetura Von Neumann................................................ 13 Figura 4 - PIC16C84............................................................................................................ 14 Figura 5 - Pinagem do PIC................................................................................................... 16 Figura 6 - Fluxograma de operaes e arquivos.................................................................... 19 Figura 7 - EEPROM e Register File ..................................................................................... 21 Figura 8 rea de memria RAM ....................................................................................... 22 Figura 9 ALU e Registro W .............................................................................................. 25 Figura 10 Stack e PC......................................................................................................... 27 Figura 11 Porta A e Porta B .............................................................................................. 31 Figura 12 Onagro: Tela principal....................................................................................... 38 Figura 13 Onagro: cones .................................................................................................. 39 Figura 14 Onagro x Avocet C............................................................................................ 40 Figura 15 Objeto Ttree ...................................................................................................... 42 Figura 16 Tela exemplo de mtodos do objeto Ttree ......................................................... 45 Figura 17 Especificao do prottipo ................................................................................ 46 Figura 18 Tela Principal.................................................................................................... 48 Figura 19 Tela Declaration of Variables ............................................................................ 52 Figura 20 Tela Input/Output.............................................................................................. 53 Figura 21 Tela New Process.............................................................................................. 54 Figura 22 Tela Condition .................................................................................................. 56 Figura 23 Circuito bsico para os testes................................................................................ 57 Figura 24 Fluxograma teste retirado do livro [BEN96] ...................................................... 58 Figura 25 Fluxograma teste criado no prottipo................................................................. 60 Figura 26 Tela MPASMWIN ............................................................................................ 61 Figura 27 Programador utilizado com o PIP02 .................................................................. 61

viii

LISTA DE TABELAS
Tabela 1 Instrues das operaes de byte com registros ................................................... 33 Tabela 2 Instrues das operaes de bit com registros ..................................................... 34 Tabela 3 Instrues das operaes com constantes e de controle ....................................... 34 Tabela 4 Mtodos e propriedades do objeto Ttree.............................................................. 44 Tabela 5 Cdigo gerado pelo processo .............................................................................. 55 Tabela 6 Cdigo gerado pela condio .............................................................................. 56

ix

LISTA DE QUADROS
Quadro 1 Smbolos do diagrama de blocos.......................................................................... 6 Quadro 2 Exemplo do conjunto reduzido de instrues ..................................................... 13 Quadro 3 Opcode em notao binria................................................................................ 17 Quadro 4 Opcode representado em hexadecimal ............................................................... 18 Quadro 5 Escrita nas portas referenciando o endereo ....................................................... 24 Quadro 6 Escritas nas portas referenciando o nome simblico........................................... 24 Quadro 7 Utilizao do acumulador (registro W) .............................................................. 26 Quadro 8 Exemplo da instruo GOTO ............................................................................. 26 Quadro 9 Exemplo da instruo CALL .............................................................................. 28 Quadro 10 Exemplo da utilizao de vrias instrues CALL ............................................ 29 Quadro 11 Cdigo para conexo de um LED a linha RB4 ................................................. 32 Quadro 12 Cdigo para leitura do estado da chave conectada a linha RB4......................... 32 Quadro 13 Significado das variveis utilizadas nas tabelas 1, 2 e 3.................................... 34 Quadro 14 Formato do programa....................................................................................... 35 Quadro 15 Exemplo da utilizao de mtodos e propriedades do Ttree .............................. 44 Quadro 16 Adicionando uma conexo com GOTO ............................................................ 49 Quadro 17 Algoritmo recursivo......................................................................................... 51 Quadro 18 Comparao de cdigos testados...................................................................... 59

LISTA DE SIGLAS E ABREVIATURAS


ALU CPU EEPROM LED LIFO PC PIC PROM RAM RISC E/S Arithmetic and Logic Unit Central Processor Unit Eletrical Erasable Programmable Read Only Memory Light Emitter Diode Last In Last Out Program Counter Peripheral Interface Controller Programmable Read Only Memory Random Access Memory Reduced Instruction Set Computer Entrada e Sada

xi

1 INTRODUO
Praticamente, todas as pessoas esto rodeadas de aparelhos eletrnicos que possuem dentro de si um microcontrolador, e nem mesmo temos conscincia disto. Os videocassetes, telefones celulares, agendas eletrnicas, vrios brinquedos, alarmes de automvel, so apenas alguns dos exemplos mais comuns. Os grandes projetos que antes necessitavam de circuitos digitais complexos, so agora fceis de realizar, usando um pequeno mas potente microcontrolador PIC, fabricado pela Microchip Technology. Os circuitos lgicos que se baseiam na durao ou contagem de pulsos, normalmente ficam bastante complexos se neles forem usados integrados normais. Um s PIC pode fazer o mesmo, em menos espao, com baixo custo e menor complexidade [PIC95]. Este trabalho diz respeito a um estudo e implementao de um prottipo de um editor que a partir de fluxogramas criados pelo usurio gera um cdigo em assembly para o microcontrolador PIC16C84. Esse microcontrolador possui, dentre outras caractersticas que sero abordadas com mais detalhes no desenvolvimento do trabalho, um conjunto reduzido de instrues, o que o torna uma das melhores opes para o incio do trabalho proposto aqui. O assembly do microcontrolador PIC16C84 da Microchip Technology monta, a partir de instrues contidas em arquivo texto, um cdigo hexadecimal que depois ser passado para o PIC. O cdigo mnemnico para o microcontrolador pode ser criado usando um simples editor de texto. Um exemplo muito simples de uma aplicao no microcontrolador seria o programa atribuir 0 para todas as oito linhas de entrada e sada de uma porta B do PIC16C84, e deste modo, setando todas elas como sada [BEN96]. Oito E/S so linhas que podem ser configuradas como entrada ou sada e so estudadas no item 3.4.2.4. Para a implementao do editor ser utilizado o componente TeeTree, que aps ser instalado no ambiente de programao Delphi, este conter uma nova paleta de componentes onde estar o objeto Ttree que consiste de formas (shapes) e conexes no estilo de orientao rvores, enfim, permitindo desenhar a informao de forma hierrquica, muito parecida com a estrutura do fluxograma. Dentre outras vantagens desse componente podemos citar o seu tamanho reduzido e o baixo consumo de memria.

2 A partir do fluxograma ser gerado um arquivo texto com mnemnicos, e posteriormente traduzi-los em uma srie de nmeros (cdigo hexadecimal) reconhecveis diretamente pelo PIC. Para isto ser utilizado o MPASMWIN (montador),. Para realizar os testes no PIC ser utilizado um programador de baixo custo, o PIP02, e considerando-se que o PIC16C84 dispe de uma memria do tipo EEPROM (Electrical Erasable Programmable Read Only Memory) para armazenar o programa, poder ser regravada milhares de vezes.

1.1 MOTIVAO
Os microcontroladores so extremamente indicados em sistemas que necessitam de altas performances com custo e tamanho reduzido, como por exemplo as aplicaes em balanas digitais, termmetros, controladores de acesso, alarmes, aparelhos mdicos, controladores de videocassete, de televiso, de iluminao, dentre outros [BEN96]. O PIC16C84, o montador MPASMWIN e o baixo custo do seu programador torna o sistema de desenvolvimento vivel para a criao de projetos baseados em microcontroladores. Alm disso, tudo que for aprendido usando esse microcontrolador ser diretamente aplicvel a toda famlia dos microcontroladores PIC16/17, pois os sets de instrues so compatveis [BEN96]. No fcil escrever cdigo para o PIC16/17 mo pois ele no intuitivo. Muitas instrues requerem acender ou apagar um bit para especificar o destino do resultado da instruo executada [BEN96]. Isto bom como uma experincia de aprendizado inicial, mas poder vir a ser muito tedioso no futuro, e assim, o uso de ferramentas auxiliares essencial, como o proposto neste trabalho. Ser utilizada uma representao grfica na forma de fluxogramas para edio e posterior gerao de cdigo para a linguagem do microcontrolador, pois ela mais legvel que a representao textual, diminuindo a probabilidade de erros e tornando o trabalho mais agradvel. Este editor proporcionar facilidades para automatizar a representao atravs de fluxogramas. Durante a edio, consistncias sero realizadas (dinamicamente), caracterizando um montador que converter o cdigo simblico em cdigo assembly. A representao fluxogramtica a ser definida possuir caractersticas muito prximas da

3 linguagem do microcontrolador, mas ainda sendo uma linguagem simblica.

1.2 JUSTIFICATIVAS
Para pessoas que esto comeando a programar microcontroladores, o PIC16C84 torna-se a melhor opo pelo seu baixo custo de desenvolvimento, reprogramvel vrias vezes e quase todo seu aprendizado ser reaplicvel a outros componentes da famlia de microcontroladores PIC da Microchip Technologys [BEN96]. Segundo [SIL97], o estudo desse microcontrolador torna-se til pelo fato do mesmo possuir todos os perifricos bsicos dos demais membros da famlia PIC. A utilizao de grficos para a representao da informao pode ser justificada pelos seguintes fatores: a) aumentam a performance do trabalho; b) tornam os documentos uma linguagem global; c) seduzem leitores relutantes; d) aumentam a credibilidade; e) auxiliam o pensamento; f) tornam a leitura mais eficiente; g) podem explicar conceitos visuais; h) so compactos; i) fogem das limitaes do texto linear; j) so prontamente compreendidos; k) so fceis de relembrar; l) permitem uma viso mais clara dos erros. Enfim, o ponto determinante que faz com que todos os itens descritos acima tenham validade o fato de a viso ser nosso sentido determinante.

1.3 OBJETIVOS
O objetivo principal do trabalho especificar e implementar um prottipo de um editor grfico que ir analisar informaes que sero passadas por meio de uma interface visual (fluxogramas), e aps, gerar o cdigo em baixo nvel (mnemnicos), o qual passar por uma

4 montagem final para realizao dos testes.

1.4 ORGANIZAO DO TRABALHO


O presente trabalho est dividido em sete captulos, sendo que o primeiro trata da introduo, englobando os objetivos, justificativas, motivao e estrutura do trabalho. O segundo captulo trata de fornecer algumas caractersticas de representao grfica, justificando amplamente o mtodo utilizado nesta implementao. No terceiro captulo so abordados os microcontroladores de uma forma geral, partindo para a famlia do PIC16 e aprofundando-se no PIC16C84, indispensvel por ser base desse trabalho. O quarto captulo mostra um trabalho correlato, que contm idias e finalidades semelhantes as propostas neste trabalho. O quinto captulo destina-se a fazer algumas consideraes sobre o Ttree, componente utilizado para auxiliar na construo do editor. O sexto captulo concentra-se na descrio da especificao, implementao e testes do prottipo. No stimo captulo apresenta-se a concluso do trabalho.

2 FLUXOGRAMAS
Normalmente, o computador comandado por programas, ou seja, uma srie de instrues bem definidas que nos levam a um fim predeterminado. Para fazer um programa deve-se escolher uma linguagem simblica de programao que o computador entenda e tambm devem ser passadas as tarefas para que ele realize, dando-lhe condies para isto. Mas, antes de chegar a programao propriamente dita, devese seguir trs etapas iniciais. Primeiramente, determinar qual o problema que dever ser resolvido, descrevendo-o minuciosamente (anlise). Em seguida, estudar os meios para resolver este problema. Surge ento o fluxograma de sistemas que indica os meios de entrada, isto , como as informaes fluem para dentro do sistema de processamento de dados. Determina tambm as formas de documentos apresentadas na sada deste sistema [BEN79]. Aps estas fases concludas, chega-se a definio lgica das etapas do programa, atravs do diagrama de blocos (tambm chamado de fluxograma de programa ou simplesmente fluxograma) [BEN79]. Tanto o fluxograma de sistemas como o diagrama de blocos so apresentados sob forma de conjuntos de smbolos especficos. Os smbolos do fluxograma podem ser vistos no quadro 1, o qual foi utilizado neste trabalho.

2.1

DIAGRAMA DE PROGRAMA

BLOCOS

OU

FLUXOGRAMA DE

Ao receber instrues sobre o que se deve ser feito, os programadores tratam de resolv-las tambm subdividindo em duas fases inter-relacionadas. Em primeiro lugar, faz o diagrama de blocos logo aps ter estudado o problema. Em segundo lugar codifica-se, isto , transforma o diagrama de blocos em uma linguagem que o computador compreenda [BEN79]. O diagrama de blocos segue smbolos usados internacionalmente, como pode ser visto no quadro 1.

Terminal (ponto de incio, trmino ou interrupo de um programa

Processamento predeterminado
Deciso (smbolo usado para indicar a possibilidade de desvios para diversos outros pontos do programa de acordo com situaes variveis

Conector (ligao de um local a outro do programa

processamento

Entrada/sada (qualquer funo de um dispositivo de entrada/sada)

Preparao (posicionar chave, modificar um registrador)

Introduzir informaes por teclado

Quadro 1 Smbolos do diagrama de blocos

2.2 PRINCPIO DO DATA-MAPPING


Segundo [HOR91], todos os grficos tcnicos so construdos sobre um princpio to simples que todos provavelmente j sabem mas nunca pararam para examin-lo. Quando isso ocorre, percebe-se que ele pode explicar uma enorme variedade de outros grficos tcnicos em uso e podem sugerir novas formas grficas criativas. Data-Mapping uma forma de

7 representar os dados e os fenmenos relativos ao mesmo por intermdio de figuras, linhas, coloridos, dentre outros, que devem ser previamente convencionados. O princpio do DataMapping : Use objetos grficos para representar conceitos e caractersticas grficas para representar dimenses correspondentes ou caractersticas dessas idias [HOR91].

2.3 COMO CODIFICAR SIGNIFICADOS VISUAIS


Associar smbolos a conceitos envolve um processo interativo [HOR91]: a) escolha de um smbolo grfico para um conceito; b) escolha de uma caracterstica grfica (decide que caracterstica grfica ir representar a caracterstica de um conceito); c) escolha de uma funo escalar (define um algoritmo, procedure, ou heurstica para associar valores grficos a valores de dados).

2.4 COMPONENTES DOS GRFICOS


H muitos fatores que contribuem no significado dos grficos: mensagem, redundncia, decorao e interferncias. A mensagem simplesmente o que se quer dizer. o significado, a informao, o sinal que se est tentando transmitir. Redundncia significa dizer a mesma coisa de mais de uma forma, tal como sinalizar uma nfase por meio de uma forma triangular na cor amarela. No um desperdcio, um aumento de segurana, pois resiste a ms interpretaes, dentre outros problemas. A decorao atrai a ateno para o grfico. Se a decorao no contribui no significado, pode ser til na motivao do leitor para estudar o grfico em detalhes, ou seja, no representa informao diretamente. A cor verde pode ser considerada uma redundncia, enquanto o verde-limo, representa ainda uma decorao. Interferncia qualquer coisa que possa alterar o significado. A decorao em excesso pode se tornar uma interferncia [HOR91]. Esses componentes esto altamente interrelacionados. Redundncia necessrio para amenizar os efeitos das interferncias, ou seja, uma interferncia pequena requer uma redundncia pequena. Deve-se controlar o uso de decorao, pois com o excesso dela a comunicao da informao pode deixar de ser efetiva, assim, a decorao a mais se torna

8 interferncia [HOR91].

2.5

APRESENTAO GRFICO

DA

INFORMAO

NO

MODO

Segundo [HOR91], grficos so freqentemente difceis de desenhar, criar, e caros de produzir, alm de que sobreviveu-se com nmeros e palavras nuas por milhares de anos. Ento por que precisa-se de grficos? A resposta simples: pela facilidade que proporcionam para comunicao. Grficos auxiliam na performance do trabalho. Quando uma explanao estudada vagarosamente, grficos e cores parecem oferecer pouca vantagem. Entretanto, quando o leitor impaciente ou quer tomar decises rapidamente, exposies de figuras coloridas so mais efetivas. Para tarefas que envolvem muitos conceitos de nmeros, os grficos permitem os leitores processarem informaes com preciso quase matemtica e com velocidade. Grficos tornam documentos uma linguagem global, pois atualmente um produto pode ser desenvolvido em um pas, manufaturado em outro, transportado por muitos outros, e utilizados em dzias de outros pases. A partir disso, observa-se que o produto manipulado por pessoas de idiomas e dialetos bem diversificados, podendo causar vrios erros de interpretao. Conclui-se ento, que o custo potencial da traduo s excedido pelo custo potencial da confuso. Os grficos podem reduzir estes custos. Grficos aumentam a credibilidade. Muitas pessoas acreditam que figuras refletem somente a verdade. A nossa f na viso to grande que quando o que ns sentimos com as mos discordam do que vemos, inconscientemente, as percepes do toque so alteradas para consistirem com a viso. Grficos ajudam a resolver problemas. Os problemas podem ser resolvidos em grande parte dependendo do caminho da representao do problema que faz sua soluo transparente. Grficos so memorveis, manipulam facilmente smbolos que representam idias. Tambm podem simplificar solues de problemas gravando visualmente fatos, ou, caso contrrio, deduzir ou buscar na memria a curto prazo. Pela informao bruta, grficos e cores habilitam as pessoas manipular mais informaes, process-las mais eficientemente, e aplicar estratgias mais simples e eficientes de deciso e montagem.

9 Grficos podem ajudar um leitor a aprender uma tarefa difcil e at mesmo entender um documento desestruturado. Podem tambm auxiliar os leitores a ver e compreender padres complexos, guiando-os de forma eficiente, no tendo que ler o documento inteiro em todos os seus detalhes. Os grficos proporcionam um mapa global do documento como tambm marcas para as informaes crticas. O mapa deixa o leitor assimilar a organizao do documento e planejar uma estratgia para achar a informao. As marcas identificam blocos de informaes para os leitores a acharem mais rpido. Grficos podem explicar conceitos visuais. Alguns conceitos desprezam palavras. Outros podem ser expressados em palavras mas so mais eficientes em figuras. Ainda outros devem ser traduzidos antes para imagens visuais para depois serem entendidos. Imagens trabalham melhor que palavras por expressar de forma mais clara as sutilezas das dimenses, cores e relaes textuais. Eles tambm trabalham bem por armazenar muita informao sobre todos os aspectos. Grficos so compactos, pois comparando-se com palavras, grficos podem dizer mais em menos espao. Quando grficos servem como um meio de armazenamento para fatos gravados, podem ser bastante densos apesar de ainda serem legveis. Dado as altas expectativas dos leitores, os escritores tm que buscar modos para superar as limitaes das pginas tradicionais e das telas de computador. Linguagens, homens e computadores, todos esto limitados por um linear, pela sintaxe palavra depois de palavra. A estrutura do idioma implica em certas suposies sobre a realidade. Oraes, que so construdas de palavras isoladas, so unidirecionais. Esta estrutura do idioma pode dar a impresso de que o mundo fragmentado ao invs de contnuo, como linear ao invs de complexo. Tal conceito restritivo tambm tende a filtrar outros modos de pensamento. Grficos corretamente projetados fazem com que seus pontos principais sejam identificados rapidamente, pois no tm que ser lidos, analisados e interpretados. Grficos melhoram a velocidade e preciso com que informao assimilada e processada. Atravs deles, comparaes se tornam automticas e os relacionamentos bvios. So compreendidos mais rapidamente que palavras e relatam mais facilmente a realidade. Alm disso, grficos que reforam o significado do texto aumentam a compreenso.

10 Grficos so fceis de relembrar. Testes de memorizao mostraram que ns temos memria de reconhecimento para imagens grficas quase ilimitada e que conceitos lembrados visualmente so recordados melhor que os codificados. Alm disso, eles so reconhecidos quase que perfeitamente. Um grfico salienta os erros do contexto e facilita a deduo de concluses corretas. Alm disso, ns podemos examinar imagens visuais sugeridas por grficos com mais confiana que formar imagens de palavras lidas. Com palavras, a imagem deve ser construda pelo leitor e nunca to vvido quanto a imagem explcita provida por um grfico. Os humanos confiam na viso sobre todos os outros sentidos. Com a audio aprendese 11%, e em contrapartida, aprende-se 83% visualmente [HOR91].

11

3 MICROCONTROLADORES
3.1 INTRODUO
Basicamente, o microcontrolador um componente que possui todos os perifricos dos microprocessadores comuns embutidos em uma s pastilha, facilitando assim o desenvolvimento de sistemas pequenos e de baixo custo, embora complexos e sofisticados [SIL97]. Costumam apresentar em uma nica pastilha memrias de dados e programa, canal serial, temporizadores, interfaces para displays, memria EEPROM, e muito mais, dependendo do modelo [SIL97]. O diagrama de blocos simplificado da estrutura dos microcontroladores pode ser visto na figura 1.

Figura 1 - Diagrama de blocos

12

3.2 ARQUITETURA HARVARD X VON NEUMANN


A maioria microprocessadores comuns e vrios microcontroladores existentes no mercado tem sua estrutura interna de memria de dados e programa baseados na conhecida arquitetura de Von Neumann, que prev uma nica via (bus) de comunicao entre memrias e CPU do microcontrolador [SIL97]. Nesta estrutura todos os dados tratados pela CPU passam por uma via nica, ento enquanto a CPU est lendo um dado ou instruo de memria, as vias internas no podem ser usadas para outra finalidade [SIL97]. Basicamente pode-se dizer que a seqncia de trabalho est descrito na figura 2.

Figura 2 - Seqncia de trabalho da CPU Os PICs utilizam uma arquitetura diferente conhecida como Harvard, que prev vrias vias de comunicao entre a CPU e perifricos, permitindo a realizao de vrias operaes simultaneamente, o que implica em aumento considervel na velocidade de execuo e permite ainda que memria de dados e programas tenham tamanhos diferentes [SIL97]. Criou-se ento uma terminologia chamada RISC (Reduced Instruction Set Computer computador com conjunto de instrues reduzido) que faz com que existam poucas instrues (mais ou menos 35, dependendo do modelo) enquanto alguns microprocessadores tradicionais chegam a ter mais de 100 instrues [SIL97]. Este set reduzido de instrues facilita muito o

13 aprendizado. Um exemplo (somar 12 ao registro 24) pode ser visto no quadro 2.

A) Microprocessador comum: 3 bytes Somar a operao 12 o operando 24 o local B) Microprocessador RISC: 1 palavra de 14 bits Somar + 12 (operando) + 24 (local) (tudo numa nica palavra)

Quadro 2 Exemplo do conjunto reduzido de instrues Como a maioria das instrues dos microprocessadores comuns usam 2 bytes (existem instrues de 1 e 3 bytes tambm), v-se que os cdigos dos PICs j tem basicamente a metade do tamanho [SIL97].

Figura 3 - Arquitetura Harvard x Arquitetura Von Neumann

14 Outra vantagem da arquitetura Harvard est no fato de que enquanto uma instruo est sendo executada e valores so lidos ou escritos na memria ou E/S pela via apropriada, outra instruo j est sendo carregada pela via da memria do programa, acarretando um aumento de velocidade [SIL97]. Apenas como comparao, um 8051 padro, rodando a 12 MHz (sua velocidade mxima tpica), executa a maioria das instrues em 1 us, enquanto para executar em 1 us o PIC precisa de apenas 4 MHz, ou seja, com 12 MHz o PIC ser 3 vezes mais rpido. Nem todos os modelos de PIC chegam a 12 MHz. O PIC16C84 chega at 10 MHz [SIL97].

3.3 O QUE O PIC?


O PIC (Peripheral Interface Controller) um circuito integrado produzido pela Microchip Technology Inc., que pertence a categoria de microcontroladores, ou seja, um componente integrado que em um nico dispositivo contm todos os circuitos necessrios para realizar um completo sistema digital programvel [GAL99]. essencialmente um controlador de entrada e sada e construdo para ser muito rpido, pois baseado na arquitetura Harvard. Alm disso tem um conjunto de instrues reduzidas baseadas na famlia dos microcontroladores PIC16C5X [BEN96].

Figura 4 - PIC16C84 A figura 4 mostra um PIC (neste caso um PIC16C84), que segundo [SIL97] internamente dispe de todos os dispositivos tpicos de um sistema microprocessado, ou seja: a) uma CPU (Central Processor Unit ou seja Unidade Central de Processamento) e sua finalidade interpretar instrues de programas;

15 b) uma memria PROM (Programmable Read Only Memory ou Memria Programvel Somente para Leitura) na qual ir memorizar de maneira permanente as instrues do programa; c) uma memria RAM (Random Access Memory ou Memria de Acesso Aleatrio) utilizada para memorizar as variveis utilizadas pelo programa; d) uma srie de linhas de E/S para controlar dispositivos externos ou receber pulsos de sensores, chaves, etc; e) uma srie de dispositivos auxiliares ao funcionamento, ou seja, gerador de clock, bus, contador, etc; f) registradores de funes especiais. A presena de todos estes dispositivos em um espao extremamente pequeno, permite ao projetista ampla gama de trabalho e enorme vantagem em usar um sistema microprocessado, onde em pouco tempo e com poucos componentes externos pode-se fazer o que seria oneroso fazer com circuitos tradicionais. O PIC est disponvel em uma ampla variedade de modelos para melhor adaptar-se as exigncias de projetos especficos, diferenciando-se pelo nmero de linhas de E/S e pelo contedo do dispositivo. Inicia-se com modelo pequeno identificado pela sigla PIC12Cxx dotado de 8 pinos, at chegar a modelos maiores com sigla PIC17Cxx dotados de 40 pinos [GAL99]. A famlia PIC16C5X (famlia bsica) oferece a melhor relao custo/benefcio. So extremamente compactos com operao abaixo de 2.0 V, fazendo dela ideal para aplicaes portteis alimentados por bateria [BER96]. A famlia PIC16CXX (famlia intermediria) oferece o maior nmero de opes de perifricos, mantendo ainda uma boa relao custo/benefcio [BER96]. A famlia PIC17CXX (famlia de alta performance) a topo de linha (atualmente) e oferece os microcontroladores de 8 bits mais rpidos do mercado alm de oferecer uma vasta gama de perifricos [BER96].

16

3.4 MICROCONTROLADOR PIC16C84


Este trabalho ser baseado em um modelo intermedirio, o PIC16C84. Este dotado de 18 pinos, sendo 13 disponveis para E/S, ou seja, para serem ligados ao circuito e de algumas caractersticas que o tornam um circuito que melhor atender as exigncias do trabalho. Em particular, o PIC16C84 dispe de uma memria para armazenar o programa, do tipo EEPROM, que pode ser regravada milhares de vezes (aproximadamente um milho) [GAL99]. A memria de programa tem 1Kbyte, e essa tecnologia (EEPROM) permite que esse chip seja apagado e regravado automaticamente pelos gravadores, dispensando as lmpadas ultravioletas comuns nos desenvolvimentos com EPROM comum [SIL97].

Figura 5 - Pinagem do PIC Na figura 5 pode ser vista a reproduo da pinagem do PIC e nomenclatura de seus respectivos pinos. Como possvel ver, o PIC16C84 dotado de um total de 18 pinos dispostos em duas fileiras paralelas de 9 pinos cada uma (dual in line). Os pinos RA0..RA4 e RB0..RB7 representam as linhas de E/S disponveis para as aplicaes. Os pinos Vdd e Vss so os pinos de alimentao e os pinos MCLR\, OSC1 E OSC2 so reservados ao funcionamento do PIC (MCLR para o reset ; OSC1 OSC2 para o clock) [BEN96].

17 Os pinos Vdd (pino 14) e Vss (pino 5) servem para fornecer alimentao para o chip e so ligados respectivamente ao positivo e a massa. O pino MCLR (pino 4) serve para resetar o chip quando este estiver na condio lgica zero [BEN96]. Os pinos OSC1/CLKIN (pino 16) e OSC2/CLKOUT (pino 15) so conectados internamente ao circuito para gerar a freqncia de clock utilizada para temporizar todo o ciclo de funcionamento interno do chip [BEN96]. Desta freqncia depende a maior parte das operaes internas e em particular a velocidade com que o PIC processa as instrues do programa. No caso do PIC16C84-04/P tal freqncia pode chegar a um mximo de 4Mhz da qual se obtm uma velocidade de execuo das instrues perto de 1 milho de instrues por segundo [GAL99].

3.4.1 ESCRITA E MONTAGEM DE UM PROGRAMA EM ASSEMBLY


Como em qualquer sistema microprocessado, no PIC tambm necessrio preparar um programa para que ele o execute. Um programa constitudo por um conjunto de instrues em seqncia, onde cada uma identificar precisamente a funo bsica que o PIC ir executar. A instruo representada por um cdigo operativo (ou opcode, do ingls operation code ou abreviadamente opcode) podendo memorizar 14 bits em cada locao da memria EEPROM. Esta memria no PIC16C84 dispe de 1024 locaes e cada uma dever conter uma s instruo. Um exemplo de opcode em notao binria est escrito no quadro 3 [GAL99].

00 0001 0000 0000B

Quadro 3 Opcode em notao binria mais provvel que um opcode venha representado na notao hexadecimal, como pode ser visto no quadro 4. Esta ltima representa exatamente o mesmo valor, em um outro sistema de numerao. A letra H, escrita no final do valor 0100, indica o tipo de notao (Hexadecimal). O mesmo

18 valor pode ser representado em assembly com a notao 0x100 que derivado da linguagem C ou H'0100'. 0100H

Quadro 4 Opcode representado em hexadecimal Este cdigo, completamente sem sentido para os humanos, o que o PIC est preparado para entender. Para facilitar a compreenso ao programador, recorre-se a um instrumento de conveno para tornar a instruo mais compreensvel. A primeira conveno a que associa o opcode (um total de 35 para o PIC16C84) a uma sigla mnemnica, ou seja, uma inicial que seja fcil de recordar o significado da instruo. Voltando ao exemplo, o opcode 0100H corresponde a instruo mnemnica CLRW que a forma abreviada da instruo CLEAR W REGISTER, ou seja, zere o registrador W. Outra conveno consiste na definio da varivel, da constante, do label (rtulo) de referncia ao endereo de memria. O propsito desta conveno de facilitar a escrita de um programa para o PIC que chamada linguagem assembly. Um programa escrito em linguagem assembly pode ser escrito em qualquer microcontrolador utilizando-se qualquer processador de texto que possa gerar arquivos ASCII (Word, Notepad, etc). Um arquivo de texto que contenha um programa em assembly denominado de source ou cdigo fonte [GAL99]. Uma vez preparado o cdigo fonte, ser necessrio um programa para traduzir as instrues mnemnicas e todas as outras formas convencionais com que se escreve o cdigo em uma srie de nmeros (o opcode) reconhecvel diretamente pelo PIC. Este programa se chama montador [GAL99]. Na figura 6 est esquematizado o fluxograma de operaes e arquivos que dever ser realizado para passar um cdigo assembly a um PIC a ser programado. A primeira operao a ser efetuada a escrita do cdigo assembly e a sua gravao em um arquivo de texto com a extenso .ASM. O prximo passo a montagem do cdigo, ou seja, a transformao em opcode do cdigo mnemnico ou instrues assembly deste

19 contedo. O montador que ser utilizado neste trabalho o MPASMWIN, produto freeware da Microchip disponvel no endereo http://www.microchip.com/. Alm do cdigo com extenso .ASM, necessrio ter com o montador um segundo arquivo, com extenso .INC [GAL99]. No caso deste trabalho, o arquivo o P16C84.INC, que contm algumas definies da qual depende o tipo de chip utilizado.

Figura 6 - Fluxograma de operaes e arquivos

20 Durante a montagem do cdigo, uma srie de arquivos so gerados: a) .HEX o arquivo que contm o cdigo de operao, o qual ser gravado ao PIC via programador; b) .LST um arquivo de texto na qual vem reportado por inteiro o cdigo assembly e a correspondente traduo em opcode. No utilizvel pela programao do PIC mas extremamente til para verificar o processo de montagem que o compilador fez; c) .ERR contem uma lista de erro de montagem que mostra o nmero da linha do cdigo na qual est com erro no cdigo assembly. Os arquivos .LST e .ERR so utilizados somente para controle aps a montagem. Somente o arquivo .HEX ser utilizado realmente na programao do PIC. O arquivo .HEX no um arquivo no formato binrio e no reflete diretamente o contedo que dever ter a EEPROM do PIC. Sem entrar em detalhes til saber que tal formato diretamente reconhecido pelo programador do PIC que promover durante a programao a converso em binrio e contm, outro opcode e outras informaes que sero adicionadas aos endereos na qual ir transferir o opcode [GAL99].

3.4.2 COMO CONSTITUDO UM PIC, QUAIS DISPOSITIVOS CONTM E COMO INTERAGIR ENTRE ELES.
Nesta parte sero descritos alguns componentes e suas interaes. No estaro descritos todos, apenas os relevantes diretamente e aqueles que mesmo indiretamente se fazem necessrios para desenvolvimento desse trabalho.

3.4.2.1 A REA DE PROGRAMA (EEPROM) E O REGISTRADOR DE ARQUIVO (REGISTER FILE)


Na figura 7 est ilustrado o esquema de blocos simplificado da arquitetura interna do PIC16C84. A famlia PIC possui em sua arquitetura segmentos de memria separados para programas e dados. Como j visto, cada memria tem uma via separada no hardware interno, ou seja, os dois blocos podem ser acessados simultaneamente pelo programa em um mesmo

21 ciclo de mquina [SIL97]. A EEPROM uma memria especial, regravvel eletricamente, utilizada pelo PIC para memorizar o programa a ser executado. A sua capacidade de memorizao de 1024 locaes, as quais podero conter somente um opcode a 14 bits, ou seja, uma instruo bsica do PIC. Um programa por mais complexo que possa ser no poder ter mais do que 1024 instrues [GAL99]. Os endereos reservados para EEPROM comeam em 0000H e vo at 03FFH. O PIC pode somente executar instrues memorizadas nestas locaes. No se pode de maneira nenhuma ler, escrever ou cancelar dados nesses endereos [SIL97].

Figura 7 - EEPROM e Register File

22 Para escrever, ler e cancelar estas locaes necessrio um dispositivo externo chamado programador. Exemplos de programadores so o YAPP! e o PICSTART-16+ produto da Microchip [GAL99]. O presente trabalho utilizou o PIP02, que pode ser visto no anexo 2. Os membros da famlia 16FXXX podem acessar tanto direta quanto indiretamente qualquer posio de memria RAM ou dos registros internos, pois esto todos mapeados no mesmo bloco de memria. Qualquer operao pode ser feita com qualquer registro (de dados ou de controle) [SIL97]. A primeira locao de memria, o endereo 0000H, deve conter a primeira instruo que o PIC dever executar aps o reset e por isso denominada Reset Vector [GAL99]. A diretiva ORG 0000H indica o inicio do programa. Esta diretiva indica de fato que a execuo do programa aps o reset deve iniciar no endereo 0000H da rea de programa [BEN96].

Figura 8 rea de memria RAM

23 O Register File uma parte da locao de memria RAM denominada Registro. Diferente da memria EEPROM destinada a conter o programa, a rea de memria RAM diretamente visvel pelo resto do programa igualmente, onde pode-se escrever, ler, ou modificar qualquer endereo do Register File no programa a qualquer momento em que for necessrio [GAL99]. A nica limitao consiste de que alguns desses registros desenvolvem funes especiais pelo PIC e no podem ser utilizados para outra finalidade a no ser para aquela a qual eles esto reservados [GAL99]. Estes registros encontram-se nas locaes base da rea de memria RAM segundo o que est ilustrado na figura 8. As locaes de memria presentes no Register File so endereadas diretamente em um espao de memria que vai de 00H a 2FH num total de 48 bytes, denominada pgina 0. Um segundo espao de endereamento denominado pgina 1 vai de 80H a AFH. Para acessar esse segundo espao necessrio recorrer a dois bits auxiliares RP0 e RP1 do registrador STATUS [GAL99]. As primeiras 12 locaes da pgina 0 (de 00H a 0BH) e da pgina 1 (de 80H a 8BH) so aquelas reservadas as funes especiais para o funcionamento do PIC e, como j dito, no podem ser utilizadas para outra coisa. As outras 36 locaes na pgina 0 podem ser endereadas de 0CH a 2FH, podendo aqui ser utilizada livremente pelo programa para memorizar variveis, contadores, etc [BEN96]. Os registros especiais do PIC sero utilizados com muita freqncia nos programas. Por exemplo, se for feita uma cpia dos registros especiais TRISA e TRISB, para definir qual linha de E/S ser entrada e qual ser sada, o mesmo estado lgico da linha de E/S depende do valor de dois registros, PORTA e PORTB. Alguns registros reportaro o estado de funcionamento do dispositivo interno do PIC ou o resultado de operaes lgicas e aritmticas. Portanto, necessrio conhecer exatamente qual funo desenvolve, cada um dos registros especiais e qual efeito se obtm ao manipular seus contedos. Para facilitar as operaes de seus registros especiais, o P16C84.INC (que pode ser includo no cdigo .ASM com a diretiva INCLUDE) contm uma lista de nomes que identificam univocamente qualquer registro especial e a qual est associado o endereo correspondente na rea do Register File [GAL99].

24 Segundo [SIL97], para definir toda a linha do PORTB do PIC em escrita agindo sobre o TRISB, pode-se escolher e referenciar diretamente o registro com o seu endereo conforme o quadro 5, ou ento, referenciar o mesmo registro com o seu nome simblico como est descrito no quadro 6. Para isso deve ser inserida a diretiva INCLUDE "P16C84.INC" no cdigo.

movlw B'00000000' movwf 06H

Quadro 5 Escrita nas portas referenciando o endereo

movlw B'00000000' movwf TRISB

Quadro 6 Escritas nas portas referenciando o nome simblico

3.4.2.2 A ALU E O REGISTRO W


A ALU (Arithmetic and Logic Unit ou seja unidade aritmtica e lgica) o componente mais complexo do PIC por conter todos os circuitos destinados a desenvolver as funes de clculo e manipulao de dados durante a execuo de um programa [GAL99]. A ALU um componente presente em todos os microprocessadores e a capacidade de clculo do micro depende diretamente dela. A ALU do PIC16C84 est preparada para operar com 8 bits, ou seja, valor numrico no maior do que 255. Existem processadores com ALU de 16, 32, 64 bits e mais. A famlia Intel 80386, 486 e Pentium por exemplo dispe de uma ALU de 32 bits. A capacidade de clculo presente nesses micros so notavelmente superior em detrimento da complexidade dos circuitos internos de acessoria e consequentemente do espao ocupado [GAL99]. O registro W, denominado antes de acumulador, consiste de uma locao de memria

25 destinada a conter um s valor de 8 bits. A diferena entre o registro W e outras locaes de memria consiste no fato de que, por referenciar o registro W, a ALU no pode fornecer nenhum endereo mas podemos acess-los diretamente [GAL99].

Figura 9 ALU e Registro W Por exemplo, para colocar na locao de memria 0CH do Register File o valor 01H, procurando entre as instrues do PIC, no existe uma nica instruo capaz de efetuar esta operao, portanto dever necessariamente recorrer ao acumulador e usar duas instrues em seqncia. Isto porque o opcode (cdigo operacional) de uma instruo no pode exceder aos 14 bits e assim tem-se: 8 bits para especificar o valor que se deseja colocar na locao de memria, 7 bits para especificar em qual locao de memria deve-se inserir o nosso valor, 6

26 bits para especificar qual instruo queremos usar, tendo um total de 8 + 7 + 6 = 21 bits [GAL99]. Dever, ento, ser recorrido a duas instrues (veja quadro 7).

movlw movwf

01H 0CH

Quadro 7 Utilizao do acumulador (registro W) A primeira instruo do quadro 7 colocar no registro W o valor 01H com a instruo MOV Literal to W e depois "move-se" para locao 0CH com a instruo MOV W para F.

3.4.2.3 O CONTADOR DE PROGRAMA E O STACK


O PIC16C84 inicia a execuo do programa a partir da locao de memria 0000H. Depois de ter executado esta instruo passa para a prxima instruo memorizada na locao 0001H e assim por diante. Se no existisse instruo capaz de influenciar a execuo progressiva do programa, o PIC chegaria at o final na ltima instruo memorizada na ltima locao e no saberia mais como continuar. Porm, no bem assim, pois qualquer sistema microprocessador dispe de instruo de desvio, ou seja, instrues capazes de modificar o fluxo de execuo do programa [GAL99]. Uma destas instrues o goto (do ingls go to, v para). Quando o PIC encontra um goto no segue mais a instruo imediatamente aps, mas desvia-se diretamente para a locao de memria especificada na instruo. Um exemplo pode ser visto no quadro 8.

ORG 00H Point1 movlw goto 10 Point1

Quadro 8 Exemplo da instruo GOTO

27 No reset o PIC seguir a instruo movlw 10 memorizada na locao 0000H que colocar no acumulador o valor decimal 10, onde ento passar executar a prxima, goto Point1. Esta instruo determinar um desvio incondicional para locao de memria especificada pelo label Point1, ou seja, de novo para locao 0000H. O programa no far outra coisa se no a de executar um ciclo infinito seguindo continuamente as instrues especificadas.

Figura 10 Stack e PC Durante este ciclo, para determinar qual a prxima instruo a ser seguida, o PIC utiliza um registro especial denominado PC (Program Counter), ou seja, contador de programa. Este ter sempre o endereo da prxima instruo a ser executada. No reset este

28 estar sempre zerado, determinando o inicio da execuo no endereo 0000H, e a cada instruo ter um incremento de um para poder passar para prxima instruo [GAL99]. A instruo goto permite a colocao de um novo valor no PC e consequentemente desvi-la para uma locao qualquer da rea de programa do PIC. Para continuidade do trabalho, em verses futuras, dever ser implementado a chamado a subrotinas, que realizado pela instruo call. Esta instruo funciona de maneira muito similar ao goto. A nica diferena que a primeira desvia para uma locao de memria especificada e continua a execuo do programa, enquanto o call desviar o programa para uma subrotina especificada, executar a mesma, e aps executar a instruo return, retornar a execuo da instruo imediatamente aps a chamada call. O valor imediatamente aps a chamada call ser armazenado em uma rea particular da memria denominada Stack (pilha) [GAL99]. Veja o exemplo do quadro 9.

ORG Point1

00H

movlw 10 call goto Point2 movlw 11 return Point2 Point1

Quadro 9 Exemplo da instruo CALL Neste caso o PIC, aps ter executado movlw 10 passa a executar o call Point2. Antes de desviar, memoriza no Stack o endereo 0002H, ou seja, o endereo da prxima locao ao call. Passa ento a executar a instruo movlw 11, memorizada em correspondncia ao label Point2. Neste ponto encontra uma nova instruo, o return que, como se pode deduzir de seu nome, permite o "RETORNO", ou seja, retorne a execuo da instruo imediatamente aps o call.

29 Esta operao denominada de "chamada a subrotina", ou seja, uma interrupo momentnea do fluxo normal do programa para "chamar" a execuo de uma srie de instrues, para depois retornar a execuo normal do programa. Para poder retornar para onde havia interrompido, o PIC utiliza o ltimo valor armazenado no Stack e o coloca de novo no PC [GAL99]. A palavra stack em ingls significa "pilha" e por esse fato possvel empilhar um endereo sobre o outro para ser recuperado quando necessrio. Este tipo de memorizao era antes denominado de LIFO (do ingls Last In First Out), em que o ltimo elemento armazenado deve necessariamente ser o primeiro a sair. Graas ao Stack possvel efetuar vrios call, um dentro do outro e manter sempre o retorno ao fluxo do programa quando se encontra uma instruo return, como no exemplo do quadro 10.

ORG Point1

00H

movlw10 call Point2 Goto Point1 Point2 movlw11 call Point3 return Point3 movlw 12 return

Quadro 10 Exemplo da utilizao de vrias instrues CALL No exemplo acima, a rotina principal Point1 promove a chamada do primeiro call para subrotina Point2, a subrotina Point2 chama outra subrotina no caso Point3, este ltimo por sua

30 vez, encontra um return e retorna para Point2 que encontra o outro return e retorna para a execuo da rotina Point1 que no caso a principal. Os endereos a serem memorizados no stack so dois e quando vir a encontrar um segundo call procurar pelo return correspondente ao primeiro e assim por diante. Se diz ento que o call "aninhado", ou seja, um dentro do outro [GAL99]. importante assegurarse, durante a formulao de um programa que se tenha sempre uma instruo return em correspondncia a um call para evitar o perigo de desalinhamento do stack que em execuo pode gerar erros que dificilmente ser encontrado. O PIC16C84 dispe de um stack de 8 nveis, ou seja, um Stack que consegue armazenar no mximo 8 chamadas subrotina. Se mais de oito CALLs ou interrupes forem atendidas simultaneamente, o primeiro endereo de retorno ser perdido, sobrescrito pelo nono, e assim por diante, de forma circular. Este fato deve ser controlado pelo programador, pois os membros desta famlia no possuem sinalizadores de overflow ou underflow do Stack [SIL97]. No h nenhuma instruo que permita a manipulao da pilha (stack), ou seja, o programador no pode acess-lo [BEN96]. Isto se deve ao fato de que na famlia PIC16CXXX o stack no possui um registro de ponteiro (ou Stack Pointer), o qual torna-se um caminho para acess-lo, presente em microprocessadores comuns [SIL97].

3.4.2.4 PORTA A E PORTA B


O PIC16C84 necessita trocar informaes com o mundo real, por isso dispe de um total de 13 linhas de E/S organizadas em duas portas denominadas de PORTA A e PORTA B. A PORTA A dispe de 5 linhas configurveis tanto em entrada como em sada identificadas pelas siglas RA0, RA1, RA2, RA3 e RA4. A PORTA B dispe de 8 linhas tambm configurveis seja em entrada ou em sada identificadas pelas siglas RB0, RB1, RB2, RB3, RB4, RB5, RB6 e RB7. A subdiviso da linha em duas portas diferentes devido ao tipo de arquitetura interna do PIC16C84 que prev um controle de dados de no mximo 8 bits [GAL99]. Para o controle da linha de E/S do programa, o PIC dispe de dois registros internos que controlam as portas e so chamados de TRISA e PORTA para a porta A e TRISB e

31 PORTB para a porta B [SIL97].

Figura 11 Porta A e Porta B Os registros TRISA e TRISB determinaro o funcionamento em entrada ou em sada da mesma linha, ou seja, o sentido de transferncia. O registro PORTA e PORTB determinaro o status da linha em sada ou reportaro o status da linha em entrada [GAL99]. Isto permite que o projeto do hardware proporcione grande flexibilidade, usando um s pino com as duas funes. Todos os bits contidos nos registros mencionados correspondem univocamente a uma linha de E/S, ou seja, o bit 0 do registro PORTA e do registro TRISA correspondem a linha RA0 , o bit 1 a linha RA1 e assim por diante [BEN96].

32 Se o bit 0 do registro TRISA for colocado em zero, a linha RA0 estar configurada como linha de sada, por isso o valor a que ter o bit 0 do registro PORTA determinar o estado lgico de tal linha (0 = 0 volts, 1 = 5 volts). Se o bit 0 do registro TRISA for colocado em um a linha RA0 estar configurada como linha de entrada [GAL99]. Como um exemplo prtico, querendo conectar um LED sobre a linha RB0 e uma chave sobre a linha RB4, o cdigo a se escrever ser o contido no quadro 11, onde ser colocado em 0 o bit 0 (linha RB0) em escrita (sada), e em 1 o bit 4 (linha RB4) em entrada. importante lembrar que na notao binria do assembly, o bit mais a direita corresponde com o bit menos significativo, por isso o bit 0. Para acender o led, deve-se escrever o cdigo bsf PORTB,0, enquanto que para apag-lo deve-se escrever bcf PORTB,0.

movlw 00010000B tris B

Quadro 11 Cdigo para conexo de um LED a linha RB4 O cdigo que possibilita a leitura do estado da chave conectada a linha RB4 est expresso no quadro 12.

btfss goto goto

PORTB,4 SwitchAMassa SwitchAlPositivo

Quadro 12 Cdigo para leitura do estado da chave conectada a linha RB4

3.4.3 CONJUNTO DE INSTRUES DO PIC16C84


Como j foi visto, o conjunto de instrues do PIC16C84 formado por 35 instrues, todas formadas por apenas uma palavra de 14 bits. Nela esto identificadas o cdigo da

33 funo a ser executada, alm dos parmetros necessrios, como constantes, registros, bits [SIL97]. Na tabela 1 pode-se observar o resumo do conjunto de instrues destinada a operaes de byte com registros. Instruo ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF Operandos f,d f,d F f,d f,d f,d f,d f,d f,d f,d F f,d f,d f,d f,d f,d Descrio Soma w e f AND entre w e f Zera f Zera w Complementa f Decrementa f Decrementa f Pula se f=0 Incrementa f Incrementa f Pula se f=0 OR entre w e f Move f Move w para f Nenhuma operao Roda a esquerda pelo carry Roda a direita pelo carry Subtrai w de f Troca nibles em f XOR entre w e f Z Z C C C,DC,Z Z Z Bits afetados C,DC,Z Z Z Z Z Z -

Tabela 1 Instrues das operaes de byte com registros Na tabela 2 tem-se o resumo do conjunto de instrues destinada a operaes de bit com registros. Instrues BCF Operandos f,b Descrio Zera bit b em f Bits afetados -

34 BSF BTFSC BTFSS f,b f,b f,b Seta bit b em f Se bit b em f=0, pula Se bit b em f=1, pula -

Tabela 2 Instrues das operaes de bit com registros A tabela 3 mostra o resumo do conjunto de instrues destinada a operaes com constantes e de controle. Instruo ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW Operandos k K K K K K K K K Descrio Soma w e k AND entre w e k Chama sub-rotina Zera o timer do Watch Dog Desvia para o Label k OR entre w e k w=k Retorna da interrupo Retorna com w = k Retorna de sub-rotina Entre no modo SLEEP Subtrai k de w XOR entre w e k Bits afetados C , DC , Z Z TO\ , PD\ Z TO\ , PD\ C , DC , Z Z

Tabela 3 Instrues das operaes com constantes e de controle O significado das variveis utilizadas nas tabelas 1, 2 e 3 pode ser visto no quadro 13. f : registro entre 0 e 127 (0 7FH); b : bit utilizado pela operao; d : destino do resultado se d = 0, o resultado armazenado em W; se d = 1, o resultado armazenado no prprio registro indicado na operao. Quadro 13 Significado das variveis utilizadas nas tabelas 1, 2 e 3. w ou W : registro W; k : constante ou label;

35

3.4.4 CONSIDERAES SOBRE O MONTADOR DO PIC16C84


O formato do programa para esse microcontrolador segue o padro mostrado no quadro 14. Label:operao operando(s) ; comentrios

Quadro 14 Formato do programa O campo label facultativo e indica posies particulares do programa [SIL97]. um nome simblico mnemnico que est associado a um endereo. O termo mnemnico significa facilitar a memorizao. Serve tanto para atribuio de variveis como para destino de comandos goto. Os labels tem que estar na primeira posio da linha, ou seja, na coluna 1 [BEN96]. O campo operao sempre existe e indica qual operao a ser realizada. O campo operando(s) existir se for necessrio instruo. Aps o ; tudo ser ignorado pelo compilador, ou seja, tudo que vier depois dele ser considerado apenas comentrio [SIL97]. Segundo [BEN96,] este padro divide uma linha em trs colunas, isto para encontrar itens especficos. Por sua vez, essas colunas so utilizadas em cinco formas (sees): a) cabealho; b) seo equate; c) declarao do org (origin); d) corpo do programa; e) declarao do trmino do programa. As informaes no topo do programa so chamados de cabealho (header). Nesta parte ser definido, como no exemplo do prottipo, o tipo default das constantes por meio da diretiva radix dec (neste caso, o default ser decimal), e definir qual o grupo de comandos ser utilizado. Este grupo relativo ao microcontrolador para qual se est construindo o programa [BEN96]. Neste trabalho ser usado a linha de comando list p=16c84.

A diretiva list indicar ao montador que o grupo de comandos que esto sendo utilizados so para o microcontrolador PIC16C84.

36 A declarao EQU (equates), alm de servir para associar um label a um endereo especfico, usado tambm para associar nomes a nmeros. Neste trabalho a declarao ORG (origin) ter como propsito principal definir o endereo onde o programa comea. A declarao END usada para dizer ao montador que ele alcanou o fim do programa, ou seja, a ltima linha [BEN96]. Quanto as constantes, para o compilador elas tem o seguinte formato: a) Constante decimal: Dvalor ou dvalor; b) Constante binria: Bxxxxxxxx; c) Constante hexadecimal: 0xvalor ou valorH. O montador tem como padro valores hexadecimais, logo se no for indicado o tipo da constante o compilador assumir hexadecimal. Alm disso, importante saber que as constantes hexadecimais que iniciarem por letra (A-F) devem ser precedidas de 0 [SIL97].

37

4 TRABALHOS CORRELATOS
4.1 ONAGRO
Como no trabalho aqui proposto, o Onagro tambm um sistema de traduo que reconhece uma descrio de algoritmos em linguagem grfica e permite a gerao de cdigo em assembly para microcontroladores. Incorpora um editor grfico para a entrada do programa fonte que semelhante ao algoritmo descrito na linguagem fluxogramtica. ONAGRO possui uma interface amigvel, sendo implementado na linguagem visual C++ usando a metodologia de orientao a objetos. Os testes realizados mostraram que o ambiente proposto muito intuitivo e amigvel. Outro aspecto importante observado nos testes que o cdigo gerado provou ser compacto [UNI99].

4.1.1 AMBIENTE PROPOSTO


ONAGRO permite a entrada do dicionrio de dados e fluxogramas de uma aplicao e gera automaticamente o cdigo em assembly destas entradas. Os fluxogramas so introduzidos por um editor grfico, e esto compostos por cones de vrios tipos de operaes pr-definidas, ou por operaes definidas pelo usurio. Os cones sero unidos, determinando o fluxo de execuo. O dicionrio de dados composto de uma descrio de sinais de identificadores (constantes, variveis, portas de entrada e sada e sub-rotinas) usados no fluxograma [UNI99]. Depois da entrada do fluxograma e do dicionrio de dados, o usurio pode ativar o compilador para executar a alocao de dados e a converso das operaes dos cones para linguagem assembly. Tambm feita a ativao de um editor de ligao assembly para gerar o cdigo de mquina, como tambm a comunicao do ambiente programado com o sistema proposto, usando um programa de comunicao serial. A programao das interrupes dos microcontroladores, como tambm os dispositivos de timer e as interfaces de comunicao serial so feitas por dilogos amigveis com os usurios, permitindo uma abstrao melhor dos detalhes de operao dos recursos dos microcontroladores [UNI99].

4.1.2 OPES DE MENU DO ONAGRO


Quando o ONAGRO iniciado, uma janela chamada tela principal ativada. Esta tela,

38 mostrada na figura 12, composta de: a) menu para selecionar a tarefa que o usurio quer executar; b) a barra dos cones de Operao composta de botes pr-definidos, usados para representar as instrues da linguagem; c) barra de Ferramentas, tambm composta de botes que permitem a seleo do modo mais rpido das tarefas principais disponveis no menu; d) rea de desenho do programa fonte; e) linha de Status e Botes para rolar a rea de desenho.

Figura 12 Onagro: Tela principal

4.1.3 OS CONES DE OPERAO


Os cones de operao representam as operaes bsicas que podem ser executadas na linguagem. Eles so semelhantes a cdigos de operao de uma instruo de mquina, e indicam a natureza do processo que exigido para ser executado. Alm disso, necessrio que sejam indicados os parmetros que sero usados na operao. Estes parmetros so normalmente identificadores de variveis, portas de entrada e sada e identificadores de constantes. A linguagem oferece cones j definidos para executar as operaes mais comuns. Porm, cones mais especficos so oferecidos para aplicaes dedicadas. Alm disso, o

39 usurio pode criar seus prprios cones de operao e escolher qual tarefa dever ser executada. Eles so organizados em classes operacionais onde cada classe representada por uma figura diferente e indica um grupo de operao semelhante. Na maioria dos casos, o cone que representa a classe o mesmo que indica a operao mais usada nesta (figura 13 a). Porm, existem classes que tm um cone especfico para represent-lo, diferente das outras classes de cones de operao. Isto mostrado na figura 13 b [UNI99].

Figura 13 Onagro: cones

4.1.4 A ESTRUTURA DO CDIGO E OS MECANISMOS DE TRADUO


ONAGRO tem o cdigo orientado a cones e as operaes so descritas por um arranjo de smbolos padronizados (os cones de operao). Estes arranjos tm uma sintaxe guiada por um editor grfico, de tal modo que apenas as declaraes operacionais corretas so permitidas. No s reduz os testes de sintaxe em excesso que possa ocorrer nas linguagens tradicionais, mas tambm gera uma estrutura de cdigo mais previsvel ao compilador. Na gerao do cdigo, tentado escolher um mecanismo que seja o mais genrico possvel, conforme o tipo de microcontrolador. Assim, a parte principal do cdigo gerado usa as instrues essenciais e a arquitetura bsica dos registradores do microcontrolador. Obviamente, para cada microcontrolador as operaes so relacionadas a suas caractersticas, pois cada um tem suas particularidades [UNI99].

40

4.1.5 RESULTADOS
Foram executados dezoito testes com cinco aplicaes compiladas em dois tipos de modelos de memria. A inteno era comparar o tamanho de cdigo gerado pelo ONAGRO com outro compilador comercialmente disponvel. Foi escolhido utilizar o MCS-51 da famlia INTEL. Todos os testes feitos com o ONAGRO tambm foram realizados com o compilador C AVOCET que um compilador bem conhecido desta famlia. Analisando o grfico de barra (figura 14), nota-se que em todos os testes, exceto no nono e dcimo, o cdigo gerado pelo ONAGRO era menor que o gerado na linguagem C. Parte destes resultados foram obtidos porque ONAGRO tem, concernido na linguagem C, algumas restries relacionadas para o tipo dos dados manipulados [UNI99].

Figura 14 Onagro x Avocet C Outro fator importante que explica os resultados obtidos que h cones de operao especficos para operaes dedicadas no ONAGRO, designado em um modo aperfeioado. Em outra linguagem (no caso de linguagem C) estas mesmas operaes so compostas de instrues simples disponveis na linguagem, e sendo usado do modo correto, pode gerar cdigo em excesso. Afinal, o algoritmo de traduo usado pelo ONAGRO baseado no intercmbio de mensagens entre os objetos envolvidos nas operaes. Isto permitiu, em grande parte que o cdigo gerado era semanticamente correto, porque a maioria dos inconvenientes da generalizao de uma determinada operao so eliminadas pelo compilador, pela comunicao entre os elementos que compem tal operao. Porm, quando a aplicao usa sub-rotinas que entrem com parmetros e retornem algum valor, o ONAGRO

41 gerou cdigo pior que a linguagem C, como mostrado nos resultados obtidos nos testes 9 e 10. A anlise do cdigo gerado mostrou que os parmetros e a manipulao dos valores retornados feitos na linguagem C parece ser aperfeioada mais que no ONAGRO. Outros dados que conduziu a esta concluso o fato de que o cdigo gerado nos testes 11, 12, 13 e 14 estavam a favor do ONAGRO. Nestes testes foi usado tambm subrotinas sem parmetros ou retorno de valores [UNI99].

42

5 TTREE
5.1 INTRODUO
Um objeto TTree consiste de formas (shapes) e conexes em um estilo orientado rvore. Isto quer dizer que todo shape pode ter nenhum (raiz) ou vrios pais, e tambm pode ter nenhum ou vrios filhos. O TeeTree muito pequeno e no usa qualquer DLL do Windows, alm do consumo de memria ser extremamente baixo [TEE98]. Os componentes do TeeTree podem ser usados para muitos tipos diferentes de aplicaes, como grficos organizacionais, fluxogramas (veja na figura 15), diagramao, grficos de rede, enfim, para representar qualquer organizao de dados de forma hierrquica. Existem 3 classes chaves de componente, como pode ser visto na figura 15, as quais so:

Figura 15 Objeto Ttree

43 a) rvore (tree) rea pontilhada da figura 15; b) nodos (shapes) nmero 1 da figura 15; c) conexes (connections) nmero 2 da figura 15. Tanto a rvore (objeto Ttree) como todos os shapes tm muitas propriedades para customizar, utilizando mtodos e eventos para notificar cliques no shape, seleo, expanso/encapsulamento, etc. O tamanho da rvore (em pixels) e o nmero de nodos afetam proporcionalmente o desempenho da mesma. Interiormente, h uma hierarquia de classes com antepassados abstratos [TEE98].

5.2 PROPRIEDADES E MTODOS MAIS UTILIZADOS X MAIS IMPORTANTES


Na tabela 4 sero relatados alguns dos mtodos e propriedades mais utilizados e mais importantes para a implementao do prottipo. Propriedade/Mtodo Nome Propriedade Designing Descrio quando True, permite que o shape selecionado possa ser movido e redimensionado. Propriedade Connections contm uma lista de todos as conexes dos nodos. Quando indicado com um ndice, pode-se alterar caractersticas da conexo (linha) como por exemplo, tipo da linha e ponta da seta. Propriedade Selected Mtodo Clear (procedure) Mtodo AddRoot (function) Propriedade osition.Top Propriedade X0 coordenada do pixel do lado esquerdo do nodo. quando True, as coordenadas X0/Y0 so calculadas baseando-se AutoPosition.Left/AutoP na posio do nodo ascendente. contm uma lista de todos os nodos que esto selecionados no momento. exclui todos os nodos do objeto Ttree, ou seja, limpa a rea da rvore. inclui um nodo raiz no objeto Ttree.

44 Propriedade X1 Propriedade Xcenter Propriedade Y0 Propriedade Y1 Propriedade Ycenter Propriedade Style Propriedade Childs Mtodo AddChilds (function) (function) Mtodo MoveRelative (procedure) coordenada do pixel do lado direito do nodo. coordenada do pixel central/horizontal do nodo. coordenada do pixel superior do nodo. coordenada do pixel inferior do nodo. coordenada do pixel central/vertical do nodo. forma do nodo (crculo, retngulo, losngulo, etc). lista de nodos descendentes. Pode-se acessar os descendentes de um nodo indexando esta propriedade (Childs[i]). acrescenta um nodo descendente ao nodo selecionado, retornando o nodo criado. nodo passado na funo. Retorna a conexo criada. Incrementa o valor das propriedades X0 e Y0 do nodo, a partir dos parmetros passados. Tabela 4 Mtodos e propriedades do objeto Ttree No quadro 15 pode ser visto um exemplo da utilizao desses mtodos e propriedades.

Propriedade Brush.Color cor interna do nodo.

Mtodo AddConnections Acrescenta uma conexo ao nodo selecionado, destinando-se ao

procedure TForm1.FormActivate(Sender: TObject); var filho2:ttreenodeshape; begin Tree1.AddRoot('Raiz'); Tree1[0].expanded:=true; Tree1[0].AddChild('filho1'); filho2:=Tree1[0].AddChild('filho2'); Tree1[0].Childs[0].Style:=tsscircle; filho2.AddChild(''); filho2.Brush.Color:=claqua; end;

Quadro 15 Exemplo da utilizao de mtodos e propriedades do Ttree

45 Aps as linhas de cdigo descritas no quadro 15, o objeto Ttree (representado pela varivel Tree1) ficar com o aspecto da figura 16.

Figura 16 Tela exemplo de mtodos do objeto Ttree

46

6 ESPECIFICAO, IMPLEMENTAO E TESTES DO PROTTIPO


Na figura 17 est descrita a especificao do prottipo atravs de um DFD de nvel 0.

Figura 17 Especificao do prottipo O prottipo foi desenvolvido no ambiente de programao Delphi 3. Para a montagem do editor de fluxogramas foi utilizado um componente chamado Teetree (veja captulo 5). Tambm foram utilizadas algumas tcnicas de pesquisa em rvore, facilitadas devido a utilizao do Teetree. A partir do componente Teetree possvel montar o fluxograma, pois este contm mtodos e propriedades que dinamizam a construo de qualquer tipo de rvore. Neste trabalho, logicamente, cada nodo da rvore poder ter apenas um ascendente e um descendente, caractersticas dos fluxogramas, com exceo das condies, onde necessrio ter dois caminhos, sendo um para o sim e outro para o no. Como todo fluxograma necessita sinalizar o incio e o trmino, isto tambm ser implementado no prottipo, com

47 exceo dos fluxogramas com loop infinito. Para montagem do arquivo texto, ser utilizado um algoritmo recursivo, percorrendo todo a rvore (fluxograma) e copiando o contedo da propriedade text (linhas de texto) do componente Teetree para o componente memo do Delphi. Este ltimo componente armazena tambm linhas de texto e assim torna possvel gravar os dados para posterior montagem. Um objeto dito recursivo se ele consiste parcialmente ou definido sobre seus prprios termos. Recurso uma tcnica muito poderosa nas definies matemticas. A ferramenta necessria e suficiente para expressar programas recursivos so os procedimentos e subrotinas [WIR86]. A procedimentos que especifica a montagem recursiva do arquivo texto ser mostrada no item 6.1.9. Alm das facilidades que o prottipo incorpora por gerar cdigo assembly a partir de uma representao visual (fluxogramas) e operaes pr-definidas, tambm preocupou-se na simplicidade das telas, proporcionando pouca poluio visual e diminuindo o trabalho do usurio final, pois a interface homem-mquina se mostrou bem amigvel. Como j foi citado anteriormente, este prottipo foi disponibilizado na internet para qualquer pessoa interessada fazer os testes. Para tanto, esta verso foi traduzida para o ingls para melhor entendimento. Tanto as caractersticas visuais (telas) quanto as internas (cdigo) sero apresentadas neste captulo.

6.1 TELA PRINCIPAL


Como se pode ver na figura 18, na tela principal os botes de funes esto dispostas de modo a facilitar o trabalho do operador.

6.1.1 BOTES PADRES

48 Os botes New, Open, Save, Close e Exit tem funes muito parecidas com a de outros aplicativos. A procedure Salvar alm de salvar o arquivo .ASM (texto) para posterior montagem, salva tambm o fluxograma com todas as suas caractersticas (extenso .TEE).

Figura 18 Tela Principal

6.1.2 BOTES PROCESS E CONDITION


Com poucas diferenas, basicamente os botes Process e Condition - que so os mais utilizados - aps fazerem algumas consistncias, acionam uma outra tela (tela Process e tela Condition, respectivamente) onde sero escolhidas as operaes e condies que o futuro nodo ir representar. As consistncias so: a) algum nodo est selecionado: necessrio que algum nodo esteja selecionado para poder incluir um descendente, ou seja, um nodo filho (mtodo AddChild);

49 b) nodo selecionado nodo raiz (elipse, figura 18), ou nodo que contm variveis (retngulo fino, figura 18), ou nodo final, ou nodo condio: nos dois primeiros casos, no podem ser inseridos nodos pois os comandos s so aceitos aps a inicializao do programa, que corresponde ao terceiro nodo da figura 18. Aps o nodo final logicamente no podero ser inseridos novos comandos. Depois da condio sero inseridos automaticamente dois nodos um para a condio verdadeira; e outro para a condio falsa que forosamente sero os primeiros comandos a serem executados dependendo do resultado da condio. Se o nodo selecionado j tem algum descendente, ser chamada uma funo para inserir o novo nodo, depois do selecionado e antes do descendente do mesmo, retornando o nodo inserido. Esta funo cria uma rvore temporria, armazenando os descendentes do nodo selecionado, e aps ter sido includo o novo, acoplar a rvore temporria ao novo nodo. Demais diferenas entre esses botes esto na disposio visual (cor, forma e posio) e no fato j identificado acima, de que a condio ter automaticamente dois descendentes, o nodo que segue o resultado sim (yes) e o que segue o no (no).

6.1.3 BOTES GOTO E TO


O boto GOTO basicamente far a consistncia do nodo selecionado j ter alguma conexo, o que naturalmente o impossibilitaria de seguir outro caminho. Alm disso tambm desabilita os demais botes e tornando visvel sobre ele o boto TO, logo aps ter mostrado uma mensagem pedindo que selecione o nodo destino da conexo. O boto TO pedir o nome do rtulo (label), acrescentando ao nodo origem um comando goto e ao nodo destino um label. Esta operao pode ser identificada no quadro 16.

origem.AddConnection(destino); origem.Text.Add(' destino.Text.Insert(1,rotulo);

{conecta os dois nodos}

goto '+rotulo); {acrescenta linha de comando no nodo origem} {insere label no nodo destino}

Quadro 16 Adicionando uma conexo com GOTO

50 Aps estas operaes realizadas, ser habilitado os demais botes novamente.

6.1.4 BOTO END


Analisar se o nodo selecionado tem algum descendente e, em caso afirmativo, no poder ser inserido um trmino neste local. Em caso contrrio, acrescentar um nodo representando um fim do programa.

6.1.5 BOTO DELETE


Caracterizado por ter um nvel de complexidade maior quanto ao cdigo, este boto exclui somente um nodo, mesmo que tenha descendentes, o que no ocorre se for utilizado a tecla DEL (teclado). Se o selecionado tiver descendentes, seguir a mesma idia da insero de processos, utilizando uma rvore temporria para no perder os nodos subordinados. Sua complexidade a nvel de cdigo justifica-se pela performance. Se o nodo selecionado no tem sucessores, o exclui direto. Se selecionado uma condio e os nodos sim/no no tem descendentes, tambm exclui direto. Caso contrrio, chamar a procedure para no perder os demais nodos. Alm de todas as questes acima, ainda se preocupa com algumas consistncias: a) existe nodo selecionado; b) selecionado incio, rea de variveis, rea de inicializao ou nodos sim/no da condio.

6.1.6 REA DE DEFINIO DO ZOOM


Esta funo concentra-se no evento onexit do componente spinedit (rea para entrada de nmeros relativos ao campo ZOOM). A linha de comando para esta finalidade tree.ZoomCentered(EdZoom.value).

6.1.7 BOTO VARIABLES


Ativar a tela Declaration of Variables, onde estaro as funes para inserir e excluir as variveis (ser descrita mais adiante).

51

6.1.8 BOTO I/O


Ativar a tela I/O, onde estaro as funes para alterar a configurao inicial da porta A e da porta B, configurao realizada pelos registradores TRISA e TRISB, que como j foi visto, determina o estado das portas em entrada ou sada.

6.1.9 BOTO ASM FILE


Recursivamente, percorrer todo o fluxograma armazenando no componente memo (campo Assembly File) a propriedade text dos nodos. Ao final, acrescentar as linhas correspondentes ao trmino do programa. No quadro 17 observam-se as linhas de cdigo.

Procedure AddTreeMemo( Node : TTreeNodeShape ); var t, i : Integer; begin for i:=0 to node.Text.Count-1 do MmAsm.Lines.Add(Node.Text[i]); for t:=0 to Node.Childs.Count-1 do AddTreeMemo(Node.Childs[t]); end;

Quadro 17 Algoritmo recursivo Uma consistncia muito importante ser feita nesta ocasio: se existir algum nodo que no tenha seqncia, ou seja, um nodo final e no for o prprio END, mostrar uma mensagem alerta comunicando que poder ocorrer um erro de lgica, pois os fluxogramas tem que terminar com um nodo referente ao trmino da execuo. Essa pesquisa tambm ser feita recursivamente, indicando quantos nodos esto nessa condio.

6.2 TELA DECLARATION OF VARIABLES


Os botes ADD e DELETE simplesmente adicionam ou apagam variveis do componente listbox (campo variables). No ser permitido adicionar variveis se j estiverem

52 armazenadas 36, pois como j foi visto, a rea disponvel na memria do microcontrolador para este fim vai de 12 a 48 (decimal). O boto EXIT reconstruir o nodo de declarao de variveis com as mesmas armazenadas no listbox.

Figura 19 Tela Declaration of Variables

6.3 TELA: I/O INPUT/OUTPUT


Nesta tela ser definido o estado inicial de todos os bits, tanto do PORT A quanto do PORT B. Inicialmente, todos estaro setados, ou seja, como input (entrada=1), mas podero ser alterados a qualquer momento da criao do fluxograma. importante lembrar que esta tela se refere apenas ao estado dos bits no incio do programa, ou seja, se for necessrio alterar no cdigo aps comeo do programa, deve-se utilizar um processo atribuindo novos valores determinada porta. O boto OK se encarrega de transformar os ndices dos RadioGroup (campos relativos aos bits input/output), em valores hexadecimais, coloc-los no campo edit respectivo (campos PORT A e PORT B), e alterar o nodo correspondente ao incio do cdigo, onde esto definidos os valores iniciais das portas.

53

Figura 20 Tela Input/Output

6.4 TELA NEW PROCESS


Tela com alto nvel de complexidade com relao ao cdigo, pois nela comeam a serem feitas as primeiras consistncias referentes ao montador. Tanto esta quanto a tela Condition tem as operaes e condies pr-definidas, assim como os operadores e valores, tornando o erro mnimo, pois tudo que est disponvel na tela pode ser usado sem problemas na montagem. O boto to publish command line ser o responsvel por editar a linha de comando, bem como montar a ou as linhas de cdigo em assembly. Se algum dado (campo) necessrio para esta operao no estiver preenchido, o processo no ser concretizado, caracterizando uma das consistncias nessa tela. Os botes OK e Cancel simplesmente passam parmetros identificando se a operao deve ser concluda ou no.

54 As variveis contidas nos espaos variables1 e variables2 so buscadas no form (tela) referente declarao de variveis (tela: declaration of variables). Por estarem includas pela clusula include <P16C84.INC> contida no nodo referente a raiz do fluxograma e incio do cdigo assembly, as variveis PORT A e PORT B tambm estaro presentes nessa rea, podendo ser usadas (alteradas) em qualquer ponto do programa.

Figura 21 Tela New Process No ComboBox (campo command) estaro disponveis as operaes suportadas por este prottipo. Estas e suas respectivas linhas de cdigo geradas esto representadas na tabela 5. Comando Increment var Decrement var Move var to var Linhas assembly Incf variables1,1 Decf variables2,1 Movf variables1,w Movwf variables2

55 Move lit to var Clear bit Set bit Movlw value Movwf variables1 Bcf variables1,value Bsf variables1,value Tabela 5 Cdigo gerado pelo processo Dvidas sobre a sintaxe e funcionamento dos comandos assembly podem ser esclarecidas no captulo 3. importante lembrar que nas operaes que manipulam os bits de variveis, quando escolhido o PORT A, estaro disponveis os bits de 0 a 4, pois nesta porta existem apenas cinco pinos configurados como linhas de entrada e sada.

6.5 TELA: CONDITION


A base do funcionamento nessa tela segue a lgica da tela de insero de processos. As principais diferenas so: a) o campo do operando da condio (=, >, <, <>) e; b) operaes disponveis no prottipo. O item selecionado no campo do operando mais uma chave de pesquisa para montar as linhas em assembly. Esta afirmao e as novas operaes podem ser identificadas na tabela 6. Condio To compare var/var Linhas Assembly Movf variables2,0 Subwf variables1,0 * verifica operador To compare var/lit Movlw value Subwf variables1,0 * verifica operador Bit var = set Bit var = clear Btfss variables1,value Btfsc variables1,value

56 * verifica operador: a) se operador for sinal de igual (=) : comando b) se operador for sinal de maior (>) : comando c) se operador for sinal de menor (<) : comando btfss status,2 btfsc status,0 btfss status,0 btfsc status,2

d) se operador for sinal de diferente (<>) : comando

Tabela 6 Cdigo gerado pela condio Status se refere ao registro STATUS. Este registro possui oito bits (0-7), sendo que o bit 2 corresponde ao bit Z e o bit 0 corresponde ao bit C. Quando o bit 0 est aceso significa que w < f, caso contrrio w > f. Se o bit 2 estiver aceso significa que w = f, seno w <> f.

Figura 22 Tela Condition

57

6.6 TESTES
6.6.1 CIRCUITO BSICO PARA TESTES
Para a realizao dos testes foi montado um circuito bsico. Este pode ser identificado na figura 23.

Figura 23 Circuito bsico para os testes O pino Vdd (alimentao, pino 14) recebe uma tenso de 5V. O pino Vss (terra, pino 5) o retorno da corrente que circula dentro do circuito. Existem dois capacitores conectados em uma extremidade aos pinos OSC1 (pino16) e OSC2 (pino 15), e a outra a um cristal (Clock Oscillator). Esses capacitores sero os responsveis pela oscilao do cristal. Nos pinos RB0, RB1 e RB2 esto ligados trs LEDs, os quais no momento da execuo dos testes sero utilizados para visualizar os resultados. O pino MCLR (pino 4) estar recebendo uma corrente de 5V e, no momento que a chave for fechada, a corrente cair a zero caracterizando o reset do circuito.

58

6.6.2 TESTE COMPARATIVO


Um dos testes realizados foi a comparao do cdigo retirado de um exemplo do livro [BEN96] com o cdigo gerado no prottipo. No exemplo do livro h um fluxograma (figura 24) demonstrando o funcionamento do cdigo e, a partir desse, foi construdo o fluxograma no prottipo, e posteriormente, gerado o cdigo. Na figura 25 observa-se o fluxograma criado no prottipo.

Figura 24 Fluxograma teste retirado do livro [BEN96] No quadro 18 mostrado os dois cdigos sem comentrios para melhor comparao. Cdigo exemplo do livro [BEN96] list radix w equ p=16c84 hex 0 Cdigo gerado no prottipo List Radix p=16c84 dec

Include <P16F84.INC>

59 f status portb count start equ equ equ equ org movlw tris clrf clrf again movf movwf incf movlw subwf btfss goto circle goto end 1 0x03 0x06 0x0c 0x000 0x00 portb portb count count,w portb count,f 0x05 count,w status,2 again circle n1 goto y1 goto fim goto end Quadro 18 Comparao de cdigos testados Observa-se com isso que o prottipo gera linhas de cdigo corretamente em relao ao que foi descrito no fluxograma. Para leigos e iniciantes na programao do PIC, ele se torna um grande aliado no aprendizado, que, alm de mostrar a lgica de uma forma visualmente agradvel, pode-se comparar em momento de execuo o comando escolhido e sua(s) respectiva(s) linha(s) de comando em assembly. J para programadores experientes, apesar das vantagens visuais, no muito objetivo nos seus comandos. Esse problema surgiu para amenizar outros mais graves. Um exemplo prtico o que ocorre nas condies onde sempre tero instrues goto para seqncia tanto nas condies verdadeiras como nas falsas. fim fim again again movlw movwf movf movwf incf movlw subwf btfss goto goto 0 counter counter,w PORTB counter,1 5 counter,0 STATUS,2 n1 y1 counter equ org movlw tris movlw tris d'12' 0x000 0x1F PORTA 0x00 PORTB

60 Programadores experientes sabem que no assembly do PIC, uma instruo que representa uma condio (btfss, btfsc, etc.) saltar uma linha se a esta for falsa, o que no sabido por muitos iniciantes. Para evitar esses enganos e pela prpria lgica dos fluxogramas, esses gotos mascaram a admisso de mais de uma instruo no caso da condio ser falsa. importante ressaltar tambm que, no caso de necessitar que uma porta aceite um dado como entrada ou sada, o prprio programador deve atribuir os devidos valores para os bits atravs do registrador TRIS.

Figura 25 Fluxograma teste criado no prottipo Aps gerado o arquivo com extenso .ASM (arquivo texto), este foi montado utilizando-se o MPASMWIN (montador do PIC, figura 26), transformando em formato hexadecimal com extenso .HEX. A partir deste momento j possvel gravar o programa na memria do microcontrolador atravs do PIP02, programa freeware utilizado neste trabalho para acionar o programador (figura 27). Depois destas fases concludas, resetou-se o PIC para observar sua operao, mas no foi possvel verificar o incio do funcionamento dos LEDs

61 devido a alta velocidade de execuo, mas pode-se observar o ltimo valor escrito no PORT B. Em um segundo teste, acendia-se seqencialmente os trs leds do circuito de teste. Para comprovar se o resultado estava correto foi utilizado um osciloscpio, aparelho que permitiu a visualizao das oscilaes da corrente. Quando a corrente est presente (+5V, no caso) acende o LED, e quando no est (0V), apaga.

Figura 26 Tela MPASMWIN

Figura 27 Programador utilizado com o PIP02

62

7 CONCLUSO
Cada vez mais esto sendo disponibilizados componentes sofisticados a um custo baixo tanto para produo como para desenvolvimento e tambm sua utilizao est ficando cada vez mais fcil e acessvel, tornando-se uma tendncia mundial. Durante o desenvolvimento do trabalho, foi colocada na internet a idia que estava sendo implementada, e como j era previsto, teve uma tima aceitao e demonstrao de interesse. Na primeira semana foram recebidas cerca de 70 respostas de interessados, o que refora ainda mais a real necessidade de uma implementao nesse nvel, contendo uma forma visual de representao da informao para o microcontrolador. Algumas das respostas recebidas podem ser vistas no anexo 1. Aps os testes feitos no prottipo notou-se que, a construo de um programa torna-se muito mais agradvel e fcil de ser feita na forma visual, ou melhor, usando formas e cores que identificam melhor as operaes. Outras caractersticas importantes que torna uma implementao dessa proporo bem aceita ao pblico alvo, o fato de ter um tamanho reduzido e baixo consumo de memria, caractersticas herdadas do Ttree. A implementao mostrou-se muito amigvel, principalmente para iniciantes com pouco ou nenhum conhecimento sobre o microcontrolador, bem como a sua linguagem assembly, pois tendo as operaes pr-definidas no prottipo, sabendo-se o que preciso para fazer a aplicao gerar o resultado desejado (lgica), basta escolher as opes tambm prdefinidas e assim, o prprio prottipo se encarregar de montar o cdigo sem erros, pois no momento das escolhas j so feitas as consistncias. Como ainda no uma verso comercial, faltam ser implementadas algumas funes e melhoradas outras para se ter um aplicativo ideal. Tambm foi possvel observar que o conjunto de instrues reduzidas implementado nesse microcontrolador facilita o aprendizado e a construo de um prottipo para esta finalidade, podendo a partir desta implementao inicial, migrar para outros tipos de microcontroladores com certo nvel de facilidade.

63 O objeto Ttree auxiliou em muito, proporcionando vrias facilidades, mas ainda faltam algumas funes para se tornar um aplicativo ideal para este fim. Futuramente, para acrscimos de funes no prottipo, dever ser estudado e entendido melhor o funcionamento do objeto Ttree, sendo que alm de algumas funes existentes que ainda no foram aproveitadas no seu mximo, esto por serem implementadas novas caractersticas que facilitaro o melhoramento do projeto, segundo os desenvolvedores do aplicativo. Os testes mostraram que o prottipo auxilia muito o trabalho de iniciantes, pois cria programas para o PIC de uma forma agradvel e ao mesmo tempo os ensina mostrando o comentrio e logo a seguir a linha de comando respectiva. Esta concluso foi confirmada com as respostas de alguns beta testers que deram suas opinies, sugestes de melhoras e de acrscimos, ou seja, idias que contribuem para continuao do trabalho.

64

ANEXO 1 - TESTES DE USURIOS FINAIS


Seyler Jean-Ives [JEA99]: Trabalho bom, Como um iniciante no mundo do PIC, planejo usar seu trabalho para aplicaes simples. Embora o usei por poucos minutos, tenho perguntas e observaes: * H algumas palavras em portugus; * Poderia ser conveniente imprimir o fluxograma; * No gerenciamento de arquivos, deveria poder salvar sem ter que rescrever o nome ("Salvar ou Salvar Como "); * As setas para a escolha de condio tambm poderiam ser movidos manualmente, porque s vezes elas no so prendidas no lugar certo; * Como posso apagar uma label previamente colocado? * s vezes acontece uma " violao de Acesso quando lendo endereo 0A8 " * s vezes, alguns nodos desaparecem!!! De qualquer maneira um trabalho bom! Espero que voc continue melhorando isto!

Chaipi Wijnbergen [WIJ99]: Baixei o programa do fluxograma e rodei. No geral, gostei do que voc fez. Sei que alguns programadores tm dificuldades em entender qual a sintaxe correta: se (var1> var2)... ou se (var1 <var2). Acho que sua ferramenta muito boa para tais pessoas. No sou nenhum perito nos 84, mas penso que voc est perdendo alguns perifricos?! Assim, acho que voc tem um comeo muito agradvel. Sugeriria que voc tente somar os perifricos, e talvez se expande alm os 84. Tambm seria bom se voc mudasse o texto nos ttulos das janelas de portugus para ingls (como Novo Processo e na declarao de variveis).

65 Se voc tenta fechar a janela de declarao varivel sem digitar um nome de varivel, ocorre uma mensagem: "erro de violao de acesso"

James Newton [NEW99]: Bom: Realmente ele torna bvio como so formados os comandos na linguagem assembly. No posso imaginar uma ferramenta pedaggica melhor. excelente. Ao comear um novo documento, como ele mostrado, permite ao usurio entender o que o programa faz sem manuais ou instrues. Ruim: Eu fiquei um pouco confuso por um momento porque os novos nodos no apareciam depois de serem clicados duas vezes. Variveis adicionais e declaraes precisam de ser somadas. Sugestes O grid para os objetos deveriam ser ajustados de forma que as linhas entre eles permanecessem retas. Dimensionamento e a colocao automticos dos objetos como uma opo seria bom. Resumo No estou to certo quanto til seria a um programador profissional, mas como uma ferramenta de treinamento para pessoas novatas em microcontroladores ou em um ambiente pedaggico, por enquanto no posso imaginar nada melhor. Pergunta: Qual a licena nesta aplicao? Estar disponvel no futuro?

66

ANEXO 2 PIP02
Na figura abaixo pode-se observar a tel ado PIP02 e em seguida uma breve descrio dos comandos mais utilizados para realizao dos testes, ou seja, a gravao no PIC.

FILE/LOAD: carregar arquivo a ser gravado no PIC; SELECT/DEVICE: selecionar o dispositivo (tipo do PIC); SELECT/ FUSE WORD: determinar o tipo do cristal; DEVICE/PROGRAM FUSES: programar fusveis; DEVICE/PROGRAM: programao do PIC.

67

8 REFERNCIAS BIBLIOGRFICAS
[BEN79] [BEN96] [BER96] BENTES, Roberto de fino. Processamento de dados. Curitiba : Editer, 1979. BENSON, David. Easy PICn. Kelseyville : Square 1, 1996. BERNARDES, Lus Henrique Corra. Microcontroladores PIC. Saber Eletrnica. n. 284, p. 4-14, 1996. [BER97] BERNARDES, Lus Henrique Corra. Microcontroladores PIC. Saber Eletrnica. n. 292, p. 14-20, 1997. [GAL99] GALIZIA, Tiziano. Curso PIC16C84 1999. Endereo Eletrnico :

http://www.picpoint.com/. [HOR91] HORTON, William. Illustrating computer documentation: the art of presenting information graphically on paper. New York : Wisley, 1991. [JEA99] JEAN-IVES. Seyler. Avaliao do Prottipo. Endereo Eletrnico : jeanives.seyler@cnes.fr. Frana, 1999. [NEW99] NEWTON, James. Avaliao do Prottipo. Endereo Eletrnico :

eplus1@san.rr.com, 1999. [PIC95] [SIL97] CURSO PIC. Elector Eletrnica, n. 122, p. 19-22, fev. 1995. SILVA JNIOR, Vidal Pereira da. Microcontroladores PIC: Teoria e Prtica. So Paulo : V. P. Silva Jnior, 1997. [TEE98] TEETREE1.DOC. Caractersticas, propriedades e exemplos do componente TeeTree. David Bemeda. abr. 1998. http://www.teemach.com. Word 97. [UNI99] UNICAMP. Onagro mar. 1999. Endereo eletrnico :

http://www.demic.fee.unicamp.br/onagro.html.

68 [WIJ99] WIJNBERGEN, Chaipi. Avaliao do Prottipo. Endereo Eletrnico : chaipi@tohu0.weizmann.ac.il. 1999. [WIR86] Prentice-Hall, 1986. WIRTH, Niklaus. Algorithms and Data Structures. London :

Você também pode gostar