اطلاعیه

Collapse
No announcement yet.

مشکل کد زیر چی هست

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

    مشکل کد زیر چی هست

    سلام . کد زیر این هاست که وقتی کلید ۱ رو بزنیم led ۱ روشن میشه . کلید ۲ رو بزنیم led ۲ روشن میشه . اما درست کار نمیکنه .
    ide atmel studio
    کد:
    [FONT=Yekan]#include <avr/io.h>[/FONT]
    int main(void)
    {
        DDRB = 0b00000000;
        PORTB =0b00000011;
        DDRC = 0b00000011;
        PORTC =0b00000000; 
     while (1)
     {
         if(PINB0 ==0 && PINB1==0)
         PORTC = 0b00000011;
         else
         if(PINB0 ==0 && PINB1==1)
         PORTC = 0b00000001;
         else
         if(PINB0 == 1 && PINB1==0)
         PORTC = 0b00000010;
         else
         PORTC = 0x00;
     }
     }
    [URL=http://uplod98.ir/][IMG]http://uplod98.ir/images/opusjv5353kqfkc3mf9.png[/IMG][/URL]
    جدیدترین ویرایش توسط mohsen10000; ۱۰:۴۷ ۱۳۹۷/۰۲/۱۱.

    #2
    پاسخ : مشکل کد زیر چی هست

    سلام
    وقت بخیر
    نوشته اصلی توسط mohsen10000 نمایش پست ها
    سلام . کد زیر این هاست که وقتی کلید ۱ رو بزنیم led ۱ روشن میشه . کلید ۲ رو بزنیم led ۲ روشن میشه . اما درست کار نمیکنه .
    ide atmel studio
    کد:
    [FONT=Yekan]#include <avr/io.h>[/FONT]
    int main(void)
    {
        DDRB = 0b00000000;
        PORTB =0b00000011;
        DDRC = 0b00000011;
        PORTC =0b00000000; 
     while (1)
     {
         if(PINB0 ==0 && PINB1==0)
         PORTC = 0b00000011;
         else
         if(PINB0 ==0 && PINB1==1)
         PORTC = 0b00000001;
         else
         if(PINB0 == 1 && PINB1==0)
         PORTC = 0b00000010;
         else
         PORTC = 0x00;
     }
     }
    [URL="http://uplod98.ir/"][IMG]http://uplod98.ir/images/opusjv5353kqfkc3mf9.png[/IMG][/URL]
    این روش رو امتحان کنید .
    * هر کدام از پایه های pb0 و pb1 رو با یک مقاومت 10 کیلو اهم ، پول آپ کنید .
    ** قبل از هر بار خواندن پینهای ورودی pb0 و pb1، آنها را بصورت نرم افزاری ست (1) نمایید ، مثلا : ( PORTB = 0x03 ) ، و پس از یک تاخیر جزیی ، محتوای پین را بخوانید و ................

    با احترام
    97/2/11

    دیدگاه


      #3
      پاسخ : مشکل کد زیر چی هست

      نوشته اصلی توسط amir_moayeri نمایش پست ها
      سلام
      وقت بخیر

      این روش رو امتحان کنید .
      * هر کدام از پایه های pb0 و pb1 رو با یک مقاومت 10 کیلو اهم ، پول آپ کنید .
      ** قبل از هر بار خواندن پینهای ورودی pb0 و pb1، آنها را بصورت نرم افزاری ست (1) نمایید ، مثلا : ( PORTB = 0x03 ) ، و پس از یک تاخیر جزیی ، محتوای پین را بخوانید و ................

      با احترام
      97/2/11
      ممنون از شما .
      کاملا نفهمیدم . میشه تصویری نشون بدید ؟

      دیدگاه


        #4
        پاسخ : مشکل کد زیر چی هست

        سلام
        وقت بخیر
        نوشته اصلی توسط mohsen10000 نمایش پست ها
        ممنون از شما .
        کاملا نفهمیدم . میشه تصویری نشون بدید ؟


        البته بنده فاقد (هرگونه مهارت و یا آشنایی با زبان سی) هستم ، منتها برای عملکرد صحیح برنامه ، احتمالا باید این کد PORTB = 0x03 را اضافه نمایید .

        کد:
        [FONT=Yekan]#include <avr/io.h>[/FONT]
        int main(void)
        {
            DDRB = 0b00000000;
            PORTB =0b00000011;
            DDRC = 0b00000011;
            PORTC =0b00000000; 
         while (1)
          {
        [COLOR=#0000ff][B]PORTB = 0x03[/B][/COLOR] 
             if(PINB0 ==0 && PINB1==0)
            ;PORTC = 0b00000011
             else
             if(PINB0 ==0 && PINB1==1)
             PORTC = 0b00000001; 
             else
             if(PINB0 == 1 && PINB1==0)
             ;PORTC = 0b00000010
             else
           ;PORTC = 0x00
          }
          }
        با احترام
        97/2/12

        دیدگاه


          #5
          پاسخ : مشکل کد زیر چی هست

          پورت B باید در حالت پول آپ باشه چون با کلید وضعیت صفر رو درست تعریف میکنید ولی وقتی کلید قطع هست وضعیت یک منظقی تعریف نشده است در مدار شما. پس یا پول آپ داخلی رو با استفاده ا ز PINB راه اندازی کنید یا از مقاومتهای خارجی در حد پند کیلو اهم استفاده کنید. یه delay هم بذارید مابین حلقه تون

          دیدگاه

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