اطلاعیه

Collapse
No announcement yet.

سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

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

    پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

    نوشته اصلی توسط ATROBOT
    سلام تا جایی که میشه از دستور goto استفاده نکنید چون بعضی مواقع باعث هنگ کردن میکرو میشه . :redface:
    بستگی داره کجا استفاده بشه. مثلا داخل اینتراپت ها نباید استفاده کرد.
    جاهایی هم که باعث حلقه های تو در تو میشه نباید استفاده بشه
    گفت که دیوانه نهی لایق این خانه نهی

    دیدگاه


      پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

      خوب منم نوشتم بعضی مواقع . :biggrin:
      باد می وزد ...
      میتوانی در مقابلش هم دیوار بسازی ، هم آسیاب بادی
      تصمیم با تو است ...

      دیدگاه


        پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

        نوشته اصلی توسط Finder_
        از اینتراپت سرریز تایمر استفاده کن.
        سوال دومو نفهمیدم. واضحتر بگین
        چطوی یه راهنمایی میکنید.
        در کدی که گزاشتم میشه جلوی while یه تایمر گزاشت؟اونم در چند خط؟برنامه در همون خط while() صبر نمیکنه؟ مثلا در دستور while(!(TIFR&0x02)); برنامه به خطوط بعدی نمیره.

        دیدگاه


          پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

          تایمر رو باید فعال کنی.
          در مورد راه اندازی اینتراپت تایمر توی همین سایت یه سرچی بزن اطلاعات زیادی در موردش هست. اگه به مشکل برخوردی بازم بگو
          گفت که دیوانه نهی لایق این خانه نهی

          دیدگاه


            پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

            آیا امکان تعریف زیر روتین وقفه قبل از تابع main وجود داره؟

            به این شکل

            interrupt [USART_RXC] void usart_rx_isr(void)
            }

            {

            void main()

            دیدگاه


              پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

              نوشته اصلی توسط سایمون
              آیا امکان تعریف زیر روتین وقفه قبل از تابع main وجود داره؟

              به این شکل

              interrupt [USART_RXC] void usart_rx_isr(void)
              }

              {

              void main()
              باید قبل از main تعریف بشه
              گفت که دیوانه نهی لایق این خانه نهی

              دیدگاه


                پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                نوشته اصلی توسط Finder_
                تایمر رو باید فعال کنی.
                در مورد راه اندازی اینتراپت تایمر توی همین سایت یه سرچی بزن اطلاعات زیادی در موردش هست. اگه به مشکل برخوردی بازم بگو
                چیزی پیدا نکردم.لطفا یه لینک بدید که یه مثال یا یه نمونه اینتراپت تایمر صفر داشته باشه.

                دیدگاه


                  پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                  باید قبل از main تعریف بشه
                  پس مشکلی نداره
                  چون توی برنامه هایی که تا الان دیدم همیشه بعد از تابع main تعریف میشد

                  دیدگاه


                    پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                    نوشته اصلی توسط ((O-I-O))
                    چیزی پیدا نکردم.لطفا یه لینک بدید که یه مثال یا یه نمونه اینتراپت تایمر صفر داشته باشه.

                    کد:
                    /*****************************************************
                    َAutor: MoslemYazdani
                    *****************************************************/
                    
                    #include <mega8.h>
                    
                    // Timer 0 overflow interrupt service routine
                    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                    {
                    // Place your code here
                    
                    }
                    
                    // Declare your global variables here
                    
                    void main(void)
                    {
                    // Declare your local variables here
                    
                    // Input/Output Ports initialization
                    // Port B initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTB=0x00;
                    DDRB=0x00;
                    
                    // Port C initialization
                    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTC=0x00;
                    DDRC=0x00;
                    
                    // Port D initialization
                    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                    PORTD=0x00;
                    DDRD=0x00;
                    
                    // Timer/Counter 0 initialization
                    // Clock source: System Clock
                    // Clock value: 0/977 kHz
                    TCCR0=0x05;
                    TCNT0=0x00;
                    
                    // Timer/Counter 1 initialization
                    // Clock source: System Clock
                    // Clock value: Timer1 Stopped
                    // Mode: Normal top=0xFFFF
                    // OC1A output: Discon.
                    // OC1B output: Discon.
                    // Noise Canceler: Off
                    // Input Capture on Falling Edge
                    // Timer1 Overflow Interrupt: Off
                    // Input Capture Interrupt: Off
                    // Compare A Match Interrupt: Off
                    // Compare B Match Interrupt: Off
                    TCCR1A=0x00;
                    TCCR1B=0x00;
                    TCNT1H=0x00;
                    TCNT1L=0x00;
                    ICR1H=0x00;
                    ICR1L=0x00;
                    OCR1AH=0x00;
                    OCR1AL=0x00;
                    OCR1BH=0x00;
                    OCR1BL=0x00;
                    
                    // Timer/Counter 2 initialization
                    // Clock source: System Clock
                    // Clock value: Timer2 Stopped
                    // Mode: Normal top=0xFF
                    // OC2 output: Disconnected
                    ASSR=0x00;
                    TCCR2=0x00;
                    TCNT2=0x00;
                    OCR2=0x00;
                    
                    // External Interrupt(s) initialization
                    // INT0: Off
                    // INT1: Off
                    MCUCR=0x00;
                    
                    // Timer(s)/Counter(s) Interrupt(s) initialization
                    TIMSK=0x01;
                    
                    // USART initialization
                    // USART disabled
                    UCSRB=0x00;
                    
                    // Analog Comparator initialization
                    // Analog Comparator: Off
                    // Analog Comparator Input Capture by Timer/Counter 1: Off
                    ACSR=0x80;
                    SFIOR=0x00;
                    
                    // ADC initialization
                    // ADC disabled
                    ADCSRA=0x00;
                    
                    // SPI initialization
                    // SPI disabled
                    SPCR=0x00;
                    
                    // TWI initialization
                    // TWI disabled
                    TWCR=0x00;
                    
                    // Global enable interrupts
                    #asm("sei")
                    
                    while (1)
                       {
                       // Place your code here
                    
                       }
                    }
                    تایمر با فرکانس 977 هرتز میشماره و پس از رسیدن به 255 سریز میشه. که نتیجه اون زیر روال مربوط به سرریز اجرا میشه. میشه هر 262 میلی ثانیه یه بار تایمر سرریز میشه.
                    گفت که دیوانه نهی لایق این خانه نهی

                    دیدگاه


                      پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                      نوشته اصلی توسط سایمون
                      پس مشکلی نداره
                      چون توی برنامه هایی که تا الان دیدم همیشه بعد از تابع main تعریف میشد
                      توی این مورد تفاوتی نداره. اما اگه بخوای تابعی تعریف کنی حتما باید قبل از mainباشه. مگه اینکه قبل از main به صورت پارامتری تعریف کنی و بعد از اون بدنه اصلی تابع رو به صورت کامل بنویسی
                      گفت که دیوانه نهی لایق این خانه نهی

                      دیدگاه


                        پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                        نتیجه اند یک عدد با یه ارایه چی میشه؟
                        کد:
                        m[y] & 128

                        دیدگاه


                          پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                          نوشته اصلی توسط ((O-I-O))
                          نتیجه اند یک عدد با یه ارایه چی میشه؟
                          کد:
                          m[y] & 128
                          y چیه دقیقا؟
                          اگه اندیس آرایه باشه. مقدار متانظر با همون اندیس رو با عدد مشخص شده & میکنه
                          گفت که دیوانه نهی لایق این خانه نهی

                          دیدگاه


                            پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                            نوشته اصلی توسط Finder_
                            y چیه دقیقا؟
                            اگه اندیس آرایه باشه. مقدار متانظر با همون اندیس رو با عدد مشخص شده & میکنه
                            y اندیس ارایه هست.ممنون.

                            دیدگاه


                              پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                              سلام من یه سوالی درباره پیدا کردن کدها برای هر عدد در کی پد دارم اگر کمکم کنید ممنون میشم

                              دیدگاه


                                پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                                نوشته اصلی توسط p2daaaaa
                                سلام من یه سوالی درباره پیدا کردن کدها برای هر عدد در کی پد دارم اگر کمکم کنید ممنون میشم
                                سوالتونو بفرمایید
                                گفت که دیوانه نهی لایق این خانه نهی

                                دیدگاه

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