اطلاعیه

Collapse
No announcement yet.

مشکل در یک شدن پایه ورودی

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

    مشکل در یک شدن پایه ورودی

    سلام به همگی دوستانی که فعالیت می کنن :applause: :wow:

    خسته نباشین . :nice: :cry2:

    یه سوالی دارم که خیلی راحته oo: oo: اما نمی دونم چرا انجام نمی شه :angry: :angry: .

    یه برنامه ساده نوشتم اما نمی دونم چرا میکرو درست عمل نمی کنه تو این برنامه نوشته بودم که منتظر بمون تا فلان پایه 1 شد و وقتی که 1 شد تو برو فلان پایه رو 1 کن :applause:همین اما میکرو بدون هیچ توجهی :cry2: به پایه ورودی خروجی رو یک می کنه .
    چرا ؟؟؟ :angry: :angry:
    دوستان کمک کنین
    اینم برنامش :

    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Porta = Output
    Config Portb = Input
    Dim A As Bit
    Dim B As Bit
    a=porta
    b=portb
    Do
    If Portb.0 = 1 Then Exit Do
    loop
    Set Porta.0
    End 'end program
    " آدمك آخر دنياست بخند " "آدمك مرگ همين جاست بخند "
    "دست خطي که تو را عاشق كرد" "شوخي كاغذي ماست بخند "
    " آدمك خر نشوي گريه كني " " كل دنيا سراب است بخند "
    " آن خدايي كه بزرگش خواندي " " به خدا مثل تو تنهاست بخند "

    #2
    پاسخ : مشکل در یک شدن پایه ورودی

    سلام دوست من

    شما مقدار اولیه پین مورد نظر رو مشخص نکردید و فقط اونو برابر یک متغیر قرار دادین که مغدارش تعیین نشده.میکرو اونرو 1 فرض میگیره و کار خودشو انجام میده چون منطقش TTL هستش. b=0 قرار بده و برنامرو امتحان کن اگه درست بود دعامون کن.

    موفق باشی دوست من
    سه توصیه دارم:
    1.کار 2.کار 3.کار
    ادیسون

    دیدگاه


      #3
      پاسخ : مشکل در یک شدن پایه ورودی

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

      شما مقدار اولیه پین مورد نظر رو مشخص نکردید و فقط اونو برابر یک متغیر قرار دادین که مغدارش تعیین نشده.میکرو اونرو 1 فرض میگیره و کار خودشو انجام میده چون منطقش TTL هستش. b=0 قرار بده و برنامرو امتحان کن اگه درست بود دعامون کن.

      موفق باشی دوست من
      بببخشید ولی تا جایی که میدونم اساس avr بر cmos است نه ttl

      اگر اشتباه میکنم دوستان بگن
      علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

      دیدگاه


        #4
        پاسخ : مشکل در یک شدن پایه ورودی

        سلام دوست عزبز
        شما 2 تا مشکل داری
        1 : برای خوندن پایه ورودی باید Pinb.0 را بخونی نه Portb.0 .
        2 : مشکل دوم نویزه ، که برای حل اون پایه ورودی را با یک مقاومت 4.7k زمین کن .
        و یا می تونی این طوری کار کنی :
        config portb=input
        set portb.0
        if pinb.0=0 then exit do
        حالا اگر Pinb.0 را زمین بشه از حلقه خارج میشه .
        موفق باشی :bye

        دیدگاه


          #5
          پاسخ : مشکل در یک شدن پایه ورودی

          پایه ورودی رو با یه مقاومت 10 کیلو گراند کن
          من از پایان می ترسیدم و آغاز کردم . . .

          دیدگاه


            #6
            پاسخ : مشکل در یک شدن پایه ورودی

            پین یا پورت فرقی نمیکنه.اگه اون رو مساوی صفر قرار بدی مشکلی نداره و لوزومی به گرند کردن نیست.اگه گرند کنی هم مشکلی نیست. در مورد ttl بودن شما راست میگی cmos هستش من اشتباه کردم.
            سه توصیه دارم:
            1.کار 2.کار 3.کار
            ادیسون

            دیدگاه


              #7
              پاسخ : مشکل در یک شدن پایه ورودی

              سلام دوست عزیز
              pin متغیر ورودی میکرو و port متغیر خروجی میکروست . :arrow:

              دیدگاه


                #8
                پاسخ : مشکل در یک شدن پایه ورودی

                درسته که معماری داخلی AVR بر اساس Cmos هست اما این دلیل بر این نیست که پورتهای I/O هم حتما منطق CMOS داشته باشند، ممکنه بافرهای پورتهای میکرو TTL یا ST یا چیزهای دیگه باشند، متاسفانه از اونجا که مدتی هست با AVR کار نمیکنم برخی از جزییات یادم نیست اما تا اونجا که یادم هست پورتها منطق TTL داشتند و احتمالا در بعضی موارد هم ST. دقیقا یادم نیست. توی دیتاشیت هم فکر نمیکنم خیلی روشن بافرهای هر پورت رو بیان کرده باشه، اما در مورد PIC ها میدونم که مثلا یک تراشه مثل 18F452 که این مدت باهاش سروکار داشتم هم تکنولوژی کارش CMOS هست اما پورتهاش با توجه به کارآیی دارای بافرهای TTL، ST، CMOS یا آنالوگ هستند، خیلی دیگه از PIC ها هم همینطور هستند، احتمالا توی AVR هم موردی تقریبا مشابه این رو داریم. علاوه بر این معمولا در منطق CMOS پایه های تغذیه اصلی با نامهای VDD و VSS نامگذاری میشوند، این چیزی هست که در دیتاشیت PIC ها هم دیده میشه، اما گاهی دیده میشه که تکنولوژی اصلی CMOS هست اما تغذیه ها VCC و GND نامیده شدند ( معمولا در مورادی که قسمتهایی از مدار TTL هستند ) اگر به نامگذاری های AVR هم نگاه کنیم ( تا اونجا که من دیدم ) با اینکه تکنولوژی اصلی خود میکرو CMOS هست اما تغذیه ها VCC و GND نامیده شدند، پس طبیعی هست که انتظار منطق TTL هم در بعضی قسمتها داشته باشیم.
                از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                شاد و موفق باشید

                دیدگاه


                  #9
                  پاسخ : مشکل در یک شدن پایه ورودی


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

                  regfile=m32def.dat
                  crystal=8000000

                  config porta = output
                  config pinb.0 = input
                  dim a as bit
                  dim b as byte
                  a=input
                  b=output
                  a=0
                  main:
                  do
                  if a=0 then exit do
                  loop
                  set porta.0
                  ...
                  end

                  آیا این برنامه می تواند به راحتی وقتی پین b.0 برابر 1 شد خارج شود از حلقه ؟ یا نه ؟

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

                  شما مقدار اولیه پین مورد نظر رو مشخص نکردید و فقط اونو برابر یک متغیر قرار دادین که مغدارش تعیین نشده.میکرو اونرو 1 فرض میگیره و کار خودشو انجام میده چون منطقش TTL هستش. b=0 قرار بده و برنامرو امتحان کن اگه درست بود دعامون کن.

                  موفق باشی دوست من
                  " آدمك آخر دنياست بخند " "آدمك مرگ همين جاست بخند "
                  "دست خطي که تو را عاشق كرد" "شوخي كاغذي ماست بخند "
                  " آدمك خر نشوي گريه كني " " كل دنيا سراب است بخند "
                  " آن خدايي كه بزرگش خواندي " " به خدا مثل تو تنهاست بخند "

                  دیدگاه


                    #10
                    پاسخ : مشکل در یک شدن پایه ورودی

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

                    regfile=m32def.dat
                    crystal=8000000

                    config porta = output
                    config pinb.0 = input
                    dim a as bit
                    dim b as byte
                    a=input
                    b=output
                    a=0
                    main:
                    do
                    if a=0 then exit do
                    loop
                    set porta.0
                    ...
                    end

                    آیا این برنامه می تواند به راحتی وقتی پین b.0 برابر 1 شد خارج شود از حلقه ؟ یا نه ؟
                    نوشته اصلی توسط Hamed232
                    سلام دوست عزیز
                    pin متغیر ورودی میکرو و port متغیر خروجی میکروست . :arrow:
                    " آدمك آخر دنياست بخند " "آدمك مرگ همين جاست بخند "
                    "دست خطي که تو را عاشق كرد" "شوخي كاغذي ماست بخند "
                    " آدمك خر نشوي گريه كني " " كل دنيا سراب است بخند "
                    " آن خدايي كه بزرگش خواندي " " به خدا مثل تو تنهاست بخند "

                    دیدگاه


                      #11
                      پاسخ : مشکل در یک شدن پایه ورودی

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

                      regfile=m32def.dat
                      crystal=8000000

                      config porta = output
                      config pinb.0 = input
                      dim a as bit
                      dim b as byte
                      a=input
                      b=output
                      a=0
                      main:
                      do
                      if a=0 then exit do
                      loop
                      set porta.0
                      ...
                      end

                      آیا این برنامه می تواند به راحتی وقتی پین b.0 برابر 1 شد خارج شود از حلقه ؟ یا نه ؟
                      نوشته اصلی توسط omega_adiban

                      بببخشید ولی تا جایی که میدونم اساس avr بر cmos است نه ttl

                      اگر اشتباه میکنم دوستان بگن
                      " آدمك آخر دنياست بخند " "آدمك مرگ همين جاست بخند "
                      "دست خطي که تو را عاشق كرد" "شوخي كاغذي ماست بخند "
                      " آدمك خر نشوي گريه كني " " كل دنيا سراب است بخند "
                      " آن خدايي كه بزرگش خواندي " " به خدا مثل تو تنهاست بخند "

                      دیدگاه


                        #12
                        پاسخ : مشکل در یک شدن پایه ورودی

                        سلام دوست عزیز
                        این برنامه رو امتحان کن:
                        regfile=m32def.dat
                        crystal=8000000

                        config porta = output
                        config pinb.0 = input

                        main:
                        do
                        if pinb.0=1 then waitms 40 : if pinb.0=0 then exit do
                        loop
                        set porta.0
                        end

                        دیدگاه


                          #13
                          پاسخ : مشکل در یک شدن پایه ورودی

                          ببخشد اصلاح میکنم:
                          regfile=m32def.dat
                          crystal=8000000

                          config porta = output
                          config pinb.0 = input

                          main:
                          do
                          if pinb.0=1 then waitms 40: if pinb.0=1 then exit do
                          loop
                          set porta.0

                          end

                          دیدگاه


                            #14
                            پاسخ : مشکل در یک شدن پایه ورودی

                            regfile"m32def.dat"$
                            crystal=8000000$
                            config porta = output
                            config pinb.0 = input
                            portb.0=0
                            main:

                            do
                            if pinb.0=1 then exit do
                            loop
                            set porta.0
                            end

                            '------------------------------------------------------------------------
                            از این دستور هم میشه استفاده کرد
                            DEBOUNCE PINx.y,state,lable[sub]
                            CONFIG DEBOUNCE =S
                            S مدت زمان سرکشی به صورت اتوماتیک به میلی ثانیه
                            PINx.y پایه ای که کلید به آن متصل است.
                            state شرط کلید (0 یا 1 بودن)
                            lable بر چسب مورد نظر برای پرش برنامه در صورت درست بودن شرط
                            sub در صورت نیاز به پرش به برچسب زیربرنامه استفاده می شود.
                            '--------------------------------------------------------------------------
                            regfile"m32def.dat"$
                            crystal=8000000$
                            config porta = output
                            config pinb.0 = input
                            portb.0=0
                            CONFIG DEBOUNSE = 100
                            DIM A AS BYTE

                            MAIN:

                            DEBOUNCE PINB.0,1,ALI2

                            END

                            ALI2:
                            SET PORTA.0
                            RETURN
                            سه توصیه دارم:
                            1.کار 2.کار 3.کار
                            ادیسون

                            دیدگاه

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