Escolar Documentos
Profissional Documentos
Cultura Documentos
/* HELLO.C */
#include <reg51.h> /* biblioteca que faz o programa reconhecer os Special Function Registers */
#include <stdio.h> /* biblioteca de funcao de entrada e saida de dados */
/****************/
/* main program */
/****************/
1
Programa Exemplo No 2 - Ilustra a utilização de ponteiros
/* HELLO2.C */
#include <reg51.h>
#include <stdio.h>
/****************/
/* main program */
/****************/
while (1);
2
Programa Exemplo No 3 - Programa para acender leds conectados à porta 1 e rotacioná-los para direita
ou esquerda conforme nivel de tensão no bit P3.5.
/*
LED.C
*/
/* declaracao de funcoes */
/* variáveis globais */
sbit ch1 = P3 ^ 5;
unsigned char contador;
unsigned char saida;
/****************/
/* main program */
/****************/
void main (void) {
TMOD = 0x10;
TCON = 0;
P1 = 0;
saida = 1;
while (1) {
P1 = saida;
delay();
if(ch1 == 1) {
saida=saida<<1;
if (saida==0) saida=1;
}
else
{
saida = saida >> 1;
if (saida == 0) saida = 128;
}
} /* end of while */
3
TR1 = 1;
while (!TF1) {}
TF1=0;
} /* end of for*/
TR1 = 0;
} /* end of delay */
4
Programa Exemplo No 4 - Ilustra o modo de tratar interrupções na linguagem C, empregando
transmissão e recepção de dados. Conta o número de zeros recebidos em ASCII (0x30) e os
valores não zeros recebidos. Obs: para visualizar os dados de saída, acione VIEW, HARDWARE
e UART. Selecione apenas TRM e ASCII. Digite dados no buffer de entrada e coloque o dado ‘x’
que encerra a transmissão */
/*
INTER.C
*/
#include <stdio.h>
/* variáveis globais */
/****************/
/* main program */
/****************/
EA = 1;
ES = 1;
SBUF = tm;
while (SBUF != 'x'); /* enquanto não le detecta um ‘x’ na porta serial, executa... */
/* lembrar que buffer de saida e de entrada são diferentes embora
tenham mesmo endereco */
}/*end of main*/
5
void serial(void) interrupt 4 using 3 { /* especifica interrupção serial (no 4) e banco de registradores (3)
*/
int count1 = 0;
int count0 = 0;
default:
count1++;
}
}
TI=0;
tm++;
SBUF = tm;
6
Programa Exemplo No 5 - Ilustra o emprego de funções e operadores matemáticos do compilador para
calcular a função coseno de a 2 em passos de 0.1 rad.
/*
COS.C
*/
/* declaracao de funcoes */
void tcos(float);
/****************/
/* main program */
/****************/
void main (void) { /* execution starts here after stack init */
float x=-0.1;
tcos(x);
}
}/*end of main*/
v = cos(u);
printf("cos(%f) = %f\n",u,v);
}
Programa Exemplo No 6 - Rotinas para a escrita de mensagem no display do kit do 8051. Para gerar
arquivo com a extensão HEX ir no menu de opções, selecionar
/* bibliotecas do C */
7
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <reg51.h>
#include <absacc.h>
/* declaração de funções */
void NWRITE (char *,short); /* função que envia caracteres para display */
void INITDP (void); /* função que inicializa o display */
/*
como parametros são passados ponteiro para a string de caracteres
e para ONDE enviar os dados; incialização e dados sao escritos em locais
diferentes
*/
8
for(x=0;x<180;x++); /* introduz atraso para garantir escrita */
XBYTE[ONDE] = *(dados+i); /* escreve dado no display */
i++; /* desloca byte apontado pelo ponteiro */
}
}
9
Programa Exemplo No 7 - Moldura para Interface de C e Assembly para o 8051. Crie os 2 programas
abaixo em arquivos separados. Compile o programa SND.C (Translate). Um arquivo denominado
SND.ASM é criado. Abra um projeto e adicione (Add File) os arquivos SND.ASM e PPAL.C. Utilize
Build All para gerar o programa executável.
void main(void)
{
(código da funcao em C)
}
b) Função secundária em Assembly (programa snd.c)
/* includes */
#pragma src(nome_do_programa(snd).asm)
/* #include reg51.h util para compilador de linha */
/* codigo da funcao */
void nome_da_funcao(void)
{
#pragma asm
.
..
(codigo em Assembly)
.
.
#pragma endasm
}
/* includes */
#include <reg51.h> /* biblioteca que faz o programa reconhecer os Special Function Registers */
#include <stdio.h> /* biblioteca de funcao de entrada e saida de dados */
10
/* funcao principal */
void main(void)
{
char teste=0;
char *y,tabela[]={'a','b','c',’d’,’e’}; /* outra possibilidade de inicializacao da tabela */
} /* end of main */
/* includes */
#include <reg51.h> /* biblioteca que faz o programa reconhecer os Special Function Registers */
/* codigo da funcao */
11