Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Timer 1: non incrementa

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Timer 1: non incrementa

Messaggioda Foto Utentec1b8 » 16 gen 2014, 0:37

Non mi è molto chiaro cosa devi fare con RA1, mi sembra di capire che di serva impostarlo come uscita.
Per fare questo basta impostare il registro TRISA, in particolare il bit 1 di TRISA, al valore '0'.
Non servirebbe disabilitare la parte analogica dal momento che questa interviene solo per i pin configurati come input e non come output. Nonostante questo conviene impostare a '0' anche il bit 1 del registro ANSEL per indicare che il pin RA1 è un pin digitale e non analogico.
Fatte queste impostazioni devi solo scrivere nel bit 1 di PORTA per impostare a '1' o a '0' il pin RA1.

Ci fai vedere il tuo codice per capire cosa possa non funzionare?
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[12] Re: Timer 1: non incrementa

Messaggioda Foto Utenteramboluis » 16 gen 2014, 16:45

in registro TRISA mi sembra corretto , posto il codice :
Codice: Seleziona tutto
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 8000000
#endif
#define  PIC_CLK 8000000 // questo è utilizzato dalle routine di ritardo contenute in Delay.C
#include <PIC.h> // contiene i nomi mnemonici di registri e porte

// Fuses di configurazione
__CONFIG (FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_OFF & LVP_OFF & CPD_OFF & WRT_OFF & FOSC_HS & DEBUG_OFF & CP_OFF);

#include "delay.c" // routine per ritardi
#define D7 RB3
#define D6 RB2
#define D5 RB1
#define D4 RB0
#define E  RE0
#define RW RE1
#define RS RE2

#define BUZ RB5
#define SIRENA RD0


signed int hx,sx,dx,bip,k;
void LCD_INIT (void)
{
RS = 0;      // write control bytes
__delay_ms(100);      // power on delay
D4=1;
D5=1;
D6=0;
D7=0;
E=1;
__delay_ms(10);
E=0;
__delay_ms(100);
E=1;
__delay_ms(10);
E=0;
__delay_ms(100);
E=1;
__delay_ms(10);
E=0;
__delay_ms(100);
D4=0;      // set 4 bit mode
E=1;
__delay_ms(10);
E=0;
__delay_ms(100);


PORTB=0b00000010; // imposto 4 bit
E=1;
__delay_ms(10);
E=0;
PORTB=0b00001000;
E=1;
__delay_ms(10);
E=0;

PORTB=0b00000000;
E=1;                    //display off
__delay_ms(10);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(10);
E=0;

PORTB=0b00000000;  //display on , cursor off blink off
E=1;
__delay_ms(10);
E=0;
PORTB=0b00001100;
E=1;
__delay_ms(10);
E=0;


PORTB=0b00000000;    // shift entry mode , display not shifted
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
}
void WRITENUMBER(unsigned int n)
{
RE2=1;
   PORTB=0b00000011;
   RE0=1;
   __delay_ms(1);
   RE0=0;
   PORTB=n;
   RE0=1;
   __delay_ms(1);
   RE0=0;
   };
  void
lcd_write(unsigned char c)
{
   if(c & 0x80) D7=1; else D7=0;
   if(c & 0x40) D6=1; else D6=0;
   if(c & 0x20) D5=1; else D5=0;
   if(c & 0x10) D4=1; else D4=0;
   E=1;
   __delay_ms(1);
   E=0;
   if(c & 0x08) D7=1; else D7=0;
   if(c & 0x04) D6=1; else D6=0;
   if(c & 0x02) D5=1; else D5=0;
   if(c & 0x01) D4=1; else D4=0;
   E=1;
   __delay_ms(1);
   E=0;
   DelayUs(40);
};
void
lcd_puts(const char * s)
{
   RS = 1;   // write characters

   while(*s) lcd_write(*s++);
}
// funzione principale, eseguita all'avvio del picmicro
void main(void)
{
signed int h,hh,m,mm,s,ss,c,j,q,ca,cb,cc,f,cd;

RD0=0;



OSCCON=0b01110000;



// imposto i registri tristato in maniera tale che tutte le porte siano configurate come pin di uscita
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b11110000;
TRISD=0b00001110;
TRISE=0b00000000;


ADON=0;
ANSEL=0;
ANSELH=0;
TMR1H=0x80;
TMR1L=0x00;
CM2CON0 = 0x7;






E=0;
RS=0;
RW=0;
RA1=1;

LCD_INIT ();
/*
__delay_ms(100);
D7=0;
D6=0;
D5=1;
D4=1;
E=1;
__delay_ms(10);
E=0;
__delay_ms(100);

//D7=0;
//D6=0;
//D5=1;
//D4=1;
E=1;
__delay_ms(10);
E=0;
__delay_ms(100);
D7=0;
D6=0;
D5=1;
D4=0;
E=1;
__delay_ms(10);
E=0;
D7=0;
D6=0;
D5=1;
D4=0;
E=1;
E=0;
D7=1;
D6=0;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;

D7=0;
D6=0;
D5=0;
D4=0;
E=1;
E=0;
D7=1;
D6=0;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;
D7=0;
D6=0;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;
D7=0;
D6=0;
D5=0;
D4=1;
E=1;
__delay_ms(10);
E=0;
D7=0;
D6=0;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;
D7=0;
D6=1;
D5=1;
D4=0;
E=1;
E=0;

__delay_ms(250);

                         // imposto lampeggio cursore ecc...
D7=0;
D6=0;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;

D7=1;
D6=1;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;               

                           //imposto spostamento cursore
D7=0;
D6=0;
D5=0;
D4=1;
E=1;
__delay_ms(10);
E=0;   
D7=0;
D6=1;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;                        
                         // riga 1 colonna 1
D7=1;
D6=0;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;   
D7=0;
D6=0;
D5=0;
D4=0;
E=1;
__delay_ms(10);
E=0;
*/   
 
RS=0;
PORTB=0b00000000;                  // clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  //home
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
BUZ=1;
__delay_ms(250);
__delay_ms(250);
BUZ=0;
RA1=1;
lcd_puts("    HELLO :)");

__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);


while (1)
{
h=0;
m=0;
s=0;
hh=0;
mm=0;
ss=0;
c=0;
k=0;
j=0;
INTCON=0b11000000;
  TRISC|=3;
T1CON=0b00001110;


RS=0;
PORTB=0b00000000;                  // clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  //home
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
RS=1;

lcd_puts("BOMBA v2.0");


__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
RA1=0;
RS=0;
PORTB=0b00001100;                  // riga 2
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
lcd_puts ("OK per avviare");

while (c<10)
{if (RD3==0)
     {c=15;}
    else
    {}}
T1CON|=0;                               //spengo timer


c=0;

if (RC4==0 && RC5==0 && RC6==0 && RC7==0)
    {}
   else
   {
   RS=0;
PORTB=0b00000000;                  // clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  //home
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
lcd_puts("check");
RS=0;
PORTB=0b00001100;                  // cambio riga
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(1);
E=0;

lcd_puts("cable");

while (c<5)
{BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(250);
__delay_ms(250);
BUZ=0;
if (RC6==0 && RC5==0 && RC4==0 && RC7==0)
     {
            
            
             c=6;}
   }}


c=0;
hx=0;
dx=0;
sx=0;
while (c<10)
{
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);
BUZ=1;
__delay_ms(250);
BUZ=0;
RS=0;
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
lcd_puts("HH: ");


hh=hx%10;                 //calcolo
h=hx/10;
RS=1;
   PORTB=0b00000011;                  // h
E=1;
__delay_ms(1);
E=0;
PORTB=h;
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000011;                  // hh
E=1;
__delay_ms(1);
E=0;
PORTB=hh;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);





c=0;
while (c<10)
{
if (RD2==0)
{
hx++;
if (hx==25)
{hx=0;}

RS=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 4
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(10);
E=0;
hh=hx%10;                 //calcolo
h=hx/10;
RS=1;
   {PORTB=0b00000011;                  // h
E=1;
__delay_ms(1);
E=0;
PORTB=h;
E=1;
__delay_ms(1);
E=0;}
PORTB=0b00000011;                  // hh
E=1;
__delay_ms(1);
E=0;
PORTB=hh;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);
}
if (RD1==0)
{hx--;
if (hx==-1)
{hx=24;}

RS=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 4
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(10);
E=0;
hh=hx%10;                 //calcolo
h=hx/10;
RS=1;
   {PORTB=0b00000011;                  // h
E=1;
__delay_ms(1);
E=0;
PORTB=h;
E=1;
__delay_ms(1);
E=0;}
PORTB=0b00000011;                  // hh
E=1;
__delay_ms(1);
E=0;
PORTB=hh;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);
}
if (RD3==0)
{c=15;}
}

BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(250);
BUZ=0;
__delay_ms(250);



c=0;
RS=0;
/*
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
*/
PORTB=0b00001000;                  //   riga 1
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
lcd_puts("MM: ");

mm=dx%10;                 //calcolo
m=dx/10;

   PORTB=0b00000011;                  // m
E=1;
__delay_ms(1);
E=0;
PORTB=m;
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000011;                  // mm
E=1;
__delay_ms(1);
E=0;
PORTB=mm;
E=1;
__delay_ms(10);
E=0;
c=0;
while (c<10)
{
if (RD2==0)
{
dx++;
if (dx==60)
{dx=0;}

RS=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 4
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(10);
E=0;
mm=dx%10;                 //calcolo
m=dx/10;
RS=1;
   PORTB=0b00000011;                  // m
E=1;
__delay_ms(1);
E=0;
PORTB=m;
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000011;                  // mm
E=1;
__delay_ms(1);
E=0;
PORTB=mm;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);
}
if (RD1==0)
{dx--;
if (dx==-1)
{dx=59;}

RS=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 4
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(10);
E=0;
mm=dx%10;                 //calcolo
m=dx/10;
RS=1;
   PORTB=0b00000011;                  // m
E=1;
__delay_ms(1);
E=0;
PORTB=m;
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000011;                  // mm
E=1;
__delay_ms(1);
E=0;
PORTB=mm;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);
}
if (RD3==0)
{c=15;}
}
c=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(250);
BUZ=0;
__delay_ms(250);
   









                           
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
RS=0;
/*
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
*/
PORTB=0b00001000;                  //   riga 1
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
lcd_puts("SS: ");
ss=sx%10;                 //calcolo
s=sx/10;

   PORTB=0b00000011;                  // s
E=1;
__delay_ms(1);
E=0;
PORTB=s;
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000011;                  // ss
E=1;
__delay_ms(1);
E=0;
PORTB=ss;
E=1;
__delay_ms(1);
E=0;
c=0;
while (c<10)
{
if (RD2==0)
{
sx++;
if (sx==60)
{sx=0;}

RS=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 4
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(10);
E=0;

ss=sx%10;                 //calcolo
s=sx/10;
RS=1;
   {PORTB=0b00000011;                  // s
E=1;
__delay_ms(1);
E=0;
PORTB=s;
E=1;
__delay_ms(1);
E=0;}
PORTB=0b00000011;                  // ss
E=1;
__delay_ms(1);
E=0;
PORTB=ss;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);
}
if (RD1==0)
{sx--;
if (sx==-1)
{sx=59;}

RS=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 4
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(10);
E=0;
ss=sx%10;                 //calcolo
s=sx/10;
RS=1;
   PORTB=0b00000011;                  // s
E=1;
__delay_ms(1);
E=0;
PORTB=s;
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000011;                  // ss
E=1;
__delay_ms(1);
E=0;
PORTB=ss;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(100);
}
if (RD3==0)
{c=15;}
}
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;

   RS=0;
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
RS=1;
PORTB=0b00000111;                  //   freccia
E=1;
__delay_ms(1);
E=0;
PORTB=0b00001110;
E=1;
__delay_ms(1);
E=0;
lcd_puts("AVVIA");
   RS=0;
PORTB=0b00001100;                  //   cambio riga
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
lcd_puts("BACK");
c=15;
k=0;
while (k<5)
{
if (RD2==0)
   {c=15;
   RS=0;
    PORTB=0b00001000;                  //    riga 1
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
RS=1;
PORTB=0b00000111;                  //   freccia
E=1;
__delay_ms(1);
E=0;
PORTB=0b00001110;
E=1;
__delay_ms(1);
E=0;
RS=0;
   PORTB=0b00001100;                  //    riga 2
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
RS=1;
PORTB=0b00001000;                  //   spazio
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(1);
E=0;
RD0=1;
__delay_ms(50);
RD0=0;
__delay_ms(50);}
if (RD1==0)
   {c=0;
   RS=0;
    PORTB=0b00001100;                  //    riga 2
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
RS=1;
PORTB=0b00000111;                  //   freccia
E=1;
__delay_ms(1);
E=0;
PORTB=0b00001110;
E=1;
__delay_ms(1);
E=0;
   RS=0;
    PORTB=0b00001000;                  //    riga 1
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
RS=1;
PORTB=0b00001000;                  //  spazio
E=1;
__delay_ms(1);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(1);
E=0;
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
}
if (RD3==0)
{k=6;}















}























}



BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(250);




RS=0;
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 5
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000101;
E=1;
__delay_ms(10);
E=0;
lcd_puts("GOOD");
RS=0;
PORTB=0b00001100;                  //  cambio riga ,colonna 5
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000101;
E=1;
__delay_ms(10);
E=0;
lcd_puts("GAME");
BUZ=1;
__delay_ms(100);
BUZ=0;
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);

BUZ=1;
__delay_ms(100);
BUZ=0;
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);

BUZ=1;
__delay_ms(100);
BUZ=0;
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
BUZ=1;

__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
BUZ=0;
k=0;
j=0;
c=0;
q=0;
bip=sx;


                                           //**************************************************************************\\
                                 //**************************************************************************\\
                                 //********************           INIZIO           **************************\\
                                 //********************          OROLOGIO          **************************\\
                                 //**************************************************************************\\
                                 //**************************************************************************\\














       // original ** 00000111 **
PIR1=0b00000001;
PIE1=0b00000001;
RS=0;
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;

PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;

while(c<10)
{

/*
RS=0;
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;

PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
*/
if (bip!=sx)
{
hh=hx%10;
h=hx/10;
mm=dx%10;
m=dx/10;
ss=sx%10;
s=sx/10;

RS=0;
PORTB=0b00001000;                  //  cambio riga ,colonna 4
E=1;
__delay_ms(5);
E=0;
PORTB=0b00000100;
E=1;
__delay_ms(5);
E=0;

RS=1;

WRITENUMBER(h);
WRITENUMBER(hh);
PORTB=0b00000011;                  // :
E=1;
__delay_ms(1);
E=0;
PORTB=0b00001010;
E=1;
__delay_ms(1);
E=0;
WRITENUMBER(m);
WRITENUMBER(mm);
PORTB=0b00000011;                  // :
E=1;
__delay_ms(1);
E=0;
PORTB=0b00001010;
E=1;
__delay_ms(1);
E=0;
WRITENUMBER(s);
WRITENUMBER(ss);
__delay_ms(100);
T1CON|=1;                  // accendo timer1

BUZ=1;              //bip ogni secondo
__delay_ms (50);
BUZ=0;
bip=sx;}
if (hx<0 && dx>40 && sx>40)
{c=11;
  }



if(RD3==0)
{__delay_ms(200);
RA1=RA1^1;
}

if (RC4==1)
   
      {c=11;}
   
if (RC5==1)
       {c=12;}
       
if (RC6==1)
      
        {while (j<3)
      {
       dx=dx/2;
      sx=sx/2;
       hx=hx/2;
          j=6;}}
      

     if (RC7==1)
        
        {k=1;}

        
      
}

if (c==12)
{
INTCON=0b00000000;
RS=0;
PORTB=0b00000000;                  //   clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  // HOME
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;
lcd_puts("    HAI VINTO");
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(100);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(250);
BUZ=0;


__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
}

if (c==11)
{

INTCON=0b00000000;
RS=0;
PORTB=0b00000000;                  // clear
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000001;
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;                  //home
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000010;
E=1;
__delay_ms(10);
E=0;

lcd_puts("      BOOM");
BUZ=1;
SIRENA=1;

__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
__delay_ms(250);
BUZ=0;
SIRENA=0;

}
RS=0;
PORTB=0b00001100;                  // cambio riga
E=1;
__delay_ms(10);
E=0;
PORTB=0b00000000;
E=1;
__delay_ms(10);
E=0;
lcd_puts("Press OK");
E=0;
c=0;
while (c<10)
{
if (RD3==0)

{BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
__delay_ms(50);
BUZ=1;
__delay_ms(50);
BUZ=0;
c=15;
}
}
}}
void interrupt ISR(void)
   {
   if(TMR1IF) // interrupt su overflow timer1: è passato un secondo
      {
     if (k==1)
     { TMR1H=250;}
      else
      {
      TMR1H=0x80; // ricarico il timer dal valore 0x8000, non vado a scomodare anche TMR1L che già si trova a zero
}
      sx--;
if (sx==-1)
{sx=59;
dx--;}
if (dx==-1)
{dx=59;
hx--;}

      TMR1IF=0; // azzero il flag di interrupt
      }}

Avatar utente
Foto Utenteramboluis
80 1 7
Stabilizzato
Stabilizzato
 
Messaggi: 314
Iscritto il: 28 giu 2012, 18:39

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite