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

   

banna1980
:: مهندس متميز ::
تاريخ التسجيل: Apr 2010
الدولة: مصر - السويس
المشاركات: 403
نشاط [ banna1980 ]
قوة السمعة:
قديم 02-01-2013, 07:30 PM المشاركة 9   
افتراضي



السلام عليكم ورحمة الله وبركاته


ضع portb =0; قبل امر trisb=0;

اعلانات

masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:
قديم 02-01-2013, 07:38 PM المشاركة 10   
افتراضي


السلام عليكم ورحمة الله وبركاتة
الاضاءة العشوائية ربما تعني ان هناك امر ما قام بها ... لست ادري ماهو.

اذا وضعت الكود ربما يفيدك أحد الاعضاء الكرام.

حاول تراجع الكود والاوامر الخاصة بالمنافذ
او بالمتغير الذي عملته للمصفوفة حتى لا يخرج عن نطاق عدد خانات المصفوفة
او لست ادري ماذا.

وفقك الله

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

aziz_botta2002
:: مهندس ::
تاريخ التسجيل: May 2011
المشاركات: 10
نشاط [ aziz_botta2002 ]
قوة السمعة:
قديم 02-01-2013, 09:14 PM المشاركة 11   
افتراضي


السلام عليكم ورحمة الله وبركاتة
الاضاءة العشوائية ربما تعني ان هناك امر ما قام بها ... لست ادري ماهو.

اذا وضعت الكود ربما يفيدك أحد الاعضاء الكرام.

حاول تراجع الكود والاوامر الخاصة بالمنافذ
او بالمتغير الذي عملته للمصفوفة حتى لا يخرج عن نطاق عدد خانات المصفوفة
او لست ادري ماذا.

وفقك الله
اتفضل يا اخى

New Text Document.txt - 3.94 KB


masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:
قديم 02-01-2013, 11:27 PM المشاركة 12   
افتراضي


هذا هو كود اخونا aziz_botta2002 للمراجعة من الاخوه في المنتدى
الرجاء توضيح سبب ان هناك اضاءة عشوائية لبعض الليدات

كود:
 void khaled()
            { char x;
              for(x=0;x<3;x++){
                PORTB=0B11111111; PORTA=0B11111111; delay_ms(250);
                PORTB=0B00000000; PORTA=0B00000000; delay_ms(250);
                               }
             }

void sara ()
           {PORTB=0B00000000; PORTA=0B00000000; delay_ms(250);}

void ali()
           {PORTB=0B11111111; PORTA=0B00000001; delay_ms(250);}

char o = 0;
char mak;

void aziz()
          { char t;
            for(t=0;t<3;t++){
                              PORTB=0B00000000; PORTA=0B00000001; delay_ms(250);
                              mak = 0b10000000;
                              
                              for (o = 0; o < 8; o++){
                                  PORTB = mak; PORTA=0B00000000;
                                  delay_ms(250);
                                  mak = (mak >> 1);   }

                              sara ();
                              mak = 0B00000001; PORTA=0B00000000; delay_ms(250);
                              
                              for (o = 0; o < 8; o++){
                                  PORTB = mak; PORTA=0B00000000;
                                  delay_ms(250);
                                  mak = (mak << 1);   }

                              PORTB=0B00000000; PORTA=0B00000001;delay_ms(250);
                              sara ();
                             }
           }

char i = 0;
char buffer;

char y = 0;
char matrixb[18]={0B10000001,0B01000001,0B00100001,0B00010001,0B00001001,0B00000101,0B00000011,0B00000011,0B10000011,0B01000011,0B00100011,0B00010011,0B00001011,0B00000111,0B00000111,0B10000111,0B01000111,0B00100111};
char matrixa[18]={0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000001,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000001,0B00000000,0B00000000,0B00000000};
char k = 0;
char matrixc[8]={0B00001111,0B00001111,0B10001111,0B01001111,0B00101111,0B00011111,0B00011111,0B10011111};
char matrixd[8]={0B00000000,0B00000001,0B00000000,0B00000000,0B00000000,0B00000000,0B00000001,0B00000000};
char j = 0;
char matrixv[27]={0B10000001,0B10000010,0B10000100,0B10001000,0B10010000,0B10100000,0B11000000,0B11000001,0B11000010,0B11000100,0B11001000,0B11010000,0B11100000,0B11100001,0B1100010,0B11100100,0B11101000,0B11110000,0B11110001,0B11110010,0B11110100,0B11111000,0B11111001,0B11111010,0B11111100,0B11111101,0B11111110};


void main(){
     unsigned short m,a,g,z,s,n,h;
     trisa=0;trisb=0;porta=0;portb=0;
loop:
      khaled ();
      PORTB=0B00000000; PORTA=0B00000001; delay_ms(250);
      buffer = 0b10000000;
    
    for (i = 0; i < 8; i++){
                            PORTB = buffer; PORTA=0B00000000;
                            delay_ms(250);
                            buffer = (buffer >> 1);
                            }
      PORTB=0B00000001; PORTA=0B00000001; delay_ms(250);

      for(y=0;y<=18;y++){
                         portb=matrixb[y];
                         PORTA=matrixa[y]; delay_ms(250);
                         }
      PORTB=0B00010111; PORTA=0B00000000;  delay_ms(250);

      for(k=0;k<=8;k++){
                        portb=matrixc[k];
                        PORTA=matrixd[k]; delay_ms(250);
                        }
      khaled ();
      PORTB=0B00000000; PORTA=0B00000000; delay_ms(250);
      buffer = 0b00000001;
      
      for (i = 0; i < 8; i++){
                              PORTB = buffer; PORTA=0B00000000;
                              delay_ms(250);
                              buffer = (buffer << 1);
                              }
      PORTB=0B00000000;
      buffer = 0b00000001; PORTA=0B00000001; delay_ms(250);
      
      for (i = 0; i < 8; i++){
                              PORTB = buffer; PORTA=0B00000001;
                              delay_ms(250);
                              buffer = (buffer << 1);
                              }
       for(j=0;j<=27;j++){
                          portA=0B00000001;
                          portB=matrixv[j];
                          delay_ms(250);
                          }
       ali();
       khaled ();
       for(z=0;z<3;z++){
                        PORTB=0B00010000; delay_ms(250); for(a=0;a<4;a++){PORTA=0B00000000;}
                        PORTB=0B00111000; delay_ms(250);
                        PORTB=0B01111100; delay_ms(250);
                        PORTB=0B11111110; delay_ms(250);
                        PORTB=0B11111111; delay_ms(250);for(h=0;h<5;h++){PORTA=0B00000001;};
                        PORTB=0B11101111; delay_ms(250);
                        PORTB=0B11000111; delay_ms(250);
                        PORTB=0B10000011; delay_ms(250);
                        PORTB=0B00000001; delay_ms(250);
                        sara ();
                        }
       for(s=0;s<5;s++){
                        PORTB=0B10011100;PORTA=0B00000001; delay_ms(250);
                        PORTB=0B01110011; PORTA=0B00000000; delay_ms(250);
                        }
       for(n=0;n<5;n++){
                        PORTB=0B00111000; PORTA=0B00000000; delay_ms(250);
                        PORTB=0B11000111; PORTA=0B00000001; delay_ms(250);
                        }
      aziz ();
      khaled();
      for(z=0;z<5;z++){
                       PORTB=0B10000000; PORTA=0B00000001; delay_ms(250);
                       PORTB=0B11000000; for(g=0;g<7;g++){PORTA=0B00000000;} delay_ms(250);
                       PORTB=0B01100000; delay_ms(250);
                       PORTB=0B00110000; delay_ms(250);
                       PORTB=0B00011000; delay_ms(250);
                       PORTB=0B00001100; delay_ms(250);
                       PORTB=0B00000110; delay_ms(250);
                       PORTB=0B00000011; delay_ms(250);
                       }
            goto loop;
         
         }
ولكم جزيل الشكر والعرفان


banna1980
:: مهندس متميز ::
تاريخ التسجيل: Apr 2010
الدولة: مصر - السويس
المشاركات: 403
نشاط [ banna1980 ]
قوة السمعة:
قديم 03-01-2013, 12:10 AM المشاركة 13   
افتراضي


هذا هو كود اخونا aziz_botta2002 للمراجعة من الاخوه في المنتدى
الرجاء توضيح سبب ان هناك اضاءة عشوائية لبعض الليدات

كود:
 void khaled()
            { char x;
              for(x=0;x<3;x++){
                PORTB=0B11111111; PORTA=0B11111111; delay_ms(250);
                PORTB=0B00000000; PORTA=0B00000000; delay_ms(250);
                               }
             }

void sara ()
           {PORTB=0B00000000; PORTA=0B00000000; delay_ms(250);}


void ali()
           {PORTB=0B11111111; PORTA=0B00000001; delay_ms(250);}

char o = 0;
char mak;

void aziz()
          { char t;
            for(t=0;t<3;t++){
                              PORTB=0B00000000; PORTA=0B00000001; delay_ms(250);
                              mak = 0b10000000;
                              
                              for (o = 0; o < 8; o++){
                                  PORTB = mak; PORTA=0B00000000;
                                  delay_ms(250);
                                  mak = (mak >> 1);   }

                              sara ();
                              mak = 0B00000001; PORTA=0B00000000; delay_ms(250);
                              
                              for (o = 0; o < 8; o++){
                                  PORTB = mak; PORTA=0B00000000;
                                  delay_ms(250);
                                  mak = (mak << 1);   }

                              PORTB=0B00000000; PORTA=0B00000001;delay_ms(250);
                              sara ();
                             }
           }

char i = 0;
char buffer;

char y = 0;
char matrixb[18]={0B10000001,0B01000001,0B00100001,0B00010001,0B00001001,0B00000101,0B00000011,0B00000011,0B10000011,0B01000011,0B00100011,0B00010011,0B00001011,0B00000111,0B00000111,0B10000111,0B01000111,0B00100111};
char matrixa[18]={0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000001,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000000,0B00000001,0B00000000,0B00000000,0B00000000};
char k = 0;
char matrixc[8]={0B00001111,0B00001111,0B10001111,0B01001111,0B00101111,0B00011111,0B00011111,0B10011111};
char matrixd[8]={0B00000000,0B00000001,0B00000000,0B00000000,0B00000000,0B00000000,0B00000001,0B00000000};
char j = 0;
char matrixv[27]={0B10000001,0B10000010,0B10000100,0B10001000,0B10010000,0B10100000,0B11000000,0B11000001,0B11000010,0B11000100,0B11001000,0B11010000,0B11100000,0B11100001,0B1100010,0B11100100,0B11101000,0B11110000,0B11110001,0B11110010,0B11110100,0B11111000,0B11111001,0B11111010,0B11111100,0B11111101,0B11111110};


void main(){
     unsigned short m,a,g,z,s,n,h;
     trisa=0;trisb=0;porta=0;portb=0;
loop:
      khaled ();
      PORTB=0B00000000; PORTA=0B00000001; delay_ms(250);
      buffer = 0b10000000;
    
    for (i = 0; i < 8; i++){
                            PORTB = buffer; PORTA=0B00000000;
                            delay_ms(250);
                            buffer = (buffer >> 1);
                            }
      PORTB=0B00000001; PORTA=0B00000001; delay_ms(250);

      for(y=0;y<=18;y++){
                         portb=matrixb[y];
                         PORTA=matrixa[y]; delay_ms(250);
                         }
      PORTB=0B00010111; PORTA=0B00000000;  delay_ms(250);

      for(k=0;k<=8;k++){
                        portb=matrixc[k];
                        PORTA=matrixd[k]; delay_ms(250);
                        }
      khaled ();
      PORTB=0B00000000; PORTA=0B00000000; delay_ms(250);
      buffer = 0b00000001;
      
      for (i = 0; i < 8; i++){
                              PORTB = buffer; PORTA=0B00000000;
                              delay_ms(250);
                              buffer = (buffer << 1);
                              }
      PORTB=0B00000000;
      buffer = 0b00000001; PORTA=0B00000001; delay_ms(250);
      
      for (i = 0; i < 8; i++){
                              PORTB = buffer; PORTA=0B00000001;
                              delay_ms(250);
                              buffer = (buffer << 1);
                              }
       for(j=0;j<=27;j++){
                          portA=0B00000001;
                          portB=matrixv[j];
                          delay_ms(250);
                          }
       ali();
       khaled ();
       for(z=0;z<3;z++){
                        PORTB=0B00010000; delay_ms(250); for(a=0;a<4;a++){PORTA=0B00000000;}
                        PORTB=0B00111000; delay_ms(250);
                        PORTB=0B01111100; delay_ms(250);
                        PORTB=0B11111110; delay_ms(250);
                        PORTB=0B11111111; delay_ms(250);for(h=0;h<5;h++){PORTA=0B00000001;};
                        PORTB=0B11101111; delay_ms(250);
                        PORTB=0B11000111; delay_ms(250);
                        PORTB=0B10000011; delay_ms(250);
                        PORTB=0B00000001; delay_ms(250);
                        sara ();
                        }
       for(s=0;s<5;s++){
                        PORTB=0B10011100;PORTA=0B00000001; delay_ms(250);
                        PORTB=0B01110011; PORTA=0B00000000; delay_ms(250);
                        }
       for(n=0;n<5;n++){
                        PORTB=0B00111000; PORTA=0B00000000; delay_ms(250);
                        PORTB=0B11000111; PORTA=0B00000001; delay_ms(250);
                        }
      aziz ();
      khaled();
      for(z=0;z<5;z++){
                       PORTB=0B10000000; PORTA=0B00000001; delay_ms(250);
                       PORTB=0B11000000; for(g=0;g<7;g++){PORTA=0B00000000;} delay_ms(250);
                       PORTB=0B01100000; delay_ms(250);
                       PORTB=0B00110000; delay_ms(250);
                       PORTB=0B00011000; delay_ms(250);
                       PORTB=0B00001100; delay_ms(250);
                       PORTB=0B00000110; delay_ms(250);
                       PORTB=0B00000011; delay_ms(250);
                       }
            goto loop;
         
         }
ولكم جزيل الشكر والعرفان

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

bortb=0;porta=0;


الامر الاخر لابد من تعريف نوع البورت هل هو دخل ام خرج وذلك عن طريق امر

trisb=0;tira=0 ومعنى 0 انه خرج ومعنى 1 (غير مستخدم) انه دخل (لو سويتش مثلا) وفقك الله


banna1980
:: مهندس متميز ::
تاريخ التسجيل: Apr 2010
الدولة: مصر - السويس
المشاركات: 403
نشاط [ banna1980 ]
قوة السمعة:
قديم 03-01-2013, 12:17 AM المشاركة 14   
افتراضي


اخي الكريم :: الكود طوييييييييييييييييييل جدا

بداية حاول تغير الطريقة الثنائية بالعشرية لكي يصبح البرنامج مبسط

حاول تقلل من استخام الدوال


وفقك الله


masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:
قديم 03-01-2013, 10:02 AM المشاركة 15   
افتراضي


حياك لله
انت ذكرت في البداية انك تستخدم البيك pic16f628a
وهذا البك يتطلب اضافة امر وهو cmcon=0x07
كود:
 
void main()  {
cmcon=0x07;
يتم اضافته في بداية البرنامج في اول الدالة main
وذلك حتى يتم استخدام المنفذ a بشكل طبيعي

راجع الكود التالي الذي اعطاك اياه اخونا حيدر

كود:
 char i=0;
char matrixa[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
char matrixb[]={2,4,6,8,10,1,3,5,7,9,11,14,20,34,56,43,12};
void main()
 {cmcon=07;
 trisa=0;trisb=0;porta=0;portb=0;
 while(1)
         {for(i=0;i<=17;i++)
                            {porta=matrixa[i];
                             portb=matrixb[i];
                             delay_ms(250);
                             }
         }
وان شاء الله تحتل مشكلتك قريباً
راجع كتاب الاستاذ احمد سمير فايد الذي بعنوان
المفتاح البسيط للتعامل مع أنواع مختلفة من الميكروكنترولر- نسخة منقحة



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