اطلاعیه

Collapse
No announcement yet.

سوال ساده ، ولی من بلد نیستم؟

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

    سوال ساده ، ولی من بلد نیستم؟

    سلام دوستان عزیز

    یک پروژه کوچک در صفحه 189 کتاب آقای ره افروز است که من 3 روز است نمی توانم اجرا کنم

    ببینید اشکال آن چیست ؟

    #include <mega32.h>
    main()
    {
    DDRC=0x01;
    PORTC.7=1; //PULL up on
    while(1)
    PORTC.0=PINC.7;
    }

    در این برنامه یک شاسی که به پورت C.7 متصل شده را فشار می دهیم نا LED ما روشن شود در پورت C.0

    ولی این برنامه جواب نمی دهد

    ][/url]


    نمی توان بفهمم Tri-state یعنی چی؟

    #2
    پاسخ : سوال ساده ، ولی من بلد نیستم؟

    سلام

    با مدار زیر پین C.7 باید ورودی Pullup باشه و C.0 خروجی صفر

    برنامش هم این میشه:

    while(1);
    if(PINC.7==1)
    PORTC.0=1;
    خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

    دیدگاه


      #3
      پاسخ : سوال ساده ، ولی من بلد نیستم؟

      سلام دوست عزیز

      در AVR studio درست جواب می دهد ولی در protus نه

      یک سوال :وقتی ما مقاومت pull up پورت c.7 را فعال می کنیم . وقتی که دکمه را فشار می دهی مگه م نباید پورت c.7 صفر شود چون با زمین اتصال کوتاه می شود؟

      دیدگاه


        #4
        پاسخ : سوال ساده ، ولی من بلد نیستم؟

        سلام دوست من
        شما با پول پ کردن یک پین در واقع میای و اون پین را از داخل با یه مقاومت 5 کیلو اهم به Vcc وصل میکنی خب همونطور که معلومه شما وقتی به این پین هیچی وصل نکنی یعنی رها باشه و با دونستن این مطلب که ورودی میکرو جریان نمیکشه همواره "1" منطقی را میخونی خب حالا اگه بخواهی به این پین کلید وصل کنی باید اون سر کلید زمین باشه تا شما بتونی تغییر حالت در کلید داشته باشی خب تا اینجا که بحث تئوری بود حالا شما باید واسه اینکه پین ورودی را پول پ کنی دو تا کار (سه تا کاره ولی ما با دوتاش کارمون راه میافته) انجام بدی
        1) باید جهت دیتا(پین) را ورودی تعریف کنی یعنی DDRx=0x00; (یعنی به جای x یکی از پورت ها را میزاری مثلا D)
        2) باید رجیستر پورت را هم "1" بدی یعنی PORTx=0xff;
        که در اینجا من کل یک پورت را ورودی تعریف کردم و مقاومت پول پ را هم فعال کردم
        حالا من یه برنامه نوشتم که پورت D.0 خروجی و بقیه ورودی هستند و led به D.0 وصل شده است
        و من کلید را به D.1 متصل کردم
        اینم برنامه:
        http://www.4shared.com/file/111337544/906a4c48/untitled.html
        فایل هگز:
        http://www.4shared.com/file/111337584/3cdf0344/a_online.html
        پروتئوس:
        http://www.4shared.com/file/111337681/4ef34992/_2__z.html
        اگه بازم اشکالی بود در خدمتم
        فرزندم در راه است

        دیدگاه


          #5
          پاسخ : سوال ساده ، ولی من بلد نیستم؟

          سلام دوست عزیز

          این برنامه ای که شما نوشتید این طوری است که با فشار دادن دکمه، led خاموش می شود، درسته؟

          دیدگاه


            #6
            پاسخ : سوال ساده ، ولی من بلد نیستم؟

            نوشته اصلی توسط ali norbakhsh
            سلام دوست عزیز

            در AVR studio درست جواب می دهد ولی در protus نه

            یک سوال :وقتی ما مقاومت pull up پورت c.7 را فعال می کنیم . وقتی که دکمه را فشار می دهی مگه م نباید پورت c.7 صفر شود چون با زمین اتصال کوتاه می شود؟
            تو protus اگه pull up بزاری دیگه درست کار نمیکنه این protus خیلی مزخرفه و به این چیزا سازگاری نداره و real نیست
            علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

            دیدگاه


              #7
              پاسخ : سوال ساده ، ولی من بلد نیستم؟

              بعد از دستور یه تاخیر چند میکرو ثانیه ای بذار مشکلت حل میشه.
              اگر ندانی کجا میروی هر راهی تو را باخود خواهد برد.

              دیدگاه


                #8
                پاسخ : سوال ساده ، ولی من بلد نیستم؟

                نوشته اصلی توسط ali norbakhsh
                سلام دوست عزیز

                این برنامه ای که شما نوشتید این طوری است که با فشار دادن دکمه، led خاموش می شود، درسته؟
                سلام دوست من
                درست فهمیدی با زدن کلید led خاموش میشه
                فرزندم در راه است

                دیدگاه


                  #9
                  پاسخ : سوال ساده ، ولی من بلد نیستم؟

                  سلام دوستان

                  بنده صلاحیت گفتن این حرف را ندارم چون تازه کار هستم ولی با توجه به گفته های بالا به نظر می رسد که صفحه 189 کتاب آقای امیررهافروز دارای اشکال تایپی می باشد.
                  اگر می خواهیم با فشار دادن کلید led روشن شود باید برنامه این طور تصحیح کرد

                  PORT A.0=~PINA.1

                  درست فکر می کنم؟

                  دیدگاه


                    #10
                    پاسخ : سوال ساده ، ولی من بلد نیستم؟

                    نوشته اصلی توسط ali norbakhsh
                    سلام دوستان

                    بنده صلاحیت گفتن این حرف را ندارم چون تازه کار هستم ولی با توجه به گفته های بالا به نظر می رسد که صفحه 189 کتاب آقای امیررهافروز دارای اشکال تایپی می باشد.
                    اگر می خواهیم با فشار دادن کلید led روشن شود باید برنامه این طور تصحیح کرد

                    PORT A.0=~PINA.1

                    درست فکر می کنم؟
                    سلام دوست من
                    یه جورایی درست فکر میکنین :mrgreen:
                    باید بنویسید PORTA.1=!PINA.0;
                    چون علامت ~ مربوط به NOT بایتی است , ! مربوط به NOT بیتی است
                    فرزندم در راه است

                    دیدگاه


                      #11
                      پاسخ : سوال ساده ، ولی من بلد نیستم؟

                      نوشته اصلی توسط علیرضا کیانی

                      سلام دوست من
                      یه جورایی درست فکر میکنین :mrgreen:
                      باید بنویسید PORTA.1=!PINA.0;
                      چون علامت ~ مربوط به NOT بایتی است , ! مربوط به NOT بیتی است
                      سلام دوست عزیز

                      برای همراهی ممنون
                      جسارت نباشد

                      PORTA.1=!PINA.0
                      جواب نمی دهد
                      حالا شما امتحان کنید ؟
                      همان
                      PORTA.1=~PINA.0
                      جواب می دهد

                      دیدگاه

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