اطلاعیه

Collapse
No announcement yet.

نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

    بارها گفتم باز هم میگم کسی هم گوش نمیکنه: میکروکنترلر رو باید با اسمبلی یاد گرفت، این کامپایلرها و زبان های سطح بالا به درد دو دسته میخوره: دست اول افرادی هستند که خوب اسمبلی رو یاد گرفتند و ساختار میکروکنترلرها رو میدونند و آماده هستند که برای صرفه جویی در وقت با C بنویسند و با توجه به اطلاعات قبلیشون خیلی خوب میدونند که هر قسمت از برنامه ای که به زبان C مینویسند چطور ترجمه میشه و کجاش خوبه کجاش بده و در بین برنامه هر جا هم لازم بشه با اسمبلی اصلاحش میکنند که این خیلی خوبه، دسته دوم هم افرادی هستند که اصلا حال و حوصله سر و کله زدن و یاد گرفتن رو ندارند و میان سراغ این کامپایلرها و کتابخانه های آمادش که کارشون راحت انجام بشه، این دسته فقط میتونند پروژه انجام دهند پروژه های متوسط و نسبتا بزرگ رو به بدترین شکل های ممکن انجام میدن و معمولا همیشه همینطور بی سواد میمونند ( مگر اینکه پروژه هاشون خیلی بزرگ بشه و متوجه بشند پایه کارشون مشکل داره ) سعی کنید جزو اون دسته اول باشید تا آینده بهتری داشته باشید و مجبور نشید کار اول رو آخر انجام بدید.
    100 بار دیگه هم بگم باز همه صاف میرند سراغ کامپایلرها و شروع میکنند به برنامه نوشتن و پروژه انجام دادن :angry:
    از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
    هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
    اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
    اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
    شاد و موفق باشید

    دیدگاه


      #17
      پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

      جناب Study میشه ازتون درخواست کنم که یه تاپیک جدید باز کنید و برنامه نویسی PIC با اسمبلی رو توش توضیح بدید؟؟
      شبیه همون تاپیک جناب طراح در انجمن XMEGA . اینطوری شاید ماهم هم زبونتون شدیم!‎
      با تشکر

      دیدگاه


        #18
        پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

        راستش با وجود علاقه ای که به این کار دارم متاسفانه فعلا به دلیل کمبود وقت و گرفتاریهای خاص شرمنده شما و سایر دوستان میشم اما اگر تابستان سرم خلوت تر باشه و فرصتی باشه حتما در خدمت خواهم بود.
        از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
        هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
        اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
        اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
        شاد و موفق باشید

        دیدگاه


          #19
          پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

          آقا STUDY عزیز
          واقعا گل گفتی :cry2: من خودم رنج و عذاب زیادی کشیدم تا فهمیدم این زبان اسمبلی از هر لحاظ بهتره و ترکیب این زبان با C واقعا حرف نداره اگه امکانش هست ما رو در نوشتن E-BOOK میکروهای PIC همراهی کنید.

          موفق باشید

          دیدگاه


            #20
            پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

            نوشته اصلی توسط Study
            بارها گفتم باز هم میگم کسی هم گوش نمیکنه: میکروکنترلر رو باید با اسمبلی یاد گرفت، این کامپایلرها و زبان های سطح بالا به درد دو دسته میخوره: دست اول افرادی هستند که خوب اسمبلی رو یاد گرفتند و ساختار میکروکنترلرها رو میدونند و آماده هستند که برای صرفه جویی در وقت با C بنویسند و با توجه به اطلاعات قبلیشون خیلی خوب میدونند که هر قسمت از برنامه ای که به زبان C مینویسند چطور ترجمه میشه و کجاش خوبه کجاش بده و در بین برنامه هر جا هم لازم بشه با اسمبلی اصلاحش میکنند که این خیلی خوبه، دسته دوم هم افرادی هستند که اصلا حال و حوصله سر و کله زدن و یاد گرفتن رو ندارند و میان سراغ این کامپایلرها و کتابخانه های آمادش که کارشون راحت انجام بشه، این دسته فقط میتونند پروژه انجام دهند پروژه های متوسط و نسبتا بزرگ رو به بدترین شکل های ممکن انجام میدن و معمولا همیشه همینطور بی سواد میمونند ( مگر اینکه پروژه هاشون خیلی بزرگ بشه و متوجه بشند پایه کارشون مشکل داره ) سعی کنید جزو اون دسته اول باشید تا آینده بهتری داشته باشید و مجبور نشید کار اول رو آخر انجام بدید.
            100 بار دیگه هم بگم باز همه صاف میرند سراغ کامپایلرها و شروع میکنند به برنامه نوشتن و پروژه انجام دادن :angry:
            سلام ... اتفاقا من هم اولش میخواستم با اسمبلی بنویسم .... بعدا رفتم کتاب خوندم دیدم مثلا برای انجام دادن یک تفریق ساده ، در زبان اسمبلی باید تمامی اتفاقاتی که میافتد به صورت بیتی ، مثلا one 's complement و two 's complement و carry و این داستان ها را که در مدار منطقی خوندیم دوباره استفاده کنیم .... که این موقعی که با اعداد بزرگتر سر و کار داریم خیلی خیلی دنگ و فنگ داره و سخته ... اگه اشتباه میکنم لطفا بگید.
            دلیل دومم این بود که هر میکرو کنترلری زبون اسمبلی خاص خودشو داره ، و اگه بخوایم میکرو مونو عوض کنیم باید دوباره از دستورات جدیدی استفاده کنیم .
            دلیل سومم اینه که مگه از توی همین کامپایلر های c نمیتونیم به رجیستر های میکرو دسترسی داشته باشیم و اون ها را برنامه ریزی کنیم ؟ پس با خوندن datasheet و کار با همین رجیستر ها میشه میکرو رو اصولی یاد گرفت ... اگه اشتباه میکنم میشه لطف کنید بگید ؟
            دلیل چهارمم اینه که من خودم این ترم آزمایشگاه میکرو کنترلر داشتم . اونجا با زبون اسمبلی میخواستیم یک lcd را با avr راه بندازیم . حدود 30 خط برنامه نوشتیم تا تونستیم یک کلمه 4 حرفی را روی lcd بنویسیم . تازه تمام الگوریتم ها و اطلاعات سازنده های lcd و ... را هم حاضر و آماده به ما داده بودند . و ما فقط باید الگوریتم ها را کد میکردیم ... وقتی این را دیدم بطور کلی وحشت کردم از اینکه برم سراغ اسمبلی . ... من نمیخوام واقعا خدای میکرو بشم ... ولی میدونم در طول دوره ی کاریم گاهی اوقات مجبور میشم پروژه هایی رو با میکرو انجام بدم .ولی خودم هم قبول دارم که اگر بخواهیم دل و جیگر یک میکرو را بیرون بریزیم باید با اسمبلی آشنا باشیم . مثلا همین شرکت microchip برای کار با useart کلی documnet داده بود و 1000 تا مثال برای حالت های مختلفش زده بود ، که همشون اسمبلی بود و من چون از اسمبلی سر در نمیاوردم ، نتونستم ازشون استفاده کنم . ولی اگه آشنا بودم باهاش ، میتونستم همون کد ها رو یک کم تغییر بدم و وسط برنامه c م کپی کنم .
            دلا خوبـــان دل خونيــــن پســـندند
            دلا خون شو که خوبان اين پسندند
            متاع کفر و دين بيآ‌مشتري نيست
            گروهــــي آن گروهي اين پســـندند

            دیدگاه


              #21
              پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

              آقا سینا به هر حال ما اون درس ها رو میخوانیم که اینجور جاها استفاده کنیم، از یکطرف میگیم درس ها به درد نخور هست، از طرفی هم اونا که به درد میخوره رو استفاده نمیکنیم، فرق بین آدم باسواد و بیسواد و کسی که رشته برق و الکترونیک هست و کسی که نیست همینجا معلوم میشه، اگر شما رشته نساجی هم باشید بیای این کتابهای میکرو رو بخوانید میتونید با کامپایلرها کار کنید اما این نکات ریز و تخصصی رو نمیتونید استفاده کنید، پس حالا که وارد این رشته شدید و اینها رو یاد گرفتید و میدونید مفید واقع میشه بهتر هست ازشون استفاده کنید، کمی مشکل تر هست اما ارزشش رو داره، به هر حال عملی که داریم رو باید استفاده کنیم، از قدیم هم گفتن، یه چیز ی تو این مایه ها " علم چندان که بیشتر دانی-- چون عمل در تو نیست نادانی "
              2- بله میکروها زبان خاص خودشون رو دارند اما شما وقتی یک میکرو رو خوب یاد بگیری فقط با مطالعه سریع دیتاشیت میتونید میکروهای دیگه رو هم یاد بگیرید، مثلا میکروهای AVR و XMEGA خیلی شبیه به هم هستند و به راحتی میشه اسمبلی دیگری رو یاد گرفت، میکروهای مایکروچیپ هم تقریبا همینطور هستند، به علاوه من اول از همه اسمبلی 8051 رو یاد گرفتم و زمانی که میخواستم AVR یاد بگیرم اصلا کتاب AVR نبود و من AVR رو هم با اسمبلی کار میکردم اون هم از روی دیتاشیت و اینترنت یاد گرفتم، بعد از اون با 2 روز مطالعه اولین برنامه میکروهای PIC16 رو با اسمبلی نوشتم این در حالی هست که میکروهای سری 16 مایکروچیپ از لحاظ اسمبلی واقعا ضعیف و پردردسر هستند و یادگیری اونها بدون اطلاعات قبلی مشکل هست، بعدز از PIC16 ها هم فقط با نصف روز مطالعه اولین برنامه با PIC18 رو به اسمبلی نوشتم که واقعا از همون PIC16 ها هم راحت تر بود برام. منظورم این هست که شما یکی رو که یاد بگیری با کمی وقت میتونی کار کردن با دیگری رو هم شروع کنی، معماری 8051 و AVR و PIC ربطی به هم ندارند ولی با این وجود من هرسه اینها رو به راحتی یاد گرفتم ( در حد لازم و کافی برای کارهای خودم ) اگر بخوام ARM هم کار کنم یا هر میکروی دیگری کافیه یک نگاه به دیتاشیت و لیست دستورالعمل ها و چندتا برنامه نمونه ساده بکنم و با توجه به اطلاعات قبلیم و تکنیک هایی که از اسمبلی میدونم میتونم با اونها هم کار کنم، ولی خوب هرچی بیشتر کار کنید مسلط تر میشید و نکات بهتری یاد میگیرید، خلاصه اینکه اسمبلی هم به اون سختیها که فکر میکنید نیست، سختیش دفعه اوله. ضمن اینکه اسمبلی رو به این خاطر یاد نمیگیریم که همه کارها رو با اسمبلی انجام بدیم، اسمبلی رو یاد میگیریم که بتونیم همه کارها رو اصولی انجام بدیم، شما با کامپایلر C هم که کار کنید اسمبلی بلد باشید میتونید خیلی خوب با بررسی عملکرد کامپایلر بهترین کدها رو با همون C و ترکیبش با اندکی اسمبلی تولید کنید، هم در وقت صرفه جویی میشه هم خطا کمتر میشه هم کار راحت تر میشه، در جریان کار هم هستید و میدونید دقیقا چه اتفاقی میوفته، اما لازمه اینکار این هست که اسمبلی رو قبلا کار کرده باشید و بلد باشید وگرنه همینجوری که برید با کامپایلر C کار کنید اون هر کدی بخواد تولید میکنه شما هم کاری ندارید چی میشه، آخر کار افتضاحی به بار میاد که شاید شما متوجه نشید اما کسی که میکرو رو اصولی یاد گرفته متوجه میشه که برنامه اصلا مناسب نوشته نشده.
              3- بله درون کامپایلر C و حتی بیسیک هم میشه به رجیسترها و سخت افزار دسترسی داشت، اما مشکلی که اونها دارند اینه که معمولا کاری بیش از کاری که شما میخواید انجام میشه، مثلا شاید برای یک تاخیر 6 خط کد اسمبلی نیاز باشه اما شما دستور DELAY_MS(500) رو مینویسید کامپایلر 12 خط کد اسمبلی براش تولید میکنه، یا مثلا مقداری رو میشه مستقیما درون رجیستر ریخت، کامپایلر میاد لقمه رو دور سرش میچرخونه و اینکار رو انجام میده، منظورم این هست که میشه کارها رو انجام داد اما نه به شکل مناسب. اگر هم از کتابخانه های آماده استفاده کنید که دیگه واویلا هست، تا به حال نشده که من از یک کتابخانه آماده استفاده کنم و کد قابل قبولی برام تولید کنه، همیشه زیادی تولید میکنه، به همین خاطر من تا اونجا که بشه اصلا سراغ کتابخانه های آماده نمیرم و خودم یا در اسمبلی Routine درست میکنم برای کارها یا در C تابع مینویسم، به عنوان مثال من برای کار با LCD معمولی دوتا تابع cwrite() و dwrite() درست میکنم که بشه باهاشون دستور و داده رو فرستاد بعد هر بار هر دستوری بخوام بدم یا داده بفرستم از اینها استفاده میکنم و کد برنامم به مراتب بهتر میشه تا اینکه کتابخانه LCD رو اضافه کنم و استفاده کنم، گاهی هم برای تاخیر ها یک تابع درست میکنم و با اسمبلی توی اون مینویسم و هر بار اون تابع رو صدا میزنم، باز هم خیلی بهتر جواب میده، اگر فرصت شد در مورد نکات ریز اینچنینی سر فرصت با منطق و دلیل بحث میکنیم که چطور کارها رو انجام بدیم که نتیجه بهتری داشته باشه.
              4- در مورد اون مثال LCD که زدید باید عرض کنم که این فقط دفعه اول هست که شما اینقدر مشکل دارید، فراموش نکنید که در اسمبلی هم میتونید copy و paste کنید و یا ماکرو یا روتین درست کنید، مثلا شما دفعه بعد که بخواید برنامه مشابه این رو بنویسید در 1 دقیقه اینکارها رو انجام میدید، همونطور که من حالا به مرور پیش میاد تابع تاخیر بنویسم یا روتین های نوشتن داده در LCD یا فرستادن کد به اون رو هر بار بنویسم، به عنوان مثال من برای نوشتن همین کلمه 4 حرفی که شما اشاره کردید فقط 1 دقیقه وقت نیاز دارم که اون رو با اسمبلی بنویسم و نتیجه کار هم به مراتب بهتر از چیزی میشه که شما با کتابخانه آماده درست میکنید، چراکه قبلا اینکار رو انجام دادم و حالا از اون استفاده میکنم، این همون کاری هست که تابع آماده برای شما انجام میده اما به شکلی نامناسب. من حتی اگر با C هم اینکار رو انجام بدم بازهم کد بهتری خواهم داشت تا اینکه از کتابخانه آماده استفاده کنم.
              5- اشتباه عموم این هست که فکر میکنند اسمبلی فقط برای کسانی هست که میخواند ته میکرو را در بیارند، در حالی که حداقل دانستن اسمبلی برای هر فردی که با میکرو کار میکنه لازم هست تا بتونه کارش رو درست انجام بده، درسته که بدون اون هم میشه انجام داد ولی کار خوب ارزشش خیلی بهتر از کاری هست که فقط انجام میشه که تمام شده باشه.
              ---------------------------
              آقا سعید پیگیر فعالیت هاتون هستم، ببینم برنامه چطور پیش میره اگر فرصت باشه و بتونم هماهنگ کنم بنده هم خوشحال میشم با دوستان خوبی مثل شما و آقای ایجی و سایر دوستان همکاری کنم و کار گروهی با ارزشی انجام بشه.
              ---------------------------
              از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
              هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
              اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
              اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
              شاد و موفق باشید

              دیدگاه


                #22
                پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

                خیلی ممنون از اینکه جواب بسیار مفصلی بهم دادید و منو از ظلمات جهل در آوردید ... راستش را بخواهید من اولش میخواستم از اسمبلی شروع کنم ولی دوستان بنده گفتند که مقدار حافظه خیلی هم مهم نیست و اگر کد بیشتری تولید بشه اشکالی نداره . ولی حالا ملتفت شدم که فقط بحث مقدار حافظه نیست و موضوع اصلی درست کار کردن و بهینه کار کردن است . اتفاقا من هم خیلی از موارد در هنگام استفاده از توابع کتابخانه ای به مشکل برمی خوردم .
                دوستان در دانشگاه از یکی از اساتید تعریف میکرد که اگر میخواهید میکرو کنترلر یاد بگیرید ، از 8051 شروع کنید . یک کتاب کلفتی بود که بچه ها دستشون میگرفتند ، و هی میخوندند . اما الان به نظر شما من از چه ریفرنسی شروع به کار با اسمبلی کنم ؟ data sheet آی سی 18f452 و مثالهاش خوبه ؟ :eek:
                دلا خوبـــان دل خونيــــن پســـندند
                دلا خون شو که خوبان اين پسندند
                متاع کفر و دين بيآ‌مشتري نيست
                گروهــــي آن گروهي اين پســـندند

                دیدگاه


                  #23
                  پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

                  راستش 8051 برای یادگیری اسمبلی خوب هست و برنامه نویسی اسمبلی با اونها هم راحت تر هست، اگر درس اون رو در دانشگاه دارید و هنوز پاس نکردید همون رو خوب بخوانید و عملی هم با 8051 کار کنید مفید خواهد بود و شما را آماده میکنه که میکروهای دیگه رو هم راحت یاد بگیرید، کتابی که اشاره کردید احتمالا کتاب مکنزی هست و کتاب خوبی هست اما کتاب آقای مزیدی ساده تر و برای شروع بهتر هست، کتاب مکنزی برای یاد گرفتن جزئیات بهتر و کاملتر هست. اگر هم این درس را گذراندید یا اصلا ندارید یا به هر شکلی فکر میکنید دیگه با 8051 سروکار نخواهید داشت با اسمبلی PIC16 شروع کنید که مراجع خوب براش هست و به نظر من مشکل ترین اسمبلی هست و هرکسی بتونه با اون خوب کار کنه به راحتی با هر اسمبلی دیگری میتونه کار کنه. نکته ای که در کار کردن اسمبلی هست اینه که لازم نیست همه کاری رو یاد بگیرید، شما باید به طور کلی به یکسری کارهای اصلی و کنترل میکرو مسلط بشید، هر وقت لازم شد کاری رو انجام بدید اون موقع روی اون فکر کنید و براش برنامه بنویسید، در واقع اسمبلی بیشتر خلاقیت و روش های خاصی نیاز داره که بشه باهاش کارهایی که میخواید رو به بهترین شکل بکنید، مثلا در PIC16 دستوری برای تقسیم یا ضرب هشت بیتی هم وجود ندارد و شما باید با تفریق متوالی یا جمع متوالی این کارها رو انجام بدید. البته شما اسمبلی که یاد بگیرید متوجه میشید که هر میکروکنترلری برای کار خاصی هست و دقیقا متوجه میشید که با توجه به ساختار میکروکنترلر از چه چیزی استفاده کنید بهتر هست، مثلا برای پروژه ای که درونش اعمال ریاضی زیاد استفاده میشه سری 16 و قبل از اون از PIC ها زیاد مناسب نیستند چون باید همه این کارها را با دستورات و نرم افزار انجام بدید و کلی از حافظه از دست میره اما اگر از یک PIC18 یا DSPIC یا هر میکرویی که این اعمال رو به صورت سخت افزاری انجام میده و دستور داره براشون انجام بدید کارتون بهتر انجام میشه، اما در عوض برای یک کار کنترلی و کارهایی که نیاز به پردازش سنگین نداره استفاده از میکروهای سری 16 واقعا عالی هست. و خلاصه اینکه اگر اسمبلی بدونید و سخت افزار میکرو رو خوب بشناسید به راحتی میتونید با توجه به شرایط و نیازتون تصمیم درست و انتخاب درست داشته باشید.
                  به نظر من برای شروع و از لحاظ آموزشی 8051 انتنخاب مناسبی هست چراکه منابع خوبی داره و برنامه نویسی اسمبلی ساده و راحتی داره، با اینکه میشه گفت قدیمی شده اما به دلیل قیمت کم یادگیریش خالی از لطف هم نیست و در بعضی موارد میتونه به صرفه تر و مناسب تر از انتخاب های دیگر باشه، اگر 8051 رو خوب یاد بگیرید میکروهای دیگه هم میتونید راحت یاد بگیرید، البته PIC16 و قبل از اون واقعا اسمبلی ضعیف و مشکلی نسبت به سایر میکروها دارند و به نظر من کسی که یاد بگیره با اونها خوب کار بکنه کلا با اسمبلی به مشکل نمیخوره، من خودم از PIC16 که به PIC18 رفتم از لحاظ اسمبلی نفس راحتی کشیدم.
                  باز هم میگم نیازی نست حتما ته اسمبلی و میکرو رو در بیارید، به قدری که مزایا و معایب رو متوجه بشید هم خوب هست، حالا اگر بیشتر یاد بگیرید بهتر.
                  از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                  هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                  اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                  اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                  شاد و موفق باشید

                  دیدگاه


                    #24
                    پاسخ : نحوه مقداردهی رجیسترهای کنترلی در کامپایلر ccs

                    نوشته اصلی توسط محمد ایجی

                    output_d(!input_d());
                    برای not کردن یک بیت میتونی از دستور زیر هم استفاده کنین:
                    output_toggle(PIN_D0);
                    همه چیز را همگان دانند وهمگان هنوز به دنیا نیامده اند.(بزرگمهر حکیم)

                    دیدگاه

                    لطفا صبر کنید...
                    X