Buscar

Modo de utilização do Timer

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

//Modo de utilização do Timer:
//Modo 1 como Contador
//Diretivas de pré-processamento
#include <REGX51.H>
#define ACLEDS P1_4
#define ON 	1
#define OFF 0
//protótipos de função
void aciona_leds(void);
//-------------------------------------------------------
// função principal
void main()
{
	// inicialização da P2
	P2=0;
/*Objetivo: contador de pulsos externos. A partir do sinal de um sensor externo, conto pulsos,
que poderiam ser, por exemplo, peças que passam transportadas uma esteira.
O sinal de contagem externo é proveniente do pino T0 para o Timer 0 e T1 para o Timer 1
no Kit 8051, existe uma chave conectada ao pino T1 (ver esquemático) */
//Modo 1: T/~C de 16 bits: conta até 2^16 = 65535 //em decimal ou 0FFFFh em hexadecimal
//Primeira coisa a ser feita: inicializar o Timer... vou //usar o Tmer 1 (poderia ser o 0)
TMOD = 0x050;	//01010000b ->Timer 1, no modo //contador
//o valor de inicialização foi 01010000b que é //equivalente a: 80 em decimal ou 050h em hexa 
	//qualquer um deles pode ser utilizado
	do
	{					
TH1 = 0x0FF;	//inicializei o módulo de //contagem (ponto de //início)
TL1 = 0x0F0;	//vai contar de FFF0 até //FFFF, ou seja, 15 vezes
TR1 = ON;	//ligo o Timer 1
while (TF1==0);	//fico parado aqi até o final //da contagem
//Como o bit C/~T do TMOD é 1, a //contagem é externa, feita através do //pino T1 -> Ver esquema
TR1 = OFF;	//paro o Timer 
TF1= OFF;	//desligo o Flag TF1
P2++;		//incremento a P2
aciona_leds();	//aciono o Latchdos Leds //conectados à P2 (ver //esquema)
}
	while(1);	//retorno ao início
}
//----------------------------------------------------------
//Subrotina de acionamento do Latch dos Leds
void aciona_leds()
{
	ACLEDS = OFF;	//"Zero" o pino
	ACLEDS = ON;	//Aciono o pino
	ACLEDS = ON;	//"Zero" o pino
}	//pulos gerados, retorna
//Modo de utilização do Timer:
//Timer 0: temporizador modo 2;
//Diretivas de pré-processamento
#include <REGX51.H>
#define ACLEDS P1_4
#define ON 	1
#define OFF 0
//protótipos de função
void aciona_leds(void);
//-------------------------------------------------------
// função principal
void main()
{
		//decalaração de variáveis
		unsigned int var1;
		// inicialização da P2
		P2=0;
/*Objetivo: programação do timer 0 como temporizador de oito bits com recarga automática */
//Modo2: T/~C de 8 bits: conta até 2^8 //= 255 em decimal ou 0FFh em hexadecimal
//Primeira coisa a ser feita: inicializar o Timer... //vou usar o Timer 0 (poderia ser //o 1)
TMOD = 0x02;	//00000010b ->Timer 0, no //modo temporizador com recarga //automática
		do
		{					
			var1 = 10000;	 
			do
			{
				TR0 = ON; //ligo o Timer 0
				while (TF0==0);
				TR0 = OFF; //paro o Timer 1	
				TF0= OFF;//desligo o Flag TF1
				var1--;
			}while (var1 > 0);
	P2 ++;	//incremento a P2
	aciona_leds();	//aciono o Latchdos Leds //conectados à P2 (ver esquema)
}
while(1);	//retorno ao início
}
//----------------------------------------------------------
//Subrotina de acionamento do Latch dos Leds
void aciona_leds()
{
	ACLEDS = OFF;	//"Zero" o pino
	ACLEDS = ON;	//Aciono o pino
	ACLEDS = ON;	//"Zero" o pino
}	//pulos gerado, retorno
//Modo de utilização do Timer:
//Modo 1 como Temporizador acionado por pino externo
//Diretivas de pré-processamento
#include <REGX51.H>
#define ACLEDS P1_4
#define ON 	1
#define OFF 0
//protótipos de função
void aciona_leds(void);
//-------------------------------------------------------
// função principal
void main()
{
//declaração de variável
		unsigned char x;
		// inicialização da P2
		P2=0;
/*Objetivo: temporizador acionado externamente. A partir do sinal de um sensor externo, realizo temporização interna.
Poderia ser aplicado para medir intervalos de tempo de eventos externos.
o Acionamento do temporizador é feito pelo pino INT0 para o timer 0 e INT 1 para o timer 1
no Kit 8051, existe uma chave conectada ao pino INT1 (ver esquemático) */
	
//Modo 1: T/~C de 16 bits: conta até 2^16 = //65535 em decimal ou 0FFFFh em hexadecimal
	
//Primeira coisa a ser feita: inicializar o Timer... //vou usar o Timer 1 (poderia ser o 0)
	
TMOD = 144;	//Timer 1, no modo contador
/*o valor de inicialização foi 10010000b que é equivalente a: 144 em decimal ou 090h em hexa 
		qualquer um deles pode ser utilizado */
	do
	{					
		x=2;
do
{
TH1 = 0;//inicializei o módulo de //contagem (ponto de início)
TL1 = 0;	//vai contar de 0 até FFFF, ou //seja, 65535 vezes
	TR1= ON;//ligo o Timer 1
while (TF1 == 0);//fico parado aqi até o //final da contagem
//como o bit GATE do TMOD é 1, o //acionamento do timer é ;feito pelo bit //TR e pelo INT1	
	TR1 = OFF;	//paro o Timer 1	
	TF1= OFF;	//desligo o Flag TF1
	x--;
 } while (x>0);
 P2 ++;	//incremento a P2
 aciona_leds();	//aciono o Latchdos Leds //conectados à P2 (ver esquema)
 }
 while(1);	//retorno ao início
}
//----------------------------------------------------------
//Subrotina de acionamento do Latch dos Leds
void aciona_leds()
{
	ACLEDS = OFF;	//"Zero" o pino
	ACLEDS = ON;	//Aciono o pino
	ACLEDS = ON;	//"Zero" o pino
}	//pulos gerado, retorno

Outros materiais