PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اين سوالات براي كانتر 1 رقمي 7 سگمنت براي من ايجاد شده؟



complexcoding
01-01-2013, 12:52
دوستان سلام
من در اين كد كانتر يك رقمي 7سگمنت اين سوالات براي من ايجاد شده لطفا راهنمايي كنيد ممنون.
كد:

#include <mega16.h>
#define xtal 4000000
flash char digits[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,
0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71} ;
unsigned char p_state;
unsigned char key;
unsigned char i;
void main(void)
{
DDRD = 0xFF;
PORTD = digits[0];
DDRC = 0x00;
PORTC = 0xFF;
while(1)
{
key = PINC & 0b00000001;

delay_ms(10);
if(key==0)
{
if(key!=p_state)
{
if(i==15)
{
i=0;
PORTD=digits[i];
}
else
i++;
PORTD = digits[i];
p_state=0;
};
}
else
p_state=1;
}
}
-----------------------------------------------------

مشكلات من:
1- خط سبز اولي: 0x3f به باينري 6 تا 1 ميشه پس اگر به يك پورت كه 8 تا پين داره بديم 2 تا پين ديگه چي مي شه؟
2- خط سبز دومي: P_state چيه؟
3- خط سبز سومي: اگر i از نوع كاركتري هست پس چرا با 15 كه عدد صحيح هست مقايسه شده؟
فعلا سوالام همينه اگر كمكي كنيد ممنون مي شم.
با تشكر از كمكتون

KHM
01-01-2013, 16:31
1. خوب اونا یکه..یعنی بقیه صفر هستن دیگه...
2. اسم متغیر..به جاش هرچی دلت میخواد میتونی بذاری.(به شرطی که بالا تعریفش کنی)
3. تو تعریف متغیرها i رو از نوع int تعریف کن

ali_h
01-01-2013, 18:05
سلام
متغیر unsigned char در زبان C می تونه اعداد بین 0 تا 255 رو در خودش ذخیره کنه و الزاماً کاراکتری نیست. بنابراین می تونه با 15 که عدد صحیح هست مقایسه بشه.

complexcoding
02-01-2013, 00:39
ممنون
ولي حالا اين 15 چي هست؟ يعني براي چي مقايسه شده؟ مگه چيكار مي خواد انجام بده؟

complexcoding
02-01-2013, 03:05
با تشكر
و ديگه اينكه Xtal = 4000000 فركانس نوسان سازي كريستال هست؟ كه ميشه 4 گيگاهرتز
و در اين قسمتkey = PINC & 0b00000001;
در واقع همان آگاهي ما از فشرده شدن كليد هست؟ چون كاملا پورت سي به صورت ورودي مقدار دهي شده؟
من يك پروژه دارم كه كنترل دور موتور DC با PWM هست كه دور موتورش رو بايد با ولوم تغيير بدم و سرعتش رو از 0 تا 9 روي يك سون سگمنت نمايش بده ...
تازه 2 يا 3 روزه نشستم سر ميكرو؟ كلي سردرد گرفتم همش وسطاش سرم گيج مي ره؟ مثلا نمي دونم چرا پايه هاي سون سگمنت كاملا به پايه هاي پورت D وصل نشده؟ و يك پايه آزاده و در كدها در مرحله اول 0x3F, مقداردهي شده كه فقط 6 پايه مقدار مي گيره؟ يكي از دوستان گفت دو پايه اي كه مقداردهي نشده صفر هست؟ آيا درست گفت؟ اينم عكسه پايه هاي سون سگمنت وصل شده به ميكرو:
You can see links before reply (You can see links before reply)