Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
BANCA EXAMINADORA
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
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
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
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.
Processamento predeterminado
Deciso (smbolo usado para indicar a possibilidade de desvios para diversos outros pontos do programa de acordo com situaes variveis
processamento
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].
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.
12
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
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].
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].
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
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].
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.
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.
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].
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].
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.
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.
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
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].
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.
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.
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
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].
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.
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].
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:
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].
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.
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;
45 Aps as linhas de cdigo descritas no quadro 15, o objeto Ttree (representado pela varivel Tree1) ficar com o aspecto da figura 16.
46
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.
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).
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).
goto '+rotulo); {acrescenta linha de comando no nodo origem} {insere label no nodo destino}
51
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.
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.
53
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.
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
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.
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
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.
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
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 :