apostila curso micro control adores c

72
  UNIVERSIDADE FEDERAL DO PARÁ – UFPA INSTITUTO DE TECNOLOGIA – ITEC FACULDADE DE ENGENHARIA ELÉTRICA - FEE APOSTILA PROGRAMAÇÃO DE MICROCONTROLADORES DSPIC UTILIZANDO A LINGUAGEM C Elaboradores: Msc. Fabrício Gonzalez Nogueira Msc. Anderson Roberto Barbosa de Moraes Prof. Dr. Carlos Tavares da Costa Junior Prof. Dr. Walter Barra Junior

Upload: brunovf123

Post on 21-Jul-2015

378 views

Category:

Documents


4 download

TRANSCRIPT

UNIVERSIDADE FEDERAL DO PAR UFPA INSTITUTO DE TECNOLOGIA ITEC FACULDADE DE ENGENHARIA ELTRICA - FEE

APOSTILA PROGRAMAO DE MICROCONTROLADORES DSPIC UTILIZANDO A LINGUAGEM C

Elaboradores: Msc. Fabrcio Gonzalez Nogueira Msc. Anderson Roberto Barbosa de Moraes Prof. Dr. Carlos Tavares da Costa Junior Prof. Dr. Walter Barra Junior

SumrioMaterial Necessrio para o Curso: ......................................................................................... 4 1. Introduo ........................................................................................................................ 5 1.1. Apresentao do DSPIC .......................................................................................... 5 2. Introduo ao MPLAB .................................................................................................... 6 2.1. Criando um Projeto ................................................................................................. 6 2.2. Estrutura Bsica de um Programa em C para DSPIC ....................................... 10 2.3. Simulao do Cdigo Fonte no MPLAB .............................................................. 11 2.4. Visualizao da Memria de Programa ............................................................... 13 3. Gravador/Depurador ICD2 .......................................................................................... 14 3.1. Conectando a ICD2 ao DSPIC .............................................................................. 15 3.2. Programando o DSPIC com a ICD2 no MPLAB................................................ 16 4. Linguagem C no MPLAB .............................................................................................. 17 4.1. Comentrios............................................................................................................ 17 4.2. Variveis ................................................................................................................. 18 4.3. Vetores .................................................................................................................... 19 4.4. Strings ..................................................................................................................... 20 4.5. Matrizes .................................................................................................................. 20 4.6. Operadores Relacionais ......................................................................................... 21 4.7. Operadores Lgicos ............................................................................................... 21 4.8. Operadores Aritmticos e de Atribuio ............................................................. 22 4.9. Operadores Lgicos Bit a Bit ................................................................................ 23 4.10. Estruturas de Controle de Fluxo ...................................................................... 24 4.10.1. Comando IF .................................................................................................... 24 4.10.2. Comando Switch ............................................................................................ 25 4.10.4. Comando While.............................................................................................. 28 4.12. Diretivas de Compilao.................................................................................... 29 5. Caractersticas do DSPIC 30F2011 .............................................................................. 31 5.1. Caractersticas gerais............................................................................................. 31 5.2. Pinagem do Dispositivo.......................................................................................... 31 5.3. Ciclos de Mquina no DSPIC ............................................................................... 32 5.4. Configurando o DSPIC.......................................................................................... 32 5.4.1. Oscilador ......................................................................................................... 33 5.4.2. Clock Switching and Monitor ....................................................................... 33 5.4.3. Watchdog timer (Co de guarda) ................................................................. 33 5.4.4. Master Clear Enable ...................................................................................... 34 5.4.5. PBOR Enable ................................................................................................. 34 5.4.6. Brown Out Voltage ........................................................................................ 34 5.4.7. POR Timer Value .......................................................................................... 34 5.4.8. General Code Segment Code Protect ........................................................... 34 5.4.9. General Code Segment Write Protect .......................................................... 35 5.4.10. Comm Chanell Select ..................................................................................... 35 Prtica 1 Montagem do DSPIC no protoboard ............................................................. 35 6. Portas de Entrada e Sada do DSPIC........................................................................... 36 6.1. Registradores de Configurao de I/O ................................................................. 36 6.2. Acessando a Porta B .............................................................................................. 36 Prtica 2: Pisca LED .......................................................................................................... 38 Prtica 3: Leitura de porta digital. ................................................................................... 39 2

7.

Prtica 4: Pisca dois LEDs com Boto ............................................................................. 39 Mdulo Temporizador do DSPIC ................................................................................ 40 7.1. Noes bsicas ........................................................................................................ 40 7.2. Configurando o Timer para ser utilizado no cdigo........................................... 41 Prtica 5: Acende e apaga LED com temporizador; ...................................................... 44 Prtica 6: Gerao de PWM com temporizador. ............................................................ 44 8. Mdulo de Comunicao Serial;................................................................................... 46 8.1. Introduo .............................................................................................................. 46 8.2. Funo ConfigIntUART1 ...................................................................................... 46 8.3. Funo OpenUART1 ............................................................................................. 47 8.4. Parametro_STA: .................................................................................................... 48 8.5. Parmetro UBRG................................................................................................... 49 8.6. Funo ReadUART1( ) e DataRdyUART1( ) ...................................................... 50 8.7. Funo WriteUART1( ) e BusyUART1( )............................................................ 50 8.8. Conversor TTL-RS232 .......................................................................................... 51 Prtica 7: Envio de dados pelo mdulo de comunicao serial. .................................... 51 Prtica 8: Recepo de dados pelo mdulo de comunicao serial ............................... 52 Prtica 9: Recepo de dados pela serial e utilizao da interrupo do Timer.......... 53 9. Mdulo Conversor A/D de 12 bits; ............................................................................... 55 9.1. Introduo .............................................................................................................. 55 9.2. Funo de Transferncia do Conversor A/D ....................................................... 57 9.3. Etapas de converso ............................................................................................... 57 9.4. Registradores de Controle do Conversor A/D de 12 bits ................................... 58 9.5. Selecionando a Tenso de Referncia .................................................................. 58 9.6. Selecionando a Taxa de Converso do A/D ......................................................... 59 9.7. Selecionando as Entradas Analgicas para Converso A/D .............................. 59 9.8. Habilitando o Mdulo do Conversor A/D............................................................ 60 9.9. Iniciando o Processo de Amostragem do Conversor A/D .................................. 60 9.10. Parando a Amostragem e Iniciando a Digitalizao ....................................... 60 Prtica 10 Converso A/D com amostragem e digitalizao manual......................... 61 Prtica 11 Leitura de canal analgico com comunicao serial ................................. 62 9.11. Converso A/D com Amostragem Automtica ............................................... 62 Prtica 12 Converso A/D com Amostragem Automtica e Digitalizao Manual.. 62 9.12. Converso A/D com Amostragem Manual e Digitalizao Automtica ....... 63 Prtica 13 Converso A/D com Amostragem Manual e Digitalizao Automtica.. 64 9.13. Programando o Conversor A/D com a Biblioteca de Funes do C30.......... 65 10. Mdulo Output Compare .......................................................................................... 66 10.1. Introduo .......................................................................................................... 66 10.2. Modo de Operao PWM.................................................................................. 66 10.3. Registradores de Configurao ........................................................................ 66 Prtica 14: Gerao de PWM com o mdulo output compare. ..................................... 68 Prtica 15: Gerao de PWM com o mdulo output compare e macros do C30......... 69 Prtica 16: Leitura de Sinal Analgico e Escrita em Sada PWM ................................ 69 11. Projeto Final - Projeto de um Controlador Digital................................................. 71 12. Referncias Bsicas .................................................................................................... 72

3

Material Necessrio para o Curso: Computador com porta de comunicao serial RS-232 ou equipado com conversor USB-232 (um para cada bancada); Osciloscpio (um para cada bancada); Projetor multimdia. Gravadora de DSPIC; Instalador da Ferramenta de Programao MPLAB IDE; Instalador do Compilador C30 (verso de avaliao); Protoboard e componentes eletrnicos diversos; Apostila; Manual de referncia do DSPIC [1]; Datasheet do DSPIC30f2011 [2]; Manual da Biblioteca do Compilador C30 (LANGUAGE TOOLS LIBRARIES) [3].

4

1.

Introduo Esta apostila apresenta uma introduo sobre a programao de microcontroladores

DSPIC utilizando linguagem C. Dentre os tpicos abordados esto a configurao e uso das portas de entrada e sada, mdulo temporizador, mdulo de comunicao serial, mdulo de converso analgica-digital e mdulo para gerao de sinais PWM (modulao por largura de pulso, do ingls pulse width modulation). Para a realizao dos exemplos prticos dessa apostila, so necessrias ferramentas de software e de hardware. So utilizados dois programas, o ambiente de desenvolvimento MPLAB e o compilador C30. Para a montagem dos circuitos necessrio um protoboard ou uma placa de desenvolvimento. A gravao do cdigo fonte desenvolvido realizada atravs de uma grvadora ICD2. recomendado tambm o uso de osciloscpio. O compilador MPLAB C30 opera em conjunto com o ambiente de desenvolvimento da MICROCHIP, para isso ele deve ser instalado aps o MPLAB IDE e utilizado para a compilao da linguagem C nos controladores de sinais digitais. A Microchip disponibiliza uma verso grtis para estudantes que pode ser obtida diretamente de seu site. A literatura tcnica presente na Seo de Referncias dessa apostila possui informaes muito importantes para o aprendizado e uso no dia a dia do desenvolvedor de sistemas embarcados baseados em DSPIC. Essa apostila e os livros [1-3] apresentam em linguagem simples as funcionalidades do dispositivo. Porm, o aluno muitas vezes ter a necessidade de consultar informaes detalhadas que se encontram nos manuais tcnicos disponibilizados pelo fabricante [4-6]. 1.1. Apresentao do DSPIC O controlador de sinais digitais DSPIC da Microchip so dispositivos que absorvem as principais caractersticas do mundo dos microcontroladores ( baixo custo e variedade de perifricos internos), com a arquitetura voltada para o processamento em tempo real dos DSPs, assim, criando uma linha de dispositivos intermedirios. So dispositivos de alto desempenho, chegando a operar a 120 MHz. Os dsPICs esto disponveis em trs famlias, sendo estas as famlias de controle de motores, sensores e uso geral. Neste curso ser utilizado o DSPIC 30f2011, o qual pertence a ltima famlia citada.

5

2.

Introduo ao MPLAB MPLAB um software desenvolvido pela Microchip que utilizado como ambiente

de desenvolvimento de projetos para microcontroladores PICs e DSPICs. Com ele possvel desenvolver, compilar, simular e depurar o cdigo desenvolvido. O MPLAB pode ser obtido gratuitamente no site da Microchip (www.microchip.com). A verso utilizada neste curso a MPLAB IDE 8.76. 2.1. Criando um Projeto O MPLAB trabalha com o conceito de projeto. Um projeto abrange os cdigos-fonte e muitas outras informaes necessrias para a compilao e execuo da aplicao. A tela inicial do MPLAB apresentada na Figura 2.1.

Figura 2.1 Tela inicial do MPLAB.

A janela de arquivos do projeto apresentar todos os arquivos relacionados ao projeto. Para criar um novo projeto clique no menu Project -> New, abrir uma janela para inserir o nome e pasta do projeto, como ilustrado na Figura 2.2.

6

Crie o projeto com o nome Exemplo1 e determine uma pasta de destino onde o projeto ser salvo. A pasta de destino deve ser criada pelo usurio, caso contrrio o MPLAB perguntar se quer cri-la.

Figura 2.2 Janela para a criao de um novo projeto.

Aps a criao do projeto, observa-se que a janela de espao de trabalho (workspace) do projeto apresenta diversas pastas, como visto na Figura 2.3.

Figura 2.3 Janela com os arquivos do projeto Exemplo1.

Existem vrios tipos de arquivos, dentre eles tem-se: Source Files (Arquivos Fonte), composto por arquivos de programas feitos em assembler ou linguagem C. Header Files (Arquivos Cabealhos), composto por arquivos de especificaes do microcontrolador. Object Files (Arquivos Objeto), composto por arquivos objetos, arquivos prcompilados, muitas vezes so mdulos que so utilizados em vrios projetos (como rotina de display LCD, sensors, etc). So utilizados para ter-se um processo de compilao mais rpido. Library Files (Arquivos Biblioteca), composto por bibliotecas de sub-rotinas que so chamadas pelo arquivo fonte. Linker Script um arquivo necessrio para a compilao do projeto.

7

O MPLAB um ambiente integrado de desenvolvimento, visto que este permite a utilizao de diversas linguagens de programao, tais como C, Assembler, Basic, dentre outras. Dessa forma, deve-se informar ao MPLAB qual linguagem de programao ser utilizada no projeto. Esta seleo realizada no menu Project -> Select Language Toolsuite. A janela da Figura 2.4 abrir. Note que em Active Toolsuite est selecionada a opo default, que o Microchip MPASM. Altere para Microchip C30 Toolsuite, que a ferramenta de programao em linguagem C para o DSPIC.

Figura 2.4 Janela de seleo de linguagem de programao.

Outra configurao que deve ser realizada a seleo do componente a ser utilizado. Esta ao realizada no menu Configure-> Select Device. A janela da Figura 2.5 ser aberta e no campo Device selecione o DSPIC 30F2011.

Figura 2.5 Janela de seleo de linguagem de programao.

8

O prximo passo criar e adicionar os arquivos do projeto. necessrio a incluso de dois arquivos, o arquivo Library (bibilioteca) e o arquivo Linker (Conexo). Estes arquivos so utilizados no momento da compilao do C30. Para isto, na rea de trabalho do projeto clique com o boto direito do mouse na pasta Libray Files e em seguida em Add Files. Se voc instalou o compilador C30 na pasta padro informada na instalao, o arquivo est disponvel na pasta C:\Arquivos de Programas\Microchip\MPLAB C30\Lib\. Dentre os arquivos contidos na pasta, selecione a opo libp30F2011-coff.a. Para selecionar o arquivo Linker, clique com o boto direito em Linker scripts e em seguida Add Files. Selecione o arquivo p30F2011.gld na pasta C:\Arquivos de programas\Microchip\mplabc30\v3.30\support\dsPIC30F\gld. A partir deste ponto o projeto est pronto para a criao do arquivo com o cdigo fonte. Observe que o campo Source Files da rea de trabalho do projeto no apresenta nenhum arquivo fonte. Para criar um arquivo novo clique no menu da barra de ferramentas File -> New. Salve este novo arquivo no menu File -> Save. Salve o arquivo na pasta onde o projeto foi salvo, com o nome Cdigo_Exemplo1.c. A extenso .C utilizada para representar que este arquivo se trata de um arquivo fonte a ser compilado pelo compilador C. Agora que o arquivo foi criado, deve-se associar este arquivo ao projeto. Para isso, clique como boto direito do mouse na opo Source Files da rea de trabalho do projeto. Em seguida clique em Add Files e selecione o arquivo fonte que foi salvo na pasta do projeto. O projeto est pronto para a entrada de instrues e compilao do cdigo fonte. O processo de compilao trata da conveso do cdigo desenvolvido no arquvo .C para um cdigo no qual o microcontrolador consiga entender, que o cdigo de mquina. Para iniciar o processo de compilao clique no menu Project -> Make, ou pressione a tecla F10 o teclado. Sempre aps a compilao, aberta uma janela denominada Output, que tem a funo de apresentar ao desenvolvedor o resultado da compilao do cdigo do projeto. Note que a tela da Figura 2.6 foi apresentada aps a realizao do projeto. Neste caso, o MPLAB encontrou uma falha no processo de compilao, pois retornou um erro denominado BUILD FAILED (erro de compilao). O erro aconteceu devido no haver nenhum cdigo escrito no arquivo fonte do projeto.

9

Figura 2.6 Falha de compilao no MPLAB.

2.2.

Estrutura Bsica de um Programa em C para DSPIC A sintaxe bsica de um programa em C para DSPIC : #include main() { } O cdigo apresentado acima o cdigo bsico para um programa em C. A primeira

linha, onde h o #include chamado de arquivo de cabealho e neste que deve ser definido qual o DSPIC que ser utilizado no projeto. No caso desse curso, esta linha ficar da seguine forma: #include . O bloco main (principal) a rotina principal do programa. Entre as duas chaves que compem o main(), ser feita toda lgica de funcionamento do projeto. O cdigo ficar dessa fora ento:

10

#include main() { } Digite este cdigo no arquivo fonte e em seguida compile o mesmo. Observe que na linguagem C existe diferena entre letras minsculas e maisculas. Note na Figura 2.7 que na janela Output apresentada uma mensagem informando que a compilao foi bem sucedida (BUILD SUCCEEDED).

Figura 2.7 Compilao realizada com sucesso no MPLAB.

Sempre que uma compilao foi realizada com sucesso, criado um arquivo com extenso .hex na pasta do projeto. O MPLAB utiliza este arquivo para a gravao do programa no microcontrolador. 2.3. Simulao do Cdigo Fonte no MPLAB

11

O MPLAB possui uma ferramenta para a simulao do cdigo C desenvolvido. O simulador habilitado no menu Debugger -> Select Tool -> MPLAB SIM. Aparecer uma barra de ferramentas conforme a tela ilustrada na Figura 2.8.

Figura 2.8 Janela do MPLAB SIM.

A partir desses botes o desenvolvedor pode avanar a execuo do programa de forma manual, instruo por instruo. O Boto Run (Executar) permite executar o

programa continuamente, como se estivesse rodando no microcontrolador. O boto Pause (pausa) utilizado para parar a execuo do programa caso o mesmo esteja sendo simulado. O terceiro boto, Animate (animao) , similar ao Run, porm neste caso existe um tempo de atraso entre a execuo de duas linhas de cdio, o que permite o desenvolvedor observar o que est ocorrendo com o programa durante a execuo. A execuo do cdigo passo a passo pode ser realizada pelo boto Step Into chamadas, ou pelo boto Step Over , o qual entra dentro das rotinas

, execuo passo a passo do programa no entrando reincia o programa e o boto breakpoint

dentro das rotinas chamadas. O boto Reset

define um ponto de parada de execuo. Quando o programa estiver em execuo e alcanar o ponto com o breakpoint o programa pra e aguarda a continuidade de execuo do programa atravs da interveno do usurio. Para inser-lo clique um pouco antes do incio

12

da linha onde se quer inserir o breakpoint, aparecer um crculo vermelho com a letra B dentro, como visto na Figura 2.9. Para a visualizao de variveis e registradores durante a execuo do programa o MPLAB possui a janela Watch, que acessada pelo menu View -> Watch (Figura 2.10). Para inserir um registrador clique sobre a linha em branco, no campo Symbol Name e escreva o nome do registrador. Para selecionar um registrador especial pode-se selecionar e depois clicar no boto Add SFR.

Figura 2.9 Simulao de cdigo no MLPAB SIM.

2.4.

Visualizao da Memria de Programa A memria de programa e de dados utilizada no programa que est sendo

desenvolvido no MPLAB pode ser visualizada atravs do menu View -> Memory Usage Gauge. Aps clicar nesse menu, aparecer uma janela conforme a Figura X.

Figura 2.10 Quantidade de memria disponvel no DSPIC.

13

3.

Gravador/Depurador ICD2 Os programadores realizam a gravao do cdigo de mquina que vem dos ambientes

de desenvolvimento integrado no componente. Para os controladores de sinais digitais dsPICs existem alguns modelos de programadores que geralmente tambm so depuradores. A caracterstica de depurao em tempo real significa que possvel rodar o firmware passo a passo. Da mesma forma como se faz a simulao no ambiente de desenvolvimento integrado, pode-se fazer diretamente no componente. Esta uma possibilidade que facilita muito na verificao do cdigo e na busca de erros no software. Esse processo geralmente denominado de depurao In-Circuit. Para os controladores de sinais DsPICs temos o programador e depurador ICD2 (Figura 3.1) que um equipamento produzido pela Microchip que possui uma caracterstica interessante. Ele tem em seu interior um software que controla a gravao dos componentes. Mas a cada programao ele baixa automaticamente suas caractersticas, permitindo sempre estar atualizado como melhor processo de gravao e tambm oferece a possibilidade de trabalho com novos componentes. Essas informaes vm junto com o MPLAB IDE, por isso sempre interessante utilizar a ltima verso do MPLAB IDE.

Figura 3.1 Gravadora ICD2. O ICD2 se comunica com o computador atravs de uma interface porta USB. A porta USB tem capacidade de alimentar a aplicao, mas com um determinado limite de corrente. Aplicaes que contenham motores, rels, devem ser alimentadas por uma fonte externa. Esse limite deve ser respeitado; caso contrrio pode ocorrer algum dano nos equipamentos envolvidos.

14

Outra caracterstica dessa ferramenta est associada forma de conexo com o componente, pois ela no possui nenhum socket. O ICD2 deve ser ligado diretamente aplicao, fornecendo uma gravao In-Circuit. O driver da ICD2 j faz parte do pacote de ferramentas do MPLAB. A configurao da ferramenta de programao ICD2 facilmente realizada com a ajuda de um assistente de configurao existente no MPLAB. Para selecionar a ICD2 como ferramenta de programao, clique no menu Programmer -> Select Programmer -> MPLAB ICD2. A confugurao da ICD2 pode ser realizada por um assistente, no menu Programmer -> MPLAB ICD2 Setup Wizard. 3.1. Conectando a ICD2 ao DSPIC A conexo entre a barra de pinos da ICD2 (conector header) e os pinos do DSPIC realizada basicamente por 4 fios, assim como ilustrado na Figura 3.2. O sinal ligado ao pino MCLR do microcontrolador atingir uma tenso de aproximadamente 13V durante a gravao, por este motivo, o DSPIC a ser gravado in-circuit no pode estar com o MCLR ligado diretamente ao +5V. Recomendamos o uso de um resistor de 10K ligando o MCLR ao +5V, de forma que a tenso de gravao (+13V) possa ser aplicada ao pino MCLR sem problemas. Quanto aos pinos SCK (clock) e SDA (dados) utilizados pela gravao, deve-se observar o sentido de corrente em relao ao circuito j presente na placa. Caso os pinos PGD e PGC do DSPIC sejam compartilhados entre a ICD2 e outros circuitos, o ideal isolar os circuitos do ICD2 atravs de dois resistores de pelo menos 1kW. A figura abaixo ilustra a forma de conectar o gravador ao DSPIC para gravao in-circuit.

Figura 3.2 Conexo entre a ICD2 e o DSPIC.

15

A Tabela 3.1 apresenta a conexo entre os pinos da ICD2 e do DSPIC. Note que na Figura X no foi utilizado o pino 3 da ICD2 (VDD = 5Vcc), pois a alimentao do circuito foi realizada por uma fonte externa, ao invs da prpria ICD2. Tabela 3.1 - Pinos de conexo do ICD2. ICD2 Conector Header Pino Funo 1 No usado 2 GND 3 4 5 6 VDD SCK SDA VPP DSPIC 30F2011 Pino Funo No usado No usado 13 VSS 14 12 11 1 VDD (Opcional) PGC PGD MCLR

3.2. Programando o DSPIC com a ICD2 no MPLAB A gravadora ICD2 acessada diretamente pela interface do MPLAB. Os comandos para gravao podem ser acessados diretamente na barra de ferramentas para programao ou atravs do menu Programmer. Aps a compilao e configurao do dispositivo, o cdigo est pronto para gravao no DSPIC, o que realizado a partir do menu programmer >program.

Quando este comando executado, a ICD2 automaticamente apaga o dispositivo,

grava o novo cdigo e verifica a gravao.

16

4.

Linguagem C no MPLAB Nesta seo da apostila so apresentados os conceitos bsicos da linguagem de

programao C a qual tem se tornado cada dia mais popular, devido sua versatilidade e ao seu poder. Um ponto de suma importncia no C "Case Sensitive", isto , maisculas e minsculas fazem diferena. Se declarar uma varivel com o nome soma ela ser diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos do C if e for, por exemplo, s podem ser escritos em minsculas pois seno o compilador no ir interpret-los como sendo comandos, mas sim como variveis. 4.1. Comentrios Os comentrios de um cdigo desenvolvido em linguagem C so de vital importncia para a rpida compreenso do programa durante atualizaes futuras. Sempre que o compilador encontrar algo comentado, o mesmo simplesmente o ignora, assim o comentrio possui somente funcionalidade ao desenvolvedor. Existem duas formas de comentrios aceitas: Tipo //... /* ..... */ Funcionalidade Comentrio de fim de linha, significa que tudo que estiver aps o // comentrio, ele perde o efeito ao terminar a linha; Comentrio de mltiplas linhas, tudo que estiver entre /* e */ ser considerado comentrios.

Veja os dois tipos de comentrios no exemplo abaixo:

#include // Arquivo de cabealho definindo o DSPIC20f2011 main() { } /* Meu primeiro programa Na linguagem C */ // Bloco principal do programa

17

4.2.

Variveis As variveis so espaos de memria que podem ser modificados ao longo da

execuo do programa. Existem algumas regras gerais para a utilizao de variveis: Todas as variveis devem ser previamente declaradas antes de serem utilizadas; Todo nome de varivel iniciado por uma letra (a-z ou A-Z) ou o caracter trao baixo (_), e o restante do nome pode ser composto por letras, trao baixo ou nmeros. O nome de uma varivel no pode coincidir com algumas palavras reservadas da linguagem C, tais como: void, main, break, for, while, if, dentre outras. O nome de uma varivel no pode ser igual ao nome de uma funo declarada pelo programador, ou pelas bibliotecas do C. O C tem 5 tipos bsicos de variveis: char, int, float, double e long. Para cada um dos tipos de variveis existem os modificadores de tipo. Os modificadores de tipo do C so quatro: signed, unsigned, long e short. Ao float no se pode aplicar nenhum e ao double pode-se aplicar apenas o long. Os quatro modificadores podem ser aplicados a inteiros. A Tabela X apresenta os tipos e os respectivos tamanhos de variveis disponveis no C.

Tipochar unsigned char signed char int unsigned int signed int short int unsigned short int signed short int long int signed long int unsigned long int float double long double

Num de bits8 8 8 16 16 16 16 16 16 32 32 32 32 64 80

Intervalo Inicio-128 0 -128 -32.768 0 -32.768 -32.768 0 -32.768 -2.147.483.648 -2.147.483.648 0 3,4E-38 1,7E-308 3,4E-4932

Fim127 255 127 32.767 65.535 32.767 32.767 65.535 32.767 2.147.483.647 2.147.483.647 4.294.967.295 3.4E+38 1,7E+308 3,4E+4932

18

A forma geral da declarao de variveis : tipo_da_varivel lista_de_variveis; As variveis da lista de variveis tero todas o mesmo tipo e devero ser separadas por vrgula. H trs lugares nos quais podemos declarar variveis. O primeiro fora de todas as funes do programa. Estas variveis so chamadas variveis globais e podem ser usadas a partir de qualquer lugar no programa. Pode-se dizer que, como elas esto fora de todas as funes, todas as funes as vem. O segundo lugar no qual se pode declarar variveis no incio de um bloco de cdigo. Estas variveis so chamadas locais e s tm validade dentro do bloco no qual so declaradas, isto , s a funo qual ela pertence sabe da existncia desta varivel, dentro do bloco no qual foram declaradas. O terceiro lugar onde se pode declarar variveis na lista de parmetros de uma funo. Mais uma vez, apesar de estas variveis receberem valores externos, estas variveis so conhecidas apenas pela funo onde so declaradas. Veja por exemplo o programa abaixo:

#include

// Arquivo de cabealho definindo o DSPIC20f2011

char letra;unsigned int numero1, numero2; main() { float soma = 0.0; }

// varivel global do tipo char // varivel global do tipo inteiro// Bloco principal do programa

// varivel local do tipo float

So declaradas duas variveis globais tipo int (numero1 e numero2) e uma varivel global do tipo char (letra). Dentro da funo main declarada uma varivel local do tipo float (soma), a qual inicializada com o valor 0,0. 4.3. Vetores Vetores so uma estrutura de dados muito utilizada. importante notar que vetores, matrizes bidimensionais e matrizes de qualquer dimenso so caracterizadas por terem todos

19

os elementos pertencentes ao mesmo tipo de dado. Para se declarar um vetor podemos utilizar a seguinte forma geral: tipo_da_varivel nome_da_varivel [tamanho]; Quando o C v uma declarao como esta ele reserva um espao na memria para armazenar o nmero de clulas especificadas em tamanho. Por exemplo, se declararmos: float exemplo [20]; o C ir reservar 4x20=80 bytes. Estes bytes so reservados de maneira contgua. Na linguagem C a numerao comea sempre em zero. Isto significa que, no exemplo acima, os dados sero indexados de 0 a 19. Para acess-los vamos escrever: exemplo[0], exemplo[1], ...,exemplo[19] 4.4. Strings Strings so vetores do tipo char. Devemos apenas ficar atentos para o fato de que as strings tm o seu ltimo elemento como um '\0'. Dessa forma, deve-se lembrar que o tamanho da string deve incluir o '\0' final. A biblioteca padro do C possui diversas funes que manipulam strings. A declarao geral para uma string : char nome_da_string [tamanho]; 4.5. Matrizes J vimos como declarar matrizes unidimensionais (vetores). Vamos tratar agora de matrizes bidimensionais. A forma geral da declarao de uma matriz bidimensional muito parecida com a declarao de um vetor: tipo_da_varivel nome_da_varivel [altura][largura]; muito importante ressaltar que, nesta estrutura, o ndice da esquerda indexa as linhas e o da direita indexa as colunas. Mais uma vez bom lembrar que, na linguagem C, os ndices variam de zero ao valor declarado menos um. Manter os ndices na faixa permitida tarefa do programador. O uso de matrizes multidimensionais na linguagem C simples. Sua forma geral : tipo_da_varivel nome_da_varivel [tam1][tam2] ... [tamN];

20

Podemos inicializar matrizes, assim como podemos inicializar variveis. A forma geral de uma matriz com inicializao : tipo_da_varivel nome_da_varivel [tam1][tam2] ... [tamN] = {lista_de_valores}; A lista de valores composta por valores (do mesmo tipo da varivel) separados por vrgula. Os valores devem ser dados na ordem em que sero colocados na matriz. Abaixo vemos alguns exemplos de inicializaes de matrizes: float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 }; int matriz [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; char str [10] = { 'J', 'o', 'a', 'o', '\0' }; char str [10] = "Joao"; char str_vect [3][10] = { "Joao", "Maria", "Jose" }; O primeiro demonstra inicializao de vetores. O segundo exemplo demonstra a inicializao de matrizes multidimensionais, onde matriz est sendo inicializada com 1, 2, 3 e 4 em sua primeira linha, 5, 6, 7 e 8 na segunda linha e 9, 10, 11 e 12 na ltima linha. No terceiro exemplo vemos como inicializar uma string e, no quarto exemplo, um modo mais compacto de inicializar uma string. O quinto exemplo combina as duas tcnicas para inicializar um vetor de strings. Repare que devemos incluir o ; no final da inicializao. 4.6. Operadores Relacionais Os operadores relacionais do C realizam comparaes entre variveis. Os operadores relacionais retornam verdadeiro (1) ou falso (0). So eles:

Operador > >= < => x=x+1; x=x-1;

#include main() { float entrada= 3.0, sada=0.0; float min = -2.0; float max = 7.0;

// Arquivo de cabealho definindo o DSPIC30f2011 // Bloco principal do programa // variveis locais // varivel local // varivel local // normalizao entre 0 e 1

saida = (entrada-(min))/((max)-(min)); }

4.9.

Operadores Lgicos Bit a Bit O C permite que se faa operaes lgicas "bit-a- bit" em nmeros. Ou seja, neste

caso, o nmero representado por sua forma binria e as operaes so feitas em cada bit dele. Imagine um nmero inteiro de 16 bits, a varivel i, armazenando o valor 2. A representao binria de i, ser: 0000000000000010 (quinze zeros e um nico 1 na segunda posio da direita para a esquerda). Poderemos fazer operaes em cada um dos bits deste nmero. Por exemplo, se fizermos a negao do nmero (operao binria NOT, ou operador binrio ~ em C), isto , ~i, o nmero se transformar em 1111111111111101. As operaes binrias ajudam programadores que queiram trabalhar com o computador em "baixo nvel". As operaes lgicas bit a bit s podem ser usadas nos tipos char, int e long int. Os operadores so:

23

Operador & | ^ ~ >> >nmero_de_deslocamentos valor