قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 27-05-2015, 11:25 AM المشاركة 1   
افتراضي طلب ساعة رقمية Twitter FaceBook Google+



لدي مشكلة في هدا الكود عندما اقوم بزيادة اسطر يصبح حجم الروم ممتلئ
المرجو اختصار الكود وشكرا

كود:
// LCD module connections
sbit LCD_RS at LATB4_bit;
sbit LCD_EN at LATB5_bit;
sbit LCD_D4 at LATB0_bit;
sbit LCD_D5 at LATB1_bit;
sbit LCD_D6 at LATB2_bit;
sbit LCD_D7 at LATB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
unsigned char *text, second, minute, hour, date, month,year, day, i = 0;
char select, select_op, selection, submenu,temp0 = 0;
char m,h,dia,Flags=0,h5=0,m5=0,da5=0,ye5=0,mo5=0;
char h1=0,m1=0,da1=0,ye1=0,mo1=0,h2=0,m2=0,da2=0,ye2=0,mo2=0,h3=0,m3=0,da3=0,ye3=0,mo3=0,h4=0,m4=0,da4=0,ye4=0,mo4=0,x=0,y=0,j=0,mo=0,da=0,ye=0;
char day_name[8][4] = {"LUN","MAD","MED","JED","VED","SED","DIM"};
 void display(){
   second =  ((second & 0xF0) >> 4)*10 + (second & 0x0F);      // Transform seconds
   minute  =  ((minute & 0xF0) >> 4)*10 + (minute & 0x0F);    // Transform months
   hour =  ((hour & 0xF0) >> 4)*10 + (hour & 0x0F);  // Transform hours
   year  =  ((year & 0xF0) >> 4)*10 + (year & 0x0F);    // Transform hours
   date  =  ((date & 0xF0) >> 4)*10 + (date & 0x0F);    // Transform day
   month =  ((month & 0xF0) >> 4)*10 + (month & 0x0F);  // Transform month
  }
 void write_value(char address, char data_){
   I2C1_Start();
   I2C1_Wr(0xD0);
   I2C1_Wr(address);
   I2C1_Wr(data_);
   I2C1_Stop();     }
   void relay(){
while(x==1){Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 2,"EVE1");
Lcd_Out(2, 2,"EVE2");
Lcd_Out(1,10,"EVE3");
Lcd_Out(2,10,"EVE4");
select = 1;
selection = 1;x=2;
while (x==2){
        if ((PORTd.f3 = 1) && (submenu == 0))              //When press RC0 '>' selecting display options
             {
                switch(selection)
                    {
                    case 1:
                         Lcd_Chr(1,1,'>');
                         selection = 2;
                         select = 1;
                         Lcd_Chr(2,9,' ');
                         delay_ms(400);
                    break;
                    case 2:
                         Lcd_Chr(2,1,'>');
                         selection = 3;
                         select = 2;
                         Lcd_Chr(1,1,' ');
                          delay_ms(400);
                    break;
                    case 3:
                         Lcd_Chr(1,9,'>');
                         selection = 4;
                         select = 3;
                         Lcd_Chr(2,1,' ');
                          delay_ms(400);
                    break;
                    case 4:
                         Lcd_Chr(2,9,'>');
                         selection = 1;
                         select = 4;
                         Lcd_Chr(1,9,' ');
                          delay_ms(400);
                    break;
                    }
             }
        if (PORTd.F4 = 1)              //When press PORTA.F1 - choose selected option/menu
             {
             switch(select)
                {
                case 1:
                   y=2;x=0;
                   Lcd_Cmd(_LCD_CLEAR);
                break;
                case 2:
                   y=2;x=0;
                   Lcd_Cmd(_LCD_CLEAR);
                break;
                case 3:
                   y=4;x=0;
                   Lcd_Cmd(_LCD_CLEAR);                        //Clear LCD screen
                break;
                case 4:
                   y=5;x=0;
                   Lcd_Cmd(_LCD_CLEAR);                        //Clear LCD screen
                break;
                }
             }

}
}}
 void fixed_text()
{
  // Lcd_Out(1,1,"Date:");
   Lcd_Chr(1,5,'-');
   Lcd_Chr(1,8,'-');
  //Lcd_Out(2,1,"Time:");
   Lcd_Chr(2,5,':');
   Lcd_Chr(2,8,':');
   Lcd_Out(1,9,"20");
}
   void display_dat()
{
   Lcd_Chr(1, 3, (da / 10)   + 48);    // Print tens digit of day variable
   Lcd_Chr(1, 4, (da % 10)   + 48);    // Print oness digit of day variable
   Lcd_Chr(1, 6, (mo / 10)  + 48);
   Lcd_Chr(1, 7, (mo % 10)  + 48);
   Lcd_Chr(1, 11,(ye / 10)   + 48);
   Lcd_Chr(1, 12, (ye % 10)   + 48);
   Lcd_Chr(2, 3, (h/ 10)   + 48);
   Lcd_Chr(2, 4, (h % 10)   + 48);
   Lcd_Chr(2, 6, (m / 10) + 48);
   Lcd_Chr(2, 7, (m % 10) + 48);

}
   void display_dat1()
{
   Lcd_Chr(1, 3, (da1 / 10)   + 48);    // Print tens digit of day variable
   Lcd_Chr(1, 4, (da1 % 10)   + 48);    // Print oness digit of day variable
   Lcd_Chr(1, 6, (mo1 / 10)  + 48);
   Lcd_Chr(1, 7, (mo1 % 10)  + 48);
   Lcd_Chr(1, 11,(ye1 / 10)   + 48);
   Lcd_Chr(1, 12, (ye1 % 10)   + 48);
   Lcd_Chr(2, 3, (h1/ 10)   + 48);
   Lcd_Chr(2, 4, (h1 % 10)   + 48);
   Lcd_Chr(2, 6, (m1 / 10) + 48);
   Lcd_Chr(2, 7, (m1 % 10) + 48);
}
    void display_dat2()
{
   Lcd_Chr(1, 3, (da2 / 10)   + 48);    // Print tens digit of day variable
   Lcd_Chr(1, 4, (da2 % 10)   + 48);    // Print oness digit of day variable
   Lcd_Chr(1, 6, (mo2 / 10)  + 48);
   Lcd_Chr(1, 7, (mo2 % 10)  + 48);
   Lcd_Chr(1, 11,(ye2 / 10)   + 48);
   Lcd_Chr(1, 12, (ye2 % 10)   + 48);
   Lcd_Chr(2, 3, (h2/ 10)   + 48);
   Lcd_Chr(2, 4, (h2 % 10)   + 48);
   Lcd_Chr(2, 6, (m2 / 10) + 48);
   Lcd_Chr(2, 7, (m2 % 10) + 48);
}
    void display_dat3()
{
   Lcd_Chr(1, 3, (da3 / 10)   + 48);    // Print tens digit of day variable
   Lcd_Chr(1, 4, (da3 % 10)   + 48);    // Print oness digit of day variable
   Lcd_Chr(1, 6, (mo3 / 10)  + 48);
   Lcd_Chr(1, 7, (mo3 % 10)  + 48);
   Lcd_Chr(1, 11,(ye3 / 10)   + 48);
   Lcd_Chr(1, 12, (ye3 % 10)   + 48);
   Lcd_Chr(2, 3, (h3/ 10)   + 48);
   Lcd_Chr(2, 4, (h3 % 10)   + 48);
   Lcd_Chr(2, 6, (m3 / 10) + 48);
   Lcd_Chr(2, 7, (m3 % 10) + 48);
}
    void display_dat4()
{
   Lcd_Chr(1, 3, (da4 / 10)   + 48);    // Print tens digit of day variable
   Lcd_Chr(1, 4, (da4 % 10)   + 48);    // Print oness digit of day variable
   Lcd_Chr(1, 6, (mo4 / 10)  + 48);
   Lcd_Chr(1, 7, (mo4 % 10)  + 48);
   Lcd_Chr(1, 11,(ye4 / 10)   + 48);
   Lcd_Chr(1, 12, (ye4 % 10)   + 48);
   Lcd_Chr(2, 3, (h4/ 10)   + 48);
   Lcd_Chr(2, 4, (h4 % 10)   + 48);
   Lcd_Chr(2, 6, (m4 / 10) + 48);
   Lcd_Chr(2, 7, (m4 % 10) + 48);
}
    void display_dat5()
{
   Lcd_Chr(1, 3, (da5 / 10)   + 48);    // Print tens digit of day variable
   Lcd_Chr(1, 4, (da5 % 10)   + 48);    // Print oness digit of day variable
   Lcd_Chr(1, 6, (mo5 / 10)  + 48);
   Lcd_Chr(1, 7, (mo5 % 10)  + 48);
   Lcd_Chr(1, 11,(ye5 / 10)   + 48);
   Lcd_Chr(1, 12, (ye5 % 10)   + 48);
   Lcd_Chr(2, 3, (h5/ 10)   + 48);
   Lcd_Chr(2, 4, (h5 % 10)   + 48);
   Lcd_Chr(2, 6, (m5 / 10) + 48);
   Lcd_Chr(2, 7, (m5 % 10) + 48);
}
void conver()
{
   Lcd_Chr(1, 3, (date / 10)   + 48);    // Print tens digit of day variable
   Lcd_Chr(1, 4, (date % 10)   + 48);    // Print oness digit of day variable
  Lcd_Chr(1, 6, (month / 10)  + 48);
   Lcd_Chr(1, 7, (month % 10)  + 48);
   Lcd_Chr(1, 11,(year / 10)   + 48);
   Lcd_Chr(1, 12, (year % 10)   + 48);
   Lcd_Chr(2, 3, (hour / 10)   + 48);
   Lcd_Chr(2, 4, (hour % 10)   + 48);
      Lcd_Chr(2, 6, (minute / 10) + 48);
   Lcd_Chr(2, 7, (minute % 10) + 48);
     Lcd_Chr(2, 9, (second  / 10) + 48);
   Lcd_Chr(2,10, (second  % 10) + 48);

   }
void eeprom(){
ye=Eeprom_read(0);da=Eeprom_read(1);mo=Eeprom_read(2);h=Eeprom_read(3);m=Eeprom_read(4);
ye1=Eeprom_read(5);da1=Eeprom_read(6);mo1=Eeprom_read(7);h1=Eeprom_read(8);m1=Eeprom_read(9);
ye2=Eeprom_read(10);da2=Eeprom_read(11);mo2=Eeprom_read(12);h2=Eeprom_read(13);m2=Eeprom_read(14);
ye3=Eeprom_read(15);da3=Eeprom_read(16);mo3=Eeprom_read(17);h3=Eeprom_read(18);m3=Eeprom_read(19);
}
 void main() {
 TRISd =0xff; portd=0;
 TRISb =0; portb=0; portc.f0=portc.f1=0;trisc.f0=trisc.f1=0;
  ANSELB = 0;                    // Set for DIGITAL function
    ANSELD = 0;                    // Set for DIGITAL function
    ANSELE = 0;
 Lcd_Init();
 eeprom();
 Lcd_Cmd(_LCD_CLEAR);       // Clear LCD display
 Lcd_Cmd(_LCD_CURSOR_OFF);  // Turn cursor off
 I2C1_Init(100000);         // initialize I2C at 100KHz
 fixed_text();
 write_value(0, 0);   //Reset seconds and start oscillator
 while(1){
 while(y==0){
 I2C1_Start();
  I2C1_Wr(0xD0);
  I2C1_Wr(0);
  I2C1_Repeated_Start();
  I2C1_Wr(0xD1);
  second =I2C1_Rd(1);
  minute =I2C1_Rd(1);
  hour =I2C1_Rd(1);
  day =I2C1_Rd(1);
  date =I2C1_Rd(1);
  month =I2C1_Rd(1);
  year =I2C1_Rd(0);
  I2C1_Stop();
  display();conver();
  eeprom();
  if(m==minute)portb.f6=1;
  if(m1==minute)portb.f7=1;
  if(m2==minute)portc.f0=1;
  if(m3==minute)portc.f1=1;
  if(portd.f7==1) y=x=1;}
 relay();
 while(y==2){display_dat();Flags=1;Lcd_Chr(1,5,'-');Lcd_Chr(1,8,'-');Lcd_Chr(2,5,':');Lcd_Out(1,9,"20");
while(Flags==1)
      {
         if(Rd1_bit)
         {
            ye++;
            if(ye > 99){ ye = 0;}Eeprom_Write(0,ye);
            display_dat();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags=2;
            for(i = 0; i <= 4; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==2)
      {
         if(Rd1_bit)
         {
            mo++;
            if(mo > 12){mo = 1;}Eeprom_Write(2,mo);
             display_dat();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=3;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==3)
      {
         if(Rd1_bit == 1)
         {
            da++;
            if(da> 31){da = 0;} Eeprom_Write(1,da);
            display_dat();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags= 4;
            Lcd_Cmd(_LCD_SECOND_ROW);
            for(i = 0; i <= 5; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==4){
         if(Rd1_bit)
         {
            h++;
            if(h > 23){h = 0;}Eeprom_Write(3,h);
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags= 5;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==5)
      {
         if(Rd1_bit)
         {
            m++;
            if(m > 59){m= 0;}Eeprom_Write(4,m);
            display_dat();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit){
            y=0;Flags=0;
            Lcd_Cmd(_LCD_CURSOR_OFF);
            Lcd_Cmd(_LCD_CLEAR);
            fixed_text();
            Delay_ms(500);
            while(Rd0_bit);
         }
      }
}
 while(y==3){display_dat1();Flags=6;Lcd_Chr(1,5,'-');Lcd_Chr(1,8,'-');Lcd_Chr(2,5,':');Lcd_Out(1,9,"20");
while(Flags==6)
      {
         if(Rd1_bit)
         {
            ye1++;
            if(ye1 > 99){ ye1 = 0;}
            display_dat1();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags=7;
            for(i = 0; i <= 4; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==7)
      {
         if(Rd1_bit)
         {
            mo1++;
            if(mo1 > 12){mo1 = 1;}
             display_dat1();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=8;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==8)
      {
         if(Rd1_bit == 1)
         {
            da1++;
            if(da1> 31){da1 = 0;}
            display_dat1();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags= 9;
            Lcd_Cmd(_LCD_SECOND_ROW);
            for(i = 0; i <= 5; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==9)
      {
         if(Rd1_bit)
         {
            h1++;
            if(h1 > 23){h1 = 0;}
            display_dat1();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags= 10;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==10)
      {
         if(Rd1_bit)
         {
            m1++;
            if(m1 > 59){m1= 0;}
            display_dat1();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit){
           Eeprom_Write(5,ye1);Eeprom_Write(6,da1);Eeprom_Write(7,mo1);Eeprom_Write(8,h1);Eeprom_Write(9,m1);
            y=0;Flags=0;
            Lcd_Cmd(_LCD_CURSOR_OFF);
            Lcd_Cmd(_LCD_CLEAR);
            fixed_text();
            Delay_ms(500);
            while(Rd0_bit);
         }
      }
}
 while(y==4){display_dat2();Flags=11;Lcd_Chr(1,5,'-');Lcd_Chr(1,8,'-');Lcd_Chr(2,5,':');Lcd_Out(1,9,"20");
while(Flags==11)
      {
         if(Rd1_bit)
         {
            ye2++;
            if(ye2 > 99){ ye2 = 0;}Eeprom_Write(10,ye2);
            display_dat2();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags=12;
            for(i = 0; i <= 4; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==12)
      {
         if(Rd1_bit)
         {
            mo2++;
            if(mo2 > 12){mo2 = 1;}Eeprom_Write(12,mo2);
             display_dat2();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=13;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==13)
      {
         if(Rd1_bit == 1)
         {
            da2++;
            if(da2> 31){da2 = 0;}Eeprom_Write(11,da2);
            display_dat2();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags= 14;
            Lcd_Cmd(_LCD_SECOND_ROW);
            for(i = 0; i <= 5; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==14)
      {
         if(Rd1_bit)
         {
            h2++;
            if(h2 > 23){h2 = 0;}Eeprom_Write(13,h2);
            display_dat2();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags= 15;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==15)
      {
         if(Rd1_bit)
         {
            m2++;
            if(m2 > 59){m2= 0;}Eeprom_Write(14,m2);
            display_dat2();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit){
            y=0;Flags=0;
            Lcd_Cmd(_LCD_CURSOR_OFF);
            Lcd_Cmd(_LCD_CLEAR);
            fixed_text();
            Delay_ms(500);
            while(Rd0_bit);
         }
      }
}
 while(y==5){display_dat3();Flags=16;Lcd_Chr(1,5,'-');Lcd_Chr(1,8,'-');Lcd_Chr(2,5,':');Lcd_Out(1,9,"20");
while(Flags==16)
      {
         if(Rd1_bit)
         {
            ye3++;
            if(ye3 > 99){ ye3 = 0;}Eeprom_Write(15,ye3);
            display_dat3();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags=17;
            for(i = 0; i <= 4; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==17)
      {
         if(Rd1_bit)
         {
            mo3++;
            if(mo3 > 12){mo3 = 1;}Eeprom_Write(17,mo3);
             display_dat3();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=18;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==18)
      {
         if(Rd1_bit == 1)
         {
            da3++;
            if(da3> 31){da3 = 0;} Eeprom_Write(16,da3);
            display_dat3();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=19;
            Lcd_Cmd(_LCD_SECOND_ROW);
            for(i = 0; i <= 5; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==19)
      {
         if(Rd1_bit)
         {
            h3++;
            if(h3 > 23){h3 = 0;}Eeprom_Write(18,h3);
            display_dat3();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags= 20;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==20)
      {
         if(Rd1_bit)
         {
            m3++;
            if(m3 > 59){m3= 0;}Eeprom_Write(19,m3);
            display_dat3();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit){
            y=0;Flags=0;
            Lcd_Cmd(_LCD_CURSOR_OFF);
            Lcd_Cmd(_LCD_CLEAR);
            fixed_text();
            Delay_ms(500);
            while(Rd0_bit);
         }
      }
}

 while(y==6){display_dat3();Flags=21;Lcd_Chr(1,5,'-');Lcd_Chr(1,8,'-');Lcd_Chr(2,5,':');Lcd_Out(1,9,"20");
while(Flags==21)
      {
         if(Rd1_bit)
         {
            ye4++;
            if(ye4 > 99){ ye4 = 0;}Eeprom_Write(20,ye4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags=22;
            for(i = 0; i <= 4; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==22)
      {
         if(Rd1_bit)
         {
            mo4++;
            if(mo4 > 12){mo4 = 1;}Eeprom_Write(21,mo4);
             display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=23;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==23)
      {
         if(Rd1_bit == 1)
         {
            da4++;
            if(da4> 31){da4 = 0;} Eeprom_Write(22,da4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=24;
            Lcd_Cmd(_LCD_SECOND_ROW);
            for(i = 0; i <= 5; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==24)
      {
         if(Rd1_bit)
         {
            h4++;
            if(h4 > 23){h4 = 0;}Eeprom_Write(23,h4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags= 25;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==25)
      {
         if(Rd1_bit)
         {
            m4++;
            if(m4 > 59){m4= 0;}Eeprom_Write(24,m4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit){
            y=0;Flags=0;
            Lcd_Cmd(_LCD_CURSOR_OFF);
            Lcd_Cmd(_LCD_CLEAR);
            fixed_text();
            Delay_ms(500);
            while(Rd0_bit);
         }
      }
}

}
}

اعلانات

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 27-05-2015, 11:27 AM المشاركة 2   
افتراضي


ملفات المحاكات
http://www.up-00.com/?P0Tb

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:79
قديم 27-05-2015, 07:31 PM المشاركة 3   
افتراضي


هذا الكود مكتوب للمتحكم PIC16F1939 كما هو واضح في ملف المشروع بالميكروسي.
وهو متحكم بذاكرة أكبر من البيك Pic16F877a وبمواصفات أفضل.
والاثنين مختلفين كذلك في بعض الإعدادات .
غيرت Pic16F877a الى PIC16F1939 في بروتوس و شغلته فلم يسجل بروتوس اي خطأ:


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 27-05-2015, 09:22 PM المشاركة 4   
افتراضي


شكرا اخي العزيز
نعم فهو شغال على البيكPIC16F1939
لاني غيرت لبيك وعندما وضعته لم اغيره من الميكروسي
بما ان البيكPIC16F1939 غير موجودن عندنا
فاني استعمل البيك PIC16F877
فالمشكلة هي زيادة
اريد زيادة هدا الكود 9 مرات بقيم مختلفة
اني كتبته اربع مرات لا يمكن البيك المزيد
كود:
while(y==6){display_dat3();Flags=21;Lcd_Chr(1,5,'-');Lcd_Chr(1,8,'-');Lcd_Chr(2,5,':');Lcd_Out(1,9,"20");
while(Flags==21)
      {
         if(Rd1_bit)
         {
            ye4++;
            if(ye4 > 99){ ye4 = 0;}Eeprom_Write(20,ye4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags=22;
            for(i = 0; i <= 4; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==22)
      {
         if(Rd1_bit)
         {
            mo4++;
            if(mo4 > 12){mo4 = 1;}Eeprom_Write(21,mo4);
             display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=23;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==23)
      {
         if(Rd1_bit == 1)
         {
            da4++;
            if(da4> 31){da4 = 0;} Eeprom_Write(22,da4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit == 1)
         {
            Flags=24;
            Lcd_Cmd(_LCD_SECOND_ROW);
            for(i = 0; i <= 5; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==24)
      {
         if(Rd1_bit)
         {
            h4++;
            if(h4 > 23){h4 = 0;}Eeprom_Write(23,h4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit)
         {
            Flags= 25;
            for(i = 0; i <= 2; i++)
            {
               Lcd_Cmd(_LCD_MOVE_CURSOR_RIGHT);
            }
            while(Rd0_bit);
         }
      }
      while(Flags==25)
      {
         if(Rd1_bit)
         {
            m4++;
            if(m4 > 59){m4= 0;}Eeprom_Write(24,m4);
            display_dat4();
            Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
            while(Rd1_bit);
         }
         else if(Rd0_bit){
            y=0;Flags=0;
            Lcd_Cmd(_LCD_CURSOR_OFF);
            Lcd_Cmd(_LCD_CLEAR);
            fixed_text();
            Delay_ms(500);
            while(Rd0_bit);
         }
      }
}


Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:79
قديم 27-05-2015, 09:36 PM المشاركة 5   
افتراضي


إخي إذا كان المشكل مع Pic16F877A هو حجم الذاكرة ممكن تضيف ذاكرة خارجية مثل 24c16 أو أكبر .
هذه الذاكرات متوفرة بكثرة لأنها مطلوبة في صيانة الأجهزة مثل جهاز التلفزيون والريسيفر.
الربط مع البيك مثل DS1307 والتفريق بينهما يتم برمجيا .
وفي هذا القسم مواضيع تشرح كيفية زيادة حجم الذاكرة بهذه الطريقة وبالميكروسي.


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 27-05-2015, 10:11 PM المشاركة 6   
افتراضي


إخي إذا كان المشكل مع Pic16F877A هو حجم الذاكرة ممكن تضيف ذاكرة خارجية مثل 24c16 أو أكبر .
هذه الذاكرات متوفرة بكثرة لأنها مطلوبة في صيانة الأجهزة مثل جهاز التلفزيون والريسيفر.
الربط مع البيك مثل DS1307 والتفريق بينهما يتم برمجيا .
وفي هذا القسم مواضيع تشرح كيفية زيادة حجم الذاكرة بهذه الطريقة وبالميكروسي.
شكرا اخي
المشكلة في داكرة البرمجة 8K ROM memory in FLASH technology
ليس في الابروم
24c16
هل من حل لختصار الكود
لاني حاولت ان اضع قيم في مصوفة وخزنها في الابروم بعنوان مختلف ثم مقارنتها ولم افلح


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 27-05-2015, 10:26 PM المشاركة 7   
افتراضي


الذاكرة الدائمة ROM نوعين من الذاكرة الأولى لحفظ البرنامج والثانية لحفظ المعلومات
ذاكرة البرنامج Flash memory ومهمتها أن تحتفظ ببرنامج التشغيلالذي تم برمجته من قبل المستخدم
ذاكرة المعلومات Information Memory وهى من النوع EEPROM ذاكرة القراءة فقط للبرمجة
أما بالنسبة للمتحكم PIC16F877A فإنه يمتلك ذاكرة سعة 8 كيلو بايت (8000 بايت) ، أما الذاكرة المؤقته RAM فهى بسعة 368 بايت بالإضافة الى ذاكرة القراءة فقط EEPROM بسعة 256 بايت.

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 10:51 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025