اطلاعیه

Collapse
No announcement yet.

نحوه خواندن عدد از پورت میکرو

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

    نحوه خواندن عدد از پورت میکرو

    سلام دوستان
    من یک برنامه نوشتم که یک پورت میکرو رو به عنوان ورودی تعریف کردم و آن پورت رو 0 کردم. حالا هر پینی از آن پورت که به مثبت وصل شود
    مثلا 00000001 وقتی این کد در ورودی ایجاد شد عدد متناسب با این کد در یک متغییر را ذخیره می کند. وقتی به صورت عملی این کار را
    انجام می دهم و وقتی یکی از پین ها را 1 می کنم 1 ثانیه طول می کشد که اون عدد در خروجی ظاهر شود. کسی برنامه بهتری دارد؟
    ممنون

    #2
    پاسخ : نحوه خواندن عدد از پورت میکرو

    لطفا برنامتون رو قرار بدین

    دیدگاه


      #3
      پاسخ : نحوه خواندن عدد از پورت میکرو

      این هم برنامه

      $regfile = "m8def.dat"
      $crystal = 8000000


      Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
      Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down

      Config Portd = Input
      Ddrd = 0 : Portd = 1

      Config Portc.0 = Input
      Ddrc.0 = 0 : Portc.0 = 1

      Config Portb.0 = Input
      Ddrb.0 = 0 : Portb.0 = 1


      Ddrb.1 = 1
      Ddrb.2 = 1
      Ddrb.3 = 1

      Pwm1a = 0
      Pwm1b = 0
      Ocr2 = 0

      Portd = &H00

      Dim X1 As Bit
      Dim X2 As Bit
      Dim X3 As Bit

      Dim X4 As Bit
      Dim X5 As Bit
      Dim X6 As Bit

      Dim X7 As Bit
      Dim X8 As Bit

      Dim Bit1 As Byte , Bit2 As Byte , Bit3 As Byte
      Dim Bit4 As Byte , Bit5 As Byte , Bit6 As Byte
      Dim Bit7 As Byte , Bit8 As Byte

      Dim Pixel As Byte
      Dim R As Byte
      Dim G As Byte
      Dim B As Byte

      Dim Red As Byte
      Dim Green As Byte
      Dim Blue As Byte


      Startt:

      '################################### RED
      X1 = Pind.7
      X2 = Pind.6
      X3 = Pind.5
      X4 = Pind.4
      X5 = Pind.3
      X6 = Pind.2
      X7 = Pind.1
      X8 = Pind.0


      Bit1 = X1 * 128
      Bit2 = X2 * 64
      Bit3 = X3 * 32
      Bit4 = X4 * 16
      Bit5 = X5 * 8
      Bit6 = X6 * 4
      Bit7 = X7 * 2
      Bit8 = X8 * 1

      Pixel = Bit1 + Bit2
      Pixel = Pixel + Bit3
      Pixel = Pixel + Bit4
      Pixel = Pixel + Bit5
      Pixel = Pixel + Bit6
      Pixel = Pixel + Bit7
      Pixel = Pixel + Bit8

      R = Pixel And 224

      Select Case R
      Case 0
      Red = 0
      Case 32
      Red = 31
      Case 64
      Red = 63
      Case 96
      Red = 95
      Case 128
      Red = 127
      Case 160
      Red = 159
      Case 192
      Red = 191
      Case 224
      Red = 223
      End Select

      '################################### GREEN

      G = Pixel And 28
      Select Case G
      Case 0
      Green = 0
      Case 4
      Green = 31
      Case 8 '
      Green = 63
      Case 12
      Green = 95
      Case 16
      Green = 127
      Case 20
      Green = 159 '
      Case 24
      Green = 191
      Case 28
      Green = 223
      End Select

      '################################### BLUE

      B = Pixel And 3
      Select Case B
      Case 0
      Blue = 0
      Case 1
      Blue = 62
      Case 2
      Blue = 126
      Case 3
      Blue = 254
      End Select

      Pwm1a = Red

      Pwm1b = Green

      Ocr2 = Blue


      Wait 2

      Goto Startt


      End

      دیدگاه


        #4
        پاسخ : نحوه خواندن عدد از پورت میکرو

        شما باید یک متغیر byte تعریف کنید و پورت مربوطه رو برابر با این متغیر کنی خوب حالا یک عدد از 0 تا 255 به ما میده که میتونی ازش استفاده کنی البته یک دستور هستش که دسیمال رو به باینری تبدیل می کنه

        دیدگاه


          #5
          پاسخ : نحوه خواندن عدد از پورت میکرو

          سلام.
          می شود برنامه را درست کنید. من منظور شما را درست متوجه نشدم. ممنون می شوم اگر برنامه رو تصحیح کنید.

          دیدگاه


            #6
            پاسخ : نحوه خواندن عدد از پورت میکرو

            اگه اشتباه نکنم شما می خاین led rgb رو کنترل کنین توضیح بدین که می خاین اصلا چی کار کنین؟

            دیدگاه


              #7
              پاسخ : نحوه خواندن عدد از پورت میکرو

              مگه اینجوری نمیشه؟( یا من منظور شما رو نفهمیدم)


              config porta=input
              config portb= output
              dim a as byte
              do
              a=pinA
              portb =a
              loop
              پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

              دیدگاه


                #8
                پاسخ : نحوه خواندن عدد از پورت میکرو

                سلام feshwari جان.
                rgb چند در چند کار میکنی؟
                گسترده تر از هر چیز دل مومن است(امام علی (ع))
                [glow=red,2,300]R[/glow]
                [glow=green,2,300]G[/glow]
                [glow=blue,2,300]B[/glow]

                دیدگاه


                  #9
                  پاسخ : نحوه خواندن عدد از پورت میکرو

                  در مثال شما که گفتین
                  a=pinA
                  portb =a

                  pinA منظورتون portA است یا یک پین ازportA مثلا PINA.0 ?
                  من نمیخواهم فقط یک پین رو 1 یا صفر کنم. می خواهم با 0 و 1کردن 8 بیت عداد 0 تا 255 رو بوجود بیارم و در portD قرار بدم. یک مثال می خوام
                  ممنون از دوستان

                  دیدگاه


                    #10
                    پاسخ : نحوه خواندن عدد از پورت میکرو

                    CONFIG PORTD=OUTPUT
                    DIM A AS BYTE
                    PORTD=A

                    DO
                    A=255
                    WAITMS 100
                    A=0
                    WAITMS 100
                    A=127
                    LOOP

                    برنامه ی بالا مقدار دسیمال A رو به روی PORTD میریزه مثلا اگر Aبرابر به 255 بشه تمام 8 پین پورت D به وضعیت 1 منطقی میره ، مثلا اگر عدد A برابر با 127 بشه پین های خروجی پورت D به ترتیب 01111111 به وضعیت منطقی میره و اگر عدد A برابر با 0 بشه همه ی خروجی های پورت D به وضعیت 0 منطقی خواهد رفت
                    بازم اگر مشکلی بود در خدمتم

                    دیدگاه


                      #11
                      پاسخ : نحوه خواندن عدد از پورت میکرو

                      نوشته اصلی توسط feshwari
                      در مثال شما که گفتین
                      a=pinA
                      portb =a

                      pinA منظورتون portA است یا یک پین ازportA مثلا PINA.0 ?
                      من نمیخواهم فقط یک پین رو 1 یا صفر کنم. می خواهم با 0 و 1کردن 8 بیت عداد 0 تا 255 رو بوجود بیارم و در portD قرار بدم. یک مثال می خوام
                      ممنون از دوستان
                      وقتی مشخص نمیکنی کدوم پین تمام پورت رو درنظر میگیره
                      در برنامه من تمام پورت A رو روی پورت B قرار میده
                      پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

                      دیدگاه

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