السلام عليكم
عملت ساعة رقمية بواسطة بيك 16F84 والمشكة انها تتأخر تقريبا بدقيقتين او تلات في كل ساعة
وجزاكم الله خير الجزاء
كود:
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;
char s1,s2,m1,m2, h1,h2,j,p,t;
void affichage2(){
if(j==1)Lcd_Out(1, 12, "Lun");
if(j==2)Lcd_Out(1, 12, "Mar");
if(j==3)Lcd_Out(1, 12, "Mer");
if(j==4)Lcd_Out(1, 12, "Jeu");
if(j==5)Lcd_Out(1, 12, "Ven");
if(j==6)Lcd_Out(1, 12, "Sam");
if(j==7)Lcd_Out(1, 12, "Dim");
}
//pic16f84 Cristal 4MHZ
void afichage (){
Lcd_Chr(1, 7, m1); Lcd_Chr(1, 10, s1); Lcd_Chr(1, 9, s2);Lcd_Chr(1, 8, p);
Lcd_Chr(1, 6, m2);Lcd_Chr(1, 5, p); Lcd_Chr(1, 4, h1);Lcd_Chr(1, 3, h2);}
void interrupt()
{
if(INTCON.T0IF==1)
{ t++;
if(t==125){s1++; t=0;}
if(s1==58){s1=48; s2++; }
if(s2==54){s1=48;s2=48; m1++; }
if(m1==58){s1=48;s2=48;m1=48; m2++; }
if(m2==54){s1=48;s2=48;m1=48;m2=48; h1++; }
if(h1==58){s1=s2=m1=m2=h1=48; h2++; }
if(h2==50&&h1==52){s1=s2=m1=m2=h1=h2=48; j++; }
}
INTCON.T0IF=0;
TMR0=125;
}
void main() {
s1=s2=m1=m2=48; j=1; h1=50; h2=49; p=58;
INTCON=0b10100000;
option_reg=0b00000101;
TMR0=125;
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
trisb=0; portb=0; trisa=255;
for(;;){
if(j==1)Lcd_Out(1, 12, "Lu");
if(j==2)Lcd_Out(1, 12, "Ma");
if(j==3)Lcd_Out(1, 12, "Me");
if(j==4)Lcd_Out(1, 12, "Je");
if(j==5)Lcd_Out(1, 12, "Ve");
if(j==6)Lcd_Out(1, 12, "Sa");
if(j==7)Lcd_Out(1, 12, "Di");
Lcd_Out(2, 5, "REDOUAN");
if(porta.RA0==0){ m1++;delay_ms(300);}
if(porta.RA1==0){h1++;delay_ms(300);}
//Lcd_Out(2, 2, "ALARM");
afichage ();
//affichage2();
}
}