Fórum Eletrônica2002 (Brasil)
Seja bem vindo ao fórum Eletrônica2002.

Para ter acesso a todo o conteúdo do fórum você precisa estar cadastrado e fazer o login!

Se não é cadastrado no fórum: aproveite e faça.

Para criar um tópico, você precisa se cadastrar e estar conectado.
Ao criar um tópico, vc deve colocar a marca/modelo/e defeito do aparelho no título do tópico. Isto é regra neste fórum!
http://eletronica2002.forumeiros.com/forum-de-reparacao-de-aparelhos-eletronicos-f1/regras-do-forum-t19731.htm

Falar com o administrador?
Mande um e-mail: valdeni@eletronica2002.com.br
.
Menu de navegação


Clique nas imagens abaixo para acessar os fóruns desejados.

Fóruns:






---------------------------

PARCEIROS

E PATROCINADORES

DO FÓRUM 2002:

================

Clique nos banners:




================

Quer ser um patrocinador do fórum?

Mande um e-mail para:

Valdeni@eletronica2002.com.br


_________________
Últimos assuntos
» tv sony KDL32BX425 INTERMITENTE
Hoje à(s) 01:14 por HEBERTT

» TV Semp 2134(A) SL SK-11 liga e deslig
Ontem à(s) 22:29 por Evandro Barbosa

» Mini Sistem Philips FWT9200x com defeito na fonte
Ontem à(s) 15:05 por lander

» som Samsung mx-hs6500 nao liga
Ontem à(s) 13:41 por domingos macedo

» modulo soundigital sd600.1d fica ligado led clip
Ontem à(s) 12:35 por edson vogel

» Home Philips HTS 5530 desligando
Ontem à(s) 12:01 por vanderlei bortoli

» Mini System Aiwa Nsx Zm2800 - FM não funciona
Ontem à(s) 08:19 por Roger Rodrigues

» Tv Panasonic tc 29KL04 horizontal fechado
Ontem à(s) 01:00 por MARIO Y. SEGAWA

» Receiver Kenwood SR 4090 -CCE - (queima frequente etapa de saída)
Ter 22 Jan 2019, 22:58 por AARNALDORB

» Mini System LG x-boom cm9740 sem som
Ter 22 Jan 2019, 19:23 por tec.josé ferreira

» Defeito em TVPhilco TP - 2053
Ter 22 Jan 2019, 12:00 por Nill

» 4 dicas para remover ferrugem das ferramentas
Seg 21 Jan 2019, 10:44 por kir

» FONTE DE BANCADA COM UMA SAÍDA AJUSTÁVEL ENTRE 2 A 16 VCC E OUTRA SAÍDA FIXA COM 13,8Vcc
Seg 21 Jan 2019, 10:38 por kir

» tv lg 14fk3rb falta 3cm do lado esquerdo
Seg 21 Jan 2019, 09:02 por Paranista

» TV TOSHIBA PD 2058s VERTICAL FECHADO
Seg 21 Jan 2019, 02:03 por MARIO Y. SEGAWA

» Som aiwa nsx v900 não funciona saida surround
Seg 21 Jan 2019, 01:03 por Eduardo Passos

» Dvd semp Toshiba troquei a unidade óptica mas não lê
Seg 21 Jan 2019, 00:55 por Eduardo Passos

» BALANÇA URANO US15/5 POP-S (LIGA E DESLIGA )
Dom 20 Jan 2019, 10:22 por Nill

» tv semp 1452 fonte baixa
Sab 19 Jan 2019, 22:31 por antonio benedito de queir

» [Resolvido]tv semp 1452 fonte baixa
Sab 19 Jan 2019, 22:30 por antonio benedito de queir

» tv lg 21fu4rl vertical com linhas na parte de cima
Sab 19 Jan 2019, 02:43 por isaquewallker

» TV LG 21FJ8RL ARMANDO PROTEÇÃO
Sex 18 Jan 2019, 23:18 por Evandro Barbosa

» TV LG 29q54 TUBO - Problemas no SOM
Sex 18 Jan 2019, 11:22 por carlos.scala

» tv semp 2051 u18 com linhas brancas na parte superior
Sex 18 Jan 2019, 07:59 por Nill

» mini sistem mondial MS-03 duvida sobre potenciometro
Qui 17 Jan 2019, 21:26 por Eduardo Passos

» Som LG LM-U1560a com som baixo
Qui 17 Jan 2019, 18:42 por augusto muniz dos santos

» TV Semp Toshiba 1484GAV U12 - Alta tensão
Qui 17 Jan 2019, 00:16 por MARIO Y. SEGAWA

» (ENCERRADO) som samsung mx-e 850zd armando proteçao
Qua 16 Jan 2019, 11:38 por Eduardo Passos

» Placa de circuito impresso com tinta sublimatica
Qua 16 Jan 2019, 01:50 por isaquewallker

» TV LG 29" - Mod: 29FS4RLG - Defeito: Apagada. RESOLVIDO!!!
Ter 15 Jan 2019, 20:00 por MARIO Y. SEGAWA

Quem está conectado
26 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 26 Visitantes :: 2 Motores de busca

Nenhum

O recorde de usuários online foi de 1034 em Sex 24 Jul 2015, 10:41

Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Ir em baixo

Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Qua 03 Maio 2017, 22:30

Bom Dia, Boa Tarde, Boa Noite, venho pedir ajuda pois estou tendo muita dificuldade para fazer o código de um timer programável, ou seja, eu quero criar um contador regressivo programável para um alimentador que podera ser controlado por 4 botões, 1 para segundos, 1 para minutos, 1 para horas e 1 para iniciar a contagem, e teria mais um para despejar a comida na hora.

Se alguém puder me ajudar na programação do timer, eu agradeceria muito.


Última edição por thiiiago10 em Qui 01 Jun 2017, 23:47, editado 2 vez(es)
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por nagkiller em Ter 09 Maio 2017, 10:57

O que você já fez nesse projeto???
Que linguagem de programação esta utilizando???
Poste o esquema e o codigo do que já tem feito.

Flw
nagkiller
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1818
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Dom 28 Maio 2017, 21:32

Código:

sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

#define  horas1        RB0_bit             //Botão para incrementar as horas
#define  minutos10     RB1_bit             //Botão para incrementar 10 minutos
#define  start         RB2_bit             //Botão para iniciar a contagem
#define  despejar      RB3_bit             //Botão para despejar a ração

char *text  = "00:00:00";                  //Ponteiro para texto do contador no LCD
char flags=0x00;                           //Registrador auxiliar para armazenar estado dos botões
unsigned contagem;
char horas, minutos, segundo;        //Variaveis do contador

void interrupt()
{
  if(TMR1IF_bit)
  {
   TMR1IF_bit = 0x00;
   TMR1L = 0x2C;
   TMR1H = 0xCF;
   contagem++;
  }


}



void main()
{
 ADCON1 = 0x0F;
 INTCON = 0xC0;
 TMR1IE_bit = 0x01;
 T1CON = 0x21;
 TMR1L = 0x2C;
 TMR1H = 0xCF;
 TRISB = 0x0F;
 TRISD = 0x00;
 PORTD = 0x00;
 Lcd_Init();
 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Cmd(_LCD_CURSOR_OFF);
 Lcd_Out(1,1,"  ALIMENTADOR");
 Lcd_Out(2,1,"   PET FOOD");
 delay_ms(1000);
 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Out( 1, 1, "TEMPO" );
 Lcd_Out( 2, 1, "VEZES:" );
 Lcd_Out( 2, 9, "00" );

  while(1)
 {
  if(contagem==100)
  {
   contagem = 0;
   if(start)
   {
    segundo--;
    if(segundo== 0)
    {
     segundo = 59;
     minutos--;
     if(minutos==0)
     {
      segundo = 59;
      minutos = 59;
      horas--;

      if(horas==0)
      {
       horas = 0;
       minutos = 0;
       segundo = 0;
       start = 0;
       Lcd_Cmd(_LCD_CLEAR);
       Lcd_Out(1,3,"DESPEJANDO");
       Lcd_Out(2,3,"RAÇÃO");

      } //end if horas

     } //end if minutos

    } //end if segundos

   } //end if starta

  } //end if contagem
  if(!horas1)
  {
   flags.b7 = 0x01;
  }
  if(horas1 && flags.b7)                          //Incrementa unidade na hora
   {
     flags.b7=0x00;
     horas++;
     if(horas > 0x17) horas = 0x00;
   }// end if horas1
   if(!minutos10)
   {
   flags.b6 = 0x01;
   }
    if(minutos10 && flags.b6)                       //Incrementa dezena nos minutos
   {
    flags.b6=0x00;
    minutos = minutos + 5;
    if(minutos > 0x3B) minutos = 0x00;
   }
   if(!start)
   {
    flags.b5 = 0x01;
   }
   if(start && flags.b5)
   {
     flags.b5 = 0x00;
     start = ~ start;
   }
   {
    text[7] = segundo%10 + '0';
    text[6] = segundo/10 + '0';
    text[4] = minutos%10 + '0';
    text[3] = minutos/10 + '0';
    text[1] = horas%10 + '0';
    text[0] = horas/10 + '0';

    Lcd_Out(1,9,text);
   }

 }//END WHILE


}//END VOID


A parte da hora que estou tendo problemas


Última edição por thiiiago10 em Dom 28 Maio 2017, 22:07, editado 1 vez(es)
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Dom 28 Maio 2017, 21:33

To usando a linguagem C no compilador MickroC
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Dom 28 Maio 2017, 22:11

[Você precisa estar registrado e conectado para ver esta imagem.][Você precisa estar registrado e conectado para ver esta imagem.]
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por nagkiller em Sex 02 Jun 2017, 18:40

Analisando seu código, apenas não vi onde você volta as horas, minutos e segundos para respectivos 23:59:59 quando a contagem chegam em 0!!!

Qual a sua dificuldade, pode ser mais especifico???

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
nagkiller
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1818
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Sex 02 Jun 2017, 18:49

ja revolvi meu problema.
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Sex 02 Jun 2017, 18:50

É necessário postar o novo código?
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por nagkiller em Sab 03 Jun 2017, 01:16

Seria interessante!!!

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
nagkiller
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1818
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por nagkiller em Sab 03 Jun 2017, 12:43

Uma observação em seu código é que há a comparação if (contagem == 100), seria melhor utilizar a comparação if (contagem >= 100), em alguns casos, ainda mais quando há interrupções, o valor da contagem pode ser incrementado em 101, neste caso seu software poderá continuar contando (101,102...255,1 2, 3,4) até chegam em 100 novamente, e se caso nessa hora tenha algo prendendo o microcontrolador na interrupção, ele poderá pular o 100 novamente não fazendo a comparação se contagem = 100. Uma vez que a comparação é feita no loop principal de seu programa.

Além de reiniciar os valores conforme meu post anterior.

Código:

     if(start)
     {
      segundo--;
      if(segundo > 0x3B) segundo = 0x3B;
      if(minutos > 0x3B) minutos = 0x3B;
      if(horas > 0x17) horas = 0x17;
...

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
nagkiller
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1818
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Sab 03 Jun 2017, 13:36

Eu coloquei a parte da programação do contador direto na interrupção.


Código:

void interrupt()
{
  if(TMR1IF_bit)
  {
   TMR1IF_bit = 0;
   TMR1L = 0x2C;
   TMR1H = 0xCF;
   contagem++;
   if(contagem>=100)
   contagem=0;
   if(start)
   {
    if(segundo > 0)
    segundo--;
    else if((horas!=0)||(minutos!=0))
    {
      segundo=59;
      if(minutos > 0)
        minutos--;
      else if (horas!=0)
      {
       minutos = 59;
       horas--;

      }
      
     }

    }

   }
  
  }
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Sab 03 Jun 2017, 13:40

Mas agora estou com um problema que a programação do motor nao esta funcionando.
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Sab 03 Jun 2017, 13:42

Ja coloquei
Código:
if((horas==0)&&(minutos==0)&&(segundos==0))
mas mesmo assim nao acionou o motor
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por nagkiller em Sab 03 Jun 2017, 14:28

Em seu código e esquema eu não ví qual o pino atribuido ao controle de motor!!!

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
nagkiller
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1818
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Seg 05 Jun 2017, 20:01

[Você precisa estar registrado e conectado para ver esta imagem.]


Esquema
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Seg 05 Jun 2017, 20:04

A configuração do motor é essa.
Código:

    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,3,"DESPEJANDO");
    Lcd_Out(2,3,"RACAO...");
    PORTC = 0b00000001;
    delay_ms(300);
    PORTC = 0b00001000;
    delay_ms(300);
    PORTC = 0b00000100;
    delay_ms(300);
    PORTC = 0b00000010;
    delay_ms(300);
    PORTC = 0b00000001;
    delay_ms(300);
    PORTC = 0b00001000;
    delay_ms(300);
    PORTC = 0b00000100;
    delay_ms(300);
    PORTC = 0b00000010;
    delay_ms(300);
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,3,"  RACAO");
    Lcd_Out(2,3,"DESPEJADA!");
    delay_ms(2000);
    Lcd_Cmd(_LCD_CLEAR);


Os pinos são so PORTC0 ate o PORTC3
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Seg 05 Jun 2017, 20:05

Apertando o 4º botão ele gira normalmente, mas quando a contagem chega a 00:00:00, ele nao faz nada
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por nagkiller em Ter 06 Jun 2017, 18:03

Ele não faz nada porque você não configurou os pinos do PORTC como saída!!!

Faça isso declarando os pinos de saída no registrador TRISC.

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
nagkiller
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1818
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por thiiiago10 em Ter 06 Jun 2017, 18:25

Aqui esta o código completo.

Código:


sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

#define  horas1        RB0_bit
#define  minutos10     RB1_bit
#define  starta        RB2_bit
#define  despejar      RB3_bit


char *text  = "00:00:00";
char *text2 = "00";
char flags=0x00;
int contagem;
short horas, minutos, segundo;
char despeja;
bit start;

void interrupt()
{
  if(TMR1IF_bit)
  {
   TMR1IF_bit = 0;
   TMR1L = 0x2C;
   TMR1H = 0xCF;
   contagem++;
   if(contagem==100)
   contagem=0;
   if(start)
   {
    if(segundo > 0)
    segundo--;
    else if((horas!=0)||(minutos!=0))
    {
      segundo=59;
      if(minutos > 0)
        minutos--;
      else if (horas!=0)
      {
       minutos = 59;
       horas--;
       if((horas==0)&&(minutos==0)&&(segundo==0))
       {
        Lcd_Cmd(_LCD_CLEAR);
        Lcd_Out(1,3,"DESPEJANDO");
        Lcd_Out(2,3,"RACAO...");
        PORTC = 0b00000001;
        delay_ms(300);
        PORTC = 0b00001000;
        delay_ms(300);
        PORTC = 0b00000100;
        delay_ms(300);
        PORTC = 0b00000010;
        delay_ms(300);
        PORTC = 0b00000001;
        delay_ms(300);
        PORTC = 0b00001000;
        delay_ms(300);
        PORTC = 0b00000100;
        delay_ms(300);
        PORTC = 0b00000010;
        delay_ms(300);
        Lcd_Cmd(_LCD_CLEAR);
        Lcd_Out(1,3,"  RACAO");
        Lcd_Out(2,3,"DESPEJADA!");
        delay_ms(2000);
        Lcd_Cmd(_LCD_CLEAR);
        Lcd_Out(1,1,"TEMPO");
       }
      }//else if (horas!=0)

     }//else if((horas!=0)||(minutos!=0))

    }//if(start)

   }//if(TMR1IF_bit)

  }//void interrupt





void main()
{
 ADCON1 = 0x0F;
 INTCON = 0xC0;
 TMR1IE_bit = 1;
 T1CON = 0x21;
 TMR1L = 0x2C;
 TMR1H = 0xCF;
 TRISB = 0xFF;
 TRISD = 0;
 PORTD = 0;
 PORTC = 0;
 TRISC = 0;
 horas = 0;
 segundo = 0;
 minutos = 0;
 start = 0;
 Lcd_Init();
 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Cmd(_LCD_CURSOR_OFF);
 Lcd_Out(1,1,"  ALIMENTADOR");
 Lcd_Out(2,1,"   PET FOOD");
 delay_ms(1000);
 Lcd_Cmd(_LCD_CLEAR);
 Lcd_Out( 1, 1, "TEMPO:" );


  while(1)
 {

  if(!horas1)
  {
   flags.b7 = 0x01;
  }
  if(horas1 && flags.b7)                          //Incrementa unidade na hora
   {
     flags.b7=0x00;
     horas++;
     if(horas > 0x17) horas = 0x00;
   }// end if horas1
   if(!minutos10)
   {
   flags.b6 = 0x01;
   }
    if(minutos10 && flags.b6)                       //Incrementa dezena nos minutos
   {
    flags.b6=0x00;
    minutos++;
    if(minutos > 0x3B) minutos = 0x00;
   }
   if(!starta)
   {
    flags.b5 = 0x01;
   }
   if(starta && flags.b5)
   {
     flags.b5 = 0x00;
     start = ~ start;
   }
   if(!despejar)
   {
    flags.b3 = 0x01;
   }
   if(despejar && flags.b3)
   {
    flags.b3 = 0x00;
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,3,"DESPEJANDO");
    Lcd_Out(2,3,"RACAO...");
    PORTC = 0b00000001;
    delay_ms(300);
    PORTC = 0b00001000;
    delay_ms(300);
    PORTC = 0b00000100;
    delay_ms(300);
    PORTC = 0b00000010;
    delay_ms(300);
    PORTC = 0b00000001;
    delay_ms(300);
    PORTC = 0b00001000;
    delay_ms(300);
    PORTC = 0b00000100;
    delay_ms(300);
    PORTC = 0b00000010;
    delay_ms(300);
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,3,"  RACAO");
    Lcd_Out(2,3,"DESPEJADA!");
    delay_ms(2000);
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out( 1, 1, "TEMPO:" );

   }
   {
    text[7] = segundo%10 + '0';
    text[6] = segundo/10 + '0';
    text[4] = minutos%10 + '0';
    text[3] = minutos/10 + '0';
    text[1] = horas%10 + '0';
    text[0] = horas/10 + '0';

    Lcd_Out(1,9,text);
   }

 }//END WHILE

}//END VOID
thiiiago10
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 19
Cidade/Estado: : São Paulo
Data de inscrição : 03/05/2017

Voltar ao Topo Ir em baixo

Re: Timer programável utilizando o TIMER1 do PIC 18F4520 AJUDA!!

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum