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
» Som philips modelo FWM 582 sem som nas caixas e auxilares porem no fone sai o áudio
Ontem à(s) 23:36 por francisco constantino

» Fonte jfa 1000x nao liga,fica so piscando um dos leds internos.
Ontem à(s) 21:29 por ayslan souza

» Tv Toshiba Tv2159OFSH - U19 com imagem rosa.
Ontem à(s) 20:27 por MARIO Y. SEGAWA

» [Resolvido]Aparelho de Som Toshiba ms7310cd com som ruim
Ontem à(s) 20:19 por lasiluz

» Ducha Advanced Eletrônica Lorenzetti (127v) - Sem controle de temperatura
Ontem à(s) 19:44 por eliaspaim

» tv lenoxx modelo tv-2100b não liga totalmente parada
Ontem à(s) 18:51 por eletrônica souza

» arduino com vários projetos de Arduino muito bom!!
Ontem à(s) 15:29 por kir

» som som Sony mhc grx 55 não arma o relé
Ontem à(s) 13:03 por ANTRNIO09

» Tv semp modelo tv 2934 com imagem fraca,sem cores
Ontem à(s) 11:47 por paulorfbm

» Tv CCE 2118USP - Com Vertical Fechado
Ontem à(s) 11:30 por MARIO Y. SEGAWA

» SOM LG MCD504, TRAVADO NO RELOGIO
Ontem à(s) 10:45 por felixtec

» [Resolvido]Aparelho de Som Aiwa - CX-NSZ51LH com som muito grave
Qua 20 Jun 2018, 22:10 por jailton da silva santos

» RADIO SANYO 3 FAIXAS SÓ CHIA.
Qua 20 Jun 2018, 22:01 por Adelalon

» Som Sony hcd_zux9 em proteção (alt para transistores na saída)
Qua 20 Jun 2018, 18:56 por Eduardo Toda

» TV-LG-20K40 não liga só em Standy by
Qua 20 Jun 2018, 17:08 por OTONIEL FERREIRA DE SOUSA

» tv LCD LG 42lh20r Funciona depois fica sem imagem lâmpada ligada,
Qua 20 Jun 2018, 07:57 por Nill

» tv pvt2150
Ter 19 Jun 2018, 23:08 por jailton da silva santos

»  Mini System Philips fwm6000x/78 baixando o audio
Ter 19 Jun 2018, 22:37 por tomate

» Tv Panasonic 14rm10l com linhas sem imagem nem som
Ter 19 Jun 2018, 20:15 por Morlan

» Nobreak APC UPS400 - não carrega bateria
Ter 19 Jun 2018, 19:17 por Alcides.Piracicaba

» Mini System - Samsung - MX-D750 - PROTECT
Ter 19 Jun 2018, 17:42 por Oficina do SOM

» reset tv semp 1031 acdc
Ter 19 Jun 2018, 09:17 por acsabo

» TV LG 20CD2R-LD com Horizontal aberto e Software travado
Ter 19 Jun 2018, 05:15 por Ralph Hinkley

» Sony LBT-N355 não liga
Seg 18 Jun 2018, 13:10 por Roger Rodrigues

» som aiwa modelo nsx-s779 coloca na tomada nao liga so fica standby
Seg 18 Jun 2018, 10:44 por Oficina do SOM

» (Encerrado) SOM AIWA MODELO NSX V700 NÃO LIGA ( DEVOLVIDO )
Seg 18 Jun 2018, 10:41 por Oficina do SOM

» Sony MHC GTR 8 não faz funções pelos botões
Dom 17 Jun 2018, 20:09 por Oficina do SOM

» SOM TOSHIBA MS7916MU - Sem audio nas caixas, mas tem som no fone de ouvido.
Dom 17 Jun 2018, 20:00 por Oficina do SOM

» Números grandes em LCD Alphanumérico com PIC como criar?
Dom 17 Jun 2018, 18:01 por CACÁ

»  Monitor AOC modelo E2243FWK liga e desligm
Dom 17 Jun 2018, 17:33 por celiaura

Quem está conectado
50 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 49 Visitantes :: 2 Motores de busca

Paulo Cezar

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 : 1743
Idade : 37
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 : 1743
Idade : 37
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 : 1743
Idade : 37
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 : 1743
Idade : 37
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 : 1743
Idade : 37
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 : 1743
Idade : 37
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