PDA

View Full Version : 1 کردن یک پین



DEATH HUNTER
شنبه 26 تیر 1389, 14:15 عصر
چه طور میشه یک پین میکرو رو یک کرد سابق فکر میکردم با وصل کردن 5 ولت به یک پین ورودی میشه اون رو یک کرد اما این کار رو انجام دادم و یک نشد میشه توضیح بدین؟؟؟؟؟؟؟؟

farzadsw
شنبه 26 تیر 1389, 19:30 عصر
اگه 5 ولت رو به یه پایه ورودی وصل کنید ، حتما باید بیت رجیستر مربوط به اون پایه 1 بشه (چه پول آپ باشه و چه نباشه) . احتمالا پایه رو به عنوان ورودی تعریف نکردید ، شایدم اشکال نرم افزاری باشه . برنامه رو بگذارید تا بیشتر بشه درموردش توضیح داد .(سخت افزار هم اگه بگزارید بهتر میشه)

DEATH HUNTER
شنبه 26 تیر 1389, 21:54 عصر
ممنون از پاسختون
توی پروتئوس امتحان کردم پایه رو به صورت ورودی تعریف کردم و 5 ولت رو به PORTA.0 دادم و شرط زیر رو گذاشتم اما درست کار نمیکنه

if(PORTA.0==1) PORTA.1=1;
else
PORTA.1=0;

فایل به زبان کد ویژن

farzadsw
یک شنبه 27 تیر 1389, 01:38 صبح
خب برنامه 2تا اشکال داره :
1. همه پایه ها رو به عنوان ورودی تعریف کردید :

PORTA=0x00;
DDRA=0x00;

اگه میخواید پایه 0 پورت a ورودی باشه و پایه 1 اون خروجی باید بنویسید :

PORTA=0x00;
DDRA=0x02;

یعنی هر بیتی از DDRA که 1باشه پایه متناظر اون خروجی تعریف میشه و هر بیتی که 0 باشه پایه متناظر اون ورودی تعریف میشه . 00000010 معادل 0x02 هگز هست .

2. برای تغییر یک پایه ای که خروجی تعریف شده از portx.y استفاده میشه (مثل همون PORTA.1=1 که نوشتید) و برای خوندن وضعیت پایه ای که ورودی تعریف شده باید از pinx.y استفاده کرد نه portx.y . یعنی تو شرط برنامتون باید نوشته بشه pina.0==1 .
*البته تا جایی که یادمه دستورات pinx.y , portx.y برای زبان basic بودن و کامپایلر های c از این دستورات استفاده نمیکردن . اما خب اگه موقع کامپایل اروری نگرفته ، حتما تو نسخه های جدیدکدویژن این قابلیت اضافه شده .