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?
Timer 1: non incrementa
Moderatore:
Paolino
12 messaggi
• Pagina 2 di 2 • 1, 2
0
voti
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
}}
12 messaggi
• Pagina 2 di 2 • 1, 2
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


