ايران ويج

نسخه‌ی کامل: فلاشر
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من تازه كارم كمك كنين
من ميخوام 4ledبا هم روشنا خاموش بشن حالت فلاشر داشته باشن يعني هروقت كليد رو زدم فلاشر بشن
ledها آندشان به 3.3ولت و كاتد به پايه اي p1.20-p1.23 ميكرو وصل بشن و كليد هم به p0.1من اين برنامه را نوشتم چندتا سوال داشتم؟
1-برنامه درست هست؟
2-براي delay دادن راهي ديگه هست؟مثلا مثلinclude<delay.h> avr
3-براي p0.1بايد ورودي معين كرد؟چطوري؟
3-به جاي oX00000002اگه 0X02بزاريم مشكلي پيش مياد؟
سلام.اگه کامپایلر هم معلوم میکردی بهتر بود.
1-هنوز کد رو نگاه نکردم
2-توی keil که هیچ کتابخونه یا دستور پیشفرضی برای این کار نیست اما کویر الکترونیک یه کتابخونه ساده ساخته که با همون شمارش اعداد کار میکنه.اگه بخوای خودت هم میتونی بنویسیش.
3-آره-با مقدار دادن به رجیستر های بخش pio
4-بله میشه.فکر کنم ox2 هم جواب بده.
ميشه يكي بگه براي معرفي ورودي P0.1به ميكرو چه بايد كرد؟
اينجور درسته?
IODIR1=0X00F00000;// p1.20-p1.23 is out put
IODIR0=0XFFFFFFFD;//P.01 IS INPUT
از قرار معلوم داری برای keil کد میزنی!
اول باید با *AT91C_PIOB_PER=
پورت رو فعال کنی.PIOB مال پورت B هست.
بعد هم با PIOx_OER اون رو خروجی کنی.
PIOx_SODR و PIOx_CODR هم پایه ها رو یک و صفر میکنن.
دارم با زبان Cو KEIL كد ميزنم اينا كه گفتي نميدونم چي هستن فقط اينجوري بلدم با تنظيم IODIR0و IODIR1ورودي خروجي تعيين ميكنن
نقل قول: ميشه يكي بگه براي معرفي ورودي P0.1به ميكرو چه بايد كرد؟
اينجور درسته?
IODIR1=0X00F00000;// p1.20-p1.23 is out put
IODIR0=0XFFFFFFFD;//P.01 IS INPUT
نقل قول: دارم با زبان Cو KEIL كد ميزنم اينا كه گفتي نميدونم چي هستن فقط اينجوري بلدم با تنظيم IODIR0و IODIR1ورودي خروجي تعيين ميكنن
بله ، همينطوري درست هست.

اون كدهايي هم كه دوستمون گفت براي ميكروهاي شركت Atmel بود ، شما با ميكروهاي شركت NXP كار مي كنيد كه طبيعتا كدهاشون متفاوت هست.
کد php:
void main(){
IODIR1=0X00F000;// p1.20-p1.23 is out put
while(1){
unsigned char a;
a=(IOPIN0&0X00000002);
if(
a==oXOOOOOOOF){
IOCLR1=0X00F00000;// turn on led
delay();
IOSET1=0X00F00000:// turn off led
delay();
}
}

معمولا پيكربندي رو قبل از تابع main انجام مي دن ، اما مشكلي ايجاد نمي كنه.
شرطي كه براي a گذاشتيد اشتباه هست و هيچوقت اتفاق نمي افته.
a==0x2 رو بايد در شرط استفاده كنيد. ( البته اگر در طراحي كليد خازن استفاده نكرديد بايستي كدهاتون رو دقيقتر بزنيد ، به خاطر لرزش دكمه )
در تابع delay ، مقدار 400 خيلي كم هست. حدود 1000000 مناسب تر هست ، اگر مقدار رو كم بذاري ممكنه چشمك زدن LED به چشم نياد.

موفق باشيد.