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
» Mini System LG CM4440 não liga, não tem audio
Hoje à(s) 17:28 por NiemeyerD

» Mini System LG CM4330 não tem audio aparece S-protection no display
Hoje à(s) 14:30 por NiemeyerD

» TV LCD SONY KLV-46S200A não LIGA, PISCANDO O LED POWER 4 VEZES
Hoje à(s) 11:36 por jandilson

» TV SONY kv29fs100 Imagem rolando e ronco no áudio
Hoje à(s) 08:22 por Dr.Luan

» Tv philips 29pt5645 problemas no av1
Hoje à(s) 08:20 por Dr.Luan

» Auto Rádio Philips CEM2000 não liga
Ontem à(s) 23:23 por Ohm

» Central Multimídia - MediaNav Renault Duster - Tela branca
Ontem à(s) 15:41 por rafaquino91

» SOM PHILIPS FWM593/BK SEM SOM
Ontem à(s) 13:50 por HAHNRAHN

» MICROSSISTEM PANASSONIC SA-MAX200 ARMANDO PROTEÇÃO
Ontem à(s) 13:20 por negoleo21

» MÓDULO PYRAMID PB310GX SEM ÁUDIO
Ontem à(s) 10:12 por glob

» MIXER BEHRINGER VMX 300 COM TRAFO ALTERADO.
Ontem à(s) 08:59 por Oficina do SOM

» tv philips mod 14GX1618/78R ñ muda de canal(travada)
Ontem à(s) 07:29 por Nill

» tv semp toshiba 2092 lav com linhas de retraços
Seg 15 Out 2018, 16:18 por samucasvm

» nobreak pl1500b1 só liga fora da rede
Seg 15 Out 2018, 14:15 por nagkiller

» Receiver Yamaha mod RX. V. 640 entrando em proteção
Seg 15 Out 2018, 10:59 por Oficina do SOM

» Caixa amplificada lexsen LS12A MP3 não sai som
Seg 15 Out 2018, 10:50 por Oficina do SOM

» Receiver-Gradiente- r343-problema saida som baixa e fm para de funcionar apos alguns minuyos
Seg 15 Out 2018, 10:46 por Oficina do SOM

» som sharp cd-k1600z volume baixo e com ruido
Seg 15 Out 2018, 10:40 por Oficina do SOM

» caixa ativa donner clarity CL-200A com chiado.
Dom 14 Out 2018, 16:37 por Nill

» Som Sony HCD-GTX77 - Não toca pendriver
Dom 14 Out 2018, 16:36 por Nill

» tv lg RP-14CB25A não liga
Dom 14 Out 2018, 12:05 por MARIO Y. SEGAWA

» Som lg // cm 4330 // s-proteção
Sab 13 Out 2018, 21:00 por antonio benedito de queir

» tv lg cp29k30 nao liga
Sab 13 Out 2018, 20:41 por antonio benedito de queir

» tv lg 21fs4rlg-ls desliga e fica em standby
Sex 12 Out 2018, 20:22 por antonio benedito de queir

» TV Sanyo CTP6707 fonte alta
Sex 12 Out 2018, 07:29 por tomate

» CAIXA AMPLIFICADA CICLOTRON PREMIUM 800! QUEIMANDO SAÍDAS DE ÁUDIO
Sex 12 Out 2018, 07:14 por tomate

» TV LG RP 29FA35A - Tensões nas linhas SCL e SDA oscilando.
Qua 10 Out 2018, 22:16 por glob

» Amplificador deaudio JRC SPA750 (em curto)
Qua 10 Out 2018, 21:58 por Oficina do SOM

» Nobreak Tsshara upsmp14 (upsmini 500va) esquema ou ajuda
Qua 10 Out 2018, 10:34 por MARCINHOXP

» projetor epson 12+
Ter 09 Out 2018, 16:10 por Nill

Quem está conectado
344 usuários online :: 22 usuários cadastrados, Nenhum Invisível e 322 Visitantes :: 2 Motores de busca

Arona, Arthur Gomes, CARLOS ALCEBYADES, centauro, DANTEX, delabeneta, dino 3, Dr.Luan, Eletronica Manoel, Fábio Lena, jeffersonjs, joaoalmeida, Julioc3, klein, maglefy, marcosmacedo, maumau, Paranista, Porto, Ricardo Luis Bomfim, ROBERTO CARLOS, WALTER JANSEN

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)
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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
avatar
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 : 1796
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)
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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.]
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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!!!
avatar
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 : 1796
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.
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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?
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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!!!
avatar
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 : 1796
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!!!
avatar
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 : 1796
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--;

      }
      
     }

    }

   }
  
  }
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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.
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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!!!
avatar
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 : 1796
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
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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!!!
avatar
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 : 1796
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
avatar
thiiiago10
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica
TEMPO DE EXPERIÊNCIA : to cursando
Sexo : Masculino
Número de Mensagens : 13
Idade : 18
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