Revisão Linguagem C Parte 1 Comentários: Os comentários aparecem em verde e podem iniciados com /* e encerrados com */ quando utilizase várias linhas ou coloca-se // quando forem colocados em apenas uma linha. Diretivas de Pré-Processamento O comando #include inclui um arquivo header (cabeçalho) que contém as definições do microcontrolador utilizado (at89x52.h) assim como bibliotecas com funções em C. Função Principal void main ( ) Trata-se do bloco principal do programa que estará entre chaves. Atribuições Note que as atribuições são encerradas com ponto e vírgula ( ; ) e os valores em hexadecimal devem ser precedidos de 0x. Loop Infinito while (1) Todas as atribuições, comandos e estruturas que estiverem entre as chaves da estrutura while (1) serão repetidas em loop infinito. A Linguagem C é case sensitive Isto significa que o compilador diferencia letras maiúsculas e minúsculas. Todos os comandos em C são com letras minúsculas e os ports e entradas e saídas da placa são escritos com letras maiúsculas.
Operadores Operadores Lógicos OPERADORE LÓGICO! NOT & AND OR ^ XOR << n Desloca n bits à esquerda >> n Desloca n bits à direita Operadores Aritméticos OPERADORE ARITMÉTICO + OMA - UBTRAÇÃO / DIVIÃO % RETO DA DIVIÃO * MULTIPLICAÇÃO ++ INCREMENTO ( OMAR 1 ) -- DECREMENTO ( UBTRAIR 1 ) Operadores Relacionais OPERADORE RELACIONAI = = IGUAL A!= DIFERENTE DE < MENOR QUE > MAIOR QUE <= MENOR OU IGUAL A >= MAIOR OU IGUAL A
Variáveis Nomes Reservados pelo Padrão ANI-C auto break case char const continue default do double enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while main Outros nomes reservados pelo DCC: bit, interrupt, using, sfr Tipo e Valores Tipo de Dado bits bytes Valores bit 1 0 ou 1 char 8 1-128 a +127 unsigned char 8 1 0 a 255 int 16 2-32768 a +32767 unsigned int 16 2 0 a 65355 long 32 4-2147483648 a +2147483647 unsigned long 32 4 0 a 4294967295 float 32 4 ±1,17549 E-38 a ±3,402823 E+38 Exemplo: unsigned char CONTAGEM = 0; unsigned int i; Constantes #define MAIORIDADE 18 // diretiva de pré-processamento, não usa memória const unsigned char MAIORIDADE 18; // usa memória RAM do processador ou
Estrutura: if - intaxe: if (condição) Forma simplicada: if (condição) Exemplo: Exemplo1 DIP = 0xFF if ( DIP = = 0xFF) LED = 0xFF; LED = 0x00; Apaga LED DIP = 0x80 Acende LED if ( DIP = = 0x80) BZ = 0; BZ = 1; OU Desliga BZ Aciona BZ if ( DIP = = 0xFF) LED = 0xFF; LED = 0x00; if ( DIP = = 0x80) BZ = 0; BZ = 1;
Estrutura switch-case intaxe: switch (variável) case valor1: case valor2: case valorn: default: break :Força uma interrupção abrupta do bloco de uma estrutura switch, for, while e do while. continue: Ignora o resto das instruções do bloco e retorna ao início do bloco. Exemplo DIP = 0x00 DIP = 0x01 DIP = 0x02 DIP = 0x03 Apaga LED LED = 0x11 LED = 0xFF LED = 0xAA LED = 0x55
if (DIP==0x00) LED = 0x55; if (DIP==0x01) LED = 0xAA; if (teste == 0x02) LED = 0xFF; if (teste == 0x03) LED = 0x11; LED = 0X00; switch (DIP) case 0x00: LED = 0x55; case 0x01: LED = 0xAA; case 0x02: LED = 0xFF; case 0x03: LED = 0x11; default: LED = 0X00;
Estrutura: while intaxe: while (condição) Forma simplicada: while (condição) Exemplo PB = 0 Acende os LED Aciona BZ while ( PB = = 0) BZ = 0; BZ = 1; LED = 0xFF; Desliga BZ
Estrutura: do while intaxe: do while (condição); Na estrutura do while, realiza-se o bloco de instruções antes de verificar a condição para realizar o loop de repetição. Exemplo Aciona BZ Desliga BZ do BZ = 0; BZ = 1; while ( PB = = 0); LED = 0xFF; PB = 0 Acende os LED
Estrutura for intaxe: for (inicialização;condição;incremento) Forma simplicada: for (inicialização;condição;incremento) Exemplo 5 X Acende os LED Aciona BZ unsigned char i; for ( i = 0 ; i < 5 ; i ++ ; ) BZ = 0; BZ = 1; LED = 0xFF; Desliga BZ