سرخط خبرها
خانه » avr » آموزش avr » نحوه خواندن عدد از پورت در avr

نحوه خواندن عدد از پورت در avr

در این جا برای شما دوستان قسمتی از برنامه نویسی avr را آموزش می دهیم که در آن نحوه خواندن عدد از پورت ورودی میباشد. گاهی اوقات لازم است که در میکرو کنترلر ها مقدار را از پورت ورودی بخوانیداین برنامه طریقه خواندن مقدار را از پورت ورودی را نشان می دهد.

یک پورت از ۸ عدد پین تشکیل شده است که هر کدام از این پین ها دارای یک مقدار مشخص شده می باشد.

مثلا Portb میکرو کنترلر avr از ۸ عدد پین که هر کدام دارای مقدار مشخص می باشد . برای تفهیم این جمله ادامه مطالب را دنبال نمایید.مثلا پورت B در میکرو از ۸ پایه تشکیل شده است که برای هر پایه نامی مشخص شده است.

به پایه شماره ۱ از پورت PB0 گفته می شود.

به پایه شماره ۲ از پورت PB1 گفته می شود.

به پایه شماره ۳ از پورت PB2 گفته می شود.

به پایه شماره ۴ از پورت PB3 گفته می شود.

به پایه شماره ۵ از پورت PB4 گفته می شود.

به پایه شماره ۶ از پورت PB5 گفته می شود.

به پایه شماره ۷ از پورت PB6 گفته می شود.

به پایه شماره ۸ از پورت PB7 گفته می شود.

این پایه ها به ترتیب بر اساس سیستم دودوهی اولویت بندی و مقدار دهی شده اند.که در جدول زیر نشان داده شده است.

port-adad207

برای بزرگتر دیدن عکس بر روی عکس کلیک نمائید

مثلا:اگر شما به همه ۸ تا پین های پورت ، صفر منطقی (صفر ولت ) وصل نمایید مقدار خوانده شده میکرو از این پورت ۰ است.به این صورت که میکرو ابتدا مقدار پایه PB0 را خوانده و در عددی که برای ان مشخص شده ضرب میکند که طبق جدول بالا این عدد مقدارش ۱ می باشد در نتیجه مقدار خوانده شده از ورودی که صفر است ( به دلیل وصل کردن این پایه به صفر ولت ( را در ۱ ضرب می کند و جواب صفر می شود.

برای بقیه پایه نیز این عمل را انجام می هد و سپس در مرحله اخر تمامی جواب ها را با هم جمع می کند.

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

port-adad206

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

اعدادی که با رنگ بنفش مشخص شده است ضریب هر خانه (مقدار مشخص شده برای هر خانه می باشد)

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

سپس میکرو مقادیر بدست امده را با هم جمع می کند و مقدار کلی خوانده شده از پورت B مشخص می شود مانند نمونه زیر که مقدار خوانده شده از کل پورت B برابرصفر می باشد.

port-adad208

حال اگر به پایه ۱ (PB0) پورت B ولتاژ ۵ ولت را وصل نمایید که برای میکرو به منزله ۱ منطقی می باشد و به پایه های ۲و۳و۴و۵ پورت B که به ترتیب یعنی PB4,PB3,PB2 , PB1 ولتاژ صفر ولت را وصل نمایید که برای میکرو به منزله صفر منطقی می باشد و به پایه های ۶و۷ و۸ پورت B که به ترتیب یعنی PB7,PB6,PB5 ولتاژ ۵ ولت را وصل نمایید که میکرو ان را یک منطقی می خواند مقدار خوانده شده از پورت به صورت زیر حساب می شود.

port-adad201

سپس میکرو مقدار جواب های بدست امده را با هم جمع می کند ومقدار خوانده شده از یک پورت بدست می اید.

به همین سادگی اعداد بدست می اید.

حال دستوری که می توان به کمک ان این کار را انجام داد در زیر اورده شده است که مقدار خوانده شده از پورت B را در متغییر A می ریزد.

port-adad203

در این قسمت برنامه ای برای شما اماده شده است که مقدار را از پورت های B و D توسط میکرو خوانده می شود و بر روی LCD نشان داده می شود و این عمل هر ۱ ثانیه یک بار اتفاق می افتد که در زیر در عکس نشان داده شده است.

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

port-adad-5

پسورد -رمزرمز فایل : www.yazdkit.com

جهت دانلود کلیک نمائید

همچنین ببینید

avr dos

یکی از خواسته ها هر فردی که با زبان بیسیک کار میکنه استفاده از کارت ...

۷ دیدگاه

  1. سلام
    یه برنامه نوشتم که با ۱ شدن یه پایه (ورودی) وارد یه برنامه بشه و کاری رو انجام بده. مثلا یک سنسور هر دو یک پایه رو یک کنه تا کاری انجام بشه. وقتی یک یار ورودی یک شد دیگه صفر نمیشه.
    فرض کنید برنامه اینطوریه:
    Dim A As Byte
    A=0
    Cls
    LCD A
    Do
    Debounce PINB.0,1,Hamed
    LOOP
    END
    Hamed:
    INCR A
    Cls
    LCD A
    GOTO Hamed
    قراره هر دور که ورودی یک شد یکی بشماره و دوباره بره بالای برنامه و منتظر باشه تا ورودی یک بشه و بشماره.
    مشکل اینجاس که وقتی یک بار ورودی یک شد , دیگه صفر نمیشه.
    حتی از یه کلید لحظه ای هم استفاده کردم. کلید روی صفر میره ولی پایه همچنان یک باقی می مونه.
    اگه کسی میدونه لطف کنه راهنمایی کنه
    متشکرم

  2. mikhahim porta ra be onvane khoroji dara nazar begirim va rooye led motasel be in port 0ta 255 neshan dahad.
    mishe begid chejoori bayad be led vasl kard

  3. سلام
    بله شما در این حالت یعنی این:
    Dim A As Bit
    A = Portb.0
    فقط متغیر a را به پایه pinb.0 نسبت می دین اما در اون اسم این پایه رو می زارین a و باید برای صدا کردن یا نوشتن دستورات مربوط به این پایه شما باید اسم a رو بنویسین و نمی تونین خود پایه رو بگین اما در حالت اول می تونین هر دو رو بگین.

  4. salam. linke barnamei ke gozashtid download nemishe. baraye gereftane file bayad chikar konim. ba tashakor.

  5. سلام
    آیا کاری که دو دستور
    Dim A As Bit
    A = Portb.0
    واینA Alias Portb.0انجام می دن فرقی داره؟

پاسخ دهید