اطلاعیه

Collapse
No announcement yet.

آموزش زبان سی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : آموزش زبان سی

    سلام
    دوستان نمونه سوالات امتحانی واسه درس میکرو کنترلر ای وی آر به زبان سی ندارند :question:
    مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

    دیدگاه


      پاسخ : آموزش زبان سی

      سلام اقا مصطفی
      به زبان بیسک تسلط داری؟ :question: :question:
      **** k i n j ****

      دیدگاه


        پاسخ : آموزش زبان سی

        نوشته اصلی توسط kinj
        سلام اقا مصطفی
        به زبان بیسک تسلط داری؟ :question: :question:
        نه عزیزم :biggrin: :biggrin:
        مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

        دیدگاه


          پاسخ : آموزش زبان سی

          نوشته اصلی توسط سید مصطفی طبسی
          سلام
          دوستان نمونه سوالات امتحانی واسه درس میکرو کنترلر ای وی آر به زبان سی ندارند :question:
          کسی نداره
          مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

          دیدگاه


            پاسخ : آموزش زبان سی

            نوشته اصلی توسط سید مصطفی طبسی
            سلام
            دوستان نمونه سوالات امتحانی واسه درس میکرو کنترلر ای وی آر به زبان سی ندارند :question:
            فکر کنم بهتر باشه این سوال رو تو بخش دروس دانشگاهی بپرسید. نه اینجا.
            دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

            دیدگاه


              پاسخ : آموزش زبان سی

              سلام
              من این برنامه رو توی کدویژن نوشتم ولی یه مشکلی توی پرتوئوس داره اونم اینه که یک لحظه روی همه ال ای دی ها خاموش میشه ؟
              یه سوال دیگه هم دارم از اونجا که من توی توابع ضعیف هستم خواستم بگم اگر بخوام همین برنامه رو با توابع بنویسم چطوری بنویسم
              #include <mega16.h>
              #include <delay.h>
              char i ;
              char x[8]={129, 66, 36, 24, 24, 36, 66, 129} ;
              void main(void)
              {
              DDRA=0XFF;
              PORTA=0X00;
              while (1){
              for (i=1 ; i<=8 ; i++)
              {
              [PORTA = x[i;
              delay_ms(500);
              }

              }
              }
              مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

              دیدگاه


                پاسخ : پاسخ : آموزش زبان سی

                نوشته اصلی توسط سید مصطفی طبسی
                سلام
                من این برنامه رو توی کدویژن نوشتم ولی یه مشکلی توی پرتوئوس داره اونم اینه که یک لحظه روی همه ال ای دی ها خاموش میشه ؟


                حلقه for رو اینطوری تغییر بده مشکل حل میشه :

                کد:
                   for (i=0 ; i<=7 ; i++)
                   {
                   PORTA = x[i];
                   delay_ms(500);
                   }


                شما آخر حلقه رو i=8 گرفته بودی که اصلا توی آرایه خونه 8 وجود نداره. از 0 تا 7 .

                نوشته اصلی توسط سید مصطفی طبسی

                سلام
                یه سوال دیگه هم دارم از اونجا که من توی توابع ضعیف هستم خواستم بگم اگر بخوام همین برنامه رو با توابع بنویسم چطوری بنویسم

                اگه منظورتو درست فهمیده باشم ، اینطوری میشه:

                کد:
                #include <mega16.h>
                #include <delay.h>
                char i ;
                char x[8]={129, 66, 36, 24, 24, 36, 66, 129} ;
                void led()
                {
                   for (i=0 ; i<=7 ; i++)
                   {
                   PORTA = x[i];
                   delay_ms(500);
                   }
                }
                void main(void)
                {
                DDRA=0XFF;
                PORTA=0X00;
                while (1)
                {
                led();
                }
                      
                
                }
                به رویاهات فکر کن!!

                دیدگاه


                  پاسخ : آموزش زبان سی

                  توضیحات دوست خوبمون آقای ماطوسیان درست بود. فقط من یه مقدار در مورد تابع توضیح مقدماتی می دم (تا حدی که خودم بلدم):

                  تابع هدفی که داره مرتب کردن برنامه و ساده تر کردن عیب یابی برنامه هست. زمانی که شما برنامه ای رو قصد دارید به صورت تابع بنویسید، باید به این توجه کنید که آیا تابع شما مقادیر ورودی و خروجی داره یا نه (یعنی آیا مقدار عددی یا متغیری هست که نیاز باشه از برنامه اصلی به داخل تابع ارجاع داده بشه یا نه، و اینکه آیا نیازه که خود تابع درون خودش مقداری رو قرار بده و اون رو ارجاع بده به داخل برنامه اصلی یا نیاز به پدیت کردن متغیر یا رشته خاصی داره).

                  بر اساس اینها می تونید تابع رو بنویسید. که حتماً در مورد سبک نوشتاری هم اطلاعات دارید و نیازی نیست توضیح بدم (اگه نیاز بود بفرمائید).

                  فقط یه توضیح یا به عبارت بهتر، سبک نگارشی رو که سلیقه من می پسنده و برنامه رو زیبا تر می کنه رو خدمتتون می گم. بهتره قبل از main فقط تابع رو معرفی کنید (فقط ذکر عنوان تابع، نوع تابع و نوع ورودی ها)، و معرفی تابع رو بعد از main انجام بدید. این طوری به نظر من برنامه شیک تر میشه و ضمناً همون ابتدای کد معلوم میشه که برنامه چندتا تابع داره.

                  ضمناً این نوع نوشتن مورد قبول بیشتر کد نویس ها هم هست!! :rolleyes:
                  دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                  دیدگاه


                    پاسخ : آموزش زبان سی

                    سلام
                    یک سری ثبات وقفه و جود داره که بیت های فعال ساز وقفه رو در خودش نگهداری می کنه
                    به عنوان مثال ثبات TIMSK
                    و وقفه ها زمانی که رخ میدهند یه جایی پرش می کنند که یه جدولی هست به نام فکر کنم جدول بردار وقفه
                    من این دو رو نیاز دارم و هر چی سرچ کردم پیدا نکردم
                    مثلا من میخواهم پرش کنم ولی چون با جدول بردار وقفه آشنایی ندارم نمیدونم باید از چه دستوری استفاده کنم که وقتی وقفه ی سرریز تایمر صفر و یا 2 و ... اتفاق می یوفته من باید چی بنویسم
                    به عنوان مثال من نمیدونم باید توی پرانتز زیر چی بنویسم چون جدول بردار وقفه رو ندارم
                    ()ISR
                    مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                    دیدگاه


                      پاسخ : آموزش زبان سی

                      سلام چرا توی برنامه ی زیر دستورات داخل وقفه اجرا نمیشه یعنی پایه ی اول پورت بی هر یک ثانیه به ثانیه تغییر وضعیت نمیده
                      #include <mega32.h>
                      #include <delay.h>
                      char count=0;
                      void main(void)
                      {
                      //SREG=SREG|0b10000000;
                      TCCR0=0X04;
                      TCNT0=0X06;
                      TIMSK=0X01;
                      DDRA=DDRA|0X01;
                      PORTA=PORTA&0XFE;
                      DDRB=DDRB|0X01;
                      PORTB=PORTB&FE;
                      while (1)
                      {
                      PORTA=PORTA^0X01;
                      delay_ms(30);

                      }
                      }
                      interrupt [10] void timer0_ovf_isr(void)
                      {
                      count++;
                      if (count>125)
                      {
                      count=0x00;
                      PORTB=PORTB^0X01;
                      }
                      TCNT0=0X06;
                      }
                      مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                      دیدگاه


                        پاسخ : آموزش زبان سی

                        نوشته اصلی توسط سید مصطفی طبسی
                        سلام چرا توی برنامه ی زیر دستورات داخل وقفه اجرا نمیشه یعنی پایه ی اول پورت بی هر یک ثانیه به ثانیه تغییر وضعیت نمیده
                        #include <mega32.h>
                        #include <delay.h>
                        char count=0;
                        void main(void)
                        {
                        //SREG=SREG|0b10000000;
                        TCCR0=0X04;
                        TCNT0=0X06;
                        TIMSK=0X01;
                        DDRA=DDRA|0X01;
                        PORTA=PORTA&0XFE;
                        DDRB=DDRB|0X01;
                        PORTB=PORTB&FE;
                        while (1)
                        {
                        PORTA=PORTA^0X01;
                        delay_ms(30);

                        }
                        }
                        interrupt [10] void timer0_ovf_isr(void)
                        {
                        count++;
                        if (count>125)
                        {
                        count=0x00;
                        PORTB=PORTB^0X01;
                        }
                        TCNT0=0X06;
                        }
                        الان کتاب ره افروز همراهم نیست که دقیقاً مطمئن بشم. اما یادمه برای یه سری از وقفه ها، برای راه اندازی روتین باید این کد رو می نوشتی:
                        کد:
                        #asm("cli")

                        برای خاموش کردن هم باید این کد رو بنویسی:
                        کد:
                        #asm("sei")

                        من این ها رو اکثراً برای وقفه ارسال و دریافت USART استفاده می کنم. درست یادم نیست این ها برای راه اندازی اساس کلیه روتین ها بود یا فقط یه سریشون.
                        ببین این ها رو نیازی نیست داشته باشه؟ تو کتاب راه افروز نوشته.
                        دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                        دیدگاه


                          پاسخ : آموزش زبان سی

                          فکر کنم برعکس گفتید دومی وقفه سراسری رو فعال میکنه و اولی غیر فعال.

                          اگر شاد بودی آرام بخند تا غم بیدار نشود

                          دیدگاه


                            پاسخ : آموزش زبان سی

                            نوشته اصلی توسط Ghasede del
                            فکر کنم برعکس گفتید دومی وقفه سراسری رو فعال میکنه و اولی غیر فعال.
                            آره درست می گید. عذر می خوام. بر عکسه.
                            دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                            دیدگاه


                              پاسخ : آموزش زبان سی

                              سلام باز هم کار نمی کنه ؟؟؟؟
                              مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                              دیدگاه


                                پاسخ : آموزش زبان سی

                                نوشته اصلی توسط سید مصطفی طبسی
                                سلام باز هم کار نمی کنه ؟؟؟؟
                                دستورا رو کجای کد نوشتی؟
                                دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                                دیدگاه

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