Ir ao conteúdo

Utilizar timer do pic 18F452


POIN

Posts recomendados

Postado

Olá amigos, preciso de uma ajuda na programção para utilizar o timer do pic 18f452, queria fazer com que ele conta-se sem tem fim. podem me ajudar?

Postado
Explique melhor o que deseja.

então, eu to querendo fazer com que um dislpay conte o tempo de um banho ou seja quando a corrente passar na existencia do chuveiro o pic comece a contar o tempo do banho!

Postado
Como está seu circuito até agora? Precisamos saber isso propor a melhor solução.

Falou

so falta fazer essa parte do contador..pois preciso pegar esse valor de tempo e fazer alguns calculos com ele..queria a ideia de alguma progamação e com utilizar e tal..

brigado

Postado
Veja esse tópico que irá te ajudar:

http://forum.clubedohardware.com.br/qual-diferenca-entre/896484

Falou

olha a minha progamação ae...eu to contando de 1 em 1 segundo... eu queria contar de 4 em 4, eu nao sei aonde mudar aqui pra mudar o prescaler...nao entendi os calculos que fazem também para ver o tem po de estouro..esse progaminha eu peguei em um curso da microgenius, o que eu poderia mudar e etc...valeu ae por ajudar...

char contador = 0;  //define variável contador como inteiro
char texto[10]; //cria matris com 10 elementos do tipo char

//*********** rotina de interrupção ******************************************
void interrupt() { //rotina de interrupção
portb = ~portb; //inverte o estado do portd
contador++; //incrementa em 1 unidade a variável contador
//recarrega tempo de contagem do timer0
tmr0l = 0xee; //parte menos significativa do resultdado da conta (65535 - 34285)
tmr0h = 0x85; //parte mais significativa do resultado da conta (65535 - 34285)
intcon.tmr0if = 0; //apaga flag de estouro do timer0 para uma nova contagem
}

//***********************programa principal ************************************

void main() { //rotina principal do programa

trisb = 0; //configura todos os pinos do portd como saída
trise = 0; //configura todos os pinos do porte como saida
adcon1 = 0x06; //configura todos os pinos de a/d como i/o de uso geral


lcd_init(); //inicializa o display LCD
lcd_cmd(_lcd_cursor_off); //desliga o cursor

trisb = 0; //configura portd como saida
portb = 0; //apaga todos os leds

t0con = 0b10000101; //configura o timer0 no modo 16 bits com prescaler 1:64
tmr0l = 0xee; //parte menos significativa do resultdado da conta (65535 - 34285)
tmr0h = 0x85; //parte mais significativa do resultado da conta (65535 - 34285)

intcon.f2 = 0; //apaga flag de estouro do timer0
intcon.f5 = 1; //habilita interrupção do timer0
intcon.f7 = 1; //habilita a interrupção geral do timer0
intcon.f6 = 1; //habilita a interrupção geral de periféricos
// teriamos o mesmo resultado -> intcon = 0b11010000;
do {
wordtostr(contador,texto); //converte valor da variável contador em string
lcd_out(1, 1, texto); //escreve variável texto no lcd

} while(1); //fica executando eternamente esta linha de programa
}

/*calculo matemático: estamos fazendo mudanças

1º : 65536 - 31250 = 34286 => 85ee hexadecimal
2º : fosc / 4 = ciclo de máquina => 8mhz/ 4 = 0,5us
3º : prescaler programado para 1:64

tempo de estouro do timer0 será dado pela seguinte formula:

tempo de estouro = (65536 - valor de carregagem nos timers) x prescaler x ciclo de máquina

logo: 31250 x 64 x 0.5 = 1000000 us ou 1 segundo.

*/

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!