ايران ويج

نسخه‌ی کامل: تشخیص فشرده شدن همزمان شستی ها در کدویژن
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام سلام

دوباره من اومدمو با سوالات عجیب غریبم !!

اینبار موضوع اینه که میخوام اگه دوتا شستی رو همزمان فشار دادم میکرو یکاری انجام بده اما چنتا روششی که به ذهنم می رسیدو امتحان کردم نشد که نشد .

احتمالا طبق معمول هربار ، بازم یجای کارم میلنگه و دارم سوتی میدم .

اومدم دوتا ورودیو باهم & کردم نشد ، && کردم نشد ، مساوی قرار دادم و بعد از ! استفاده کردم بازم نشد .

حالا بفکرم رسید که بزارمشون توی یه حلقه و با فشرده شدن هر کدم یه متغییرو 1 کنم وبعد این متغییرهارو بررسی کنم توی شرط تا متوجه بشم همزمان فشرده شدن یا نه ولی اینو هرکی ببینه از خنده مترکه .

باید یه روش اصولی هم وجود داشته باشه بلاخره !!!!
کسی مثالی ازین کار داره بزاره ؟

با تشکر
سلام.. من اگر به جای شما بودم اینکار رو میکردم که با فشردن یک کلید میره به یک حلقه که مثلا 2 ثانیه داخلشه. اگر کلید دومی رو هم زد اونوقت یه کار خاصی انجام میشه.. اسون ترین روش همینه
سلام و ممنون از جوابت

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


از طرفی ، اگه روشی وجود داشت که میتونست بر حسب مدت زمان فشرده موندن کلید یه عمل خاصو انجام بده هم خوب میشد

مثلا اگه کلیدا رو لحظه ای زدیم به زیر برنامه خودشون برن و اگه مثلا کلید شماره 1 رو بیشتر نگه داشته بودیم بره به منوی مخفی

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

استفاده از یک کلید، برای چند منظور، بسته به زمان فشرده شدن:
ساده ترین ایده:
کد php:
if(key == enable)
{
    
delay_ms(100);
    if(
key != enable)
    {
        
func1();
    }
    else if(
key == enable)
    {
        while(
key == enable);
        
func2();
    }


برای زدن همزمان 2 کلید یکجا و جدا از هم:
کد php:
if(key1 == enable || key2 == enable)
{
    
delay_ms(100);
    if((
key1 == enable) & (key2 == enable))
    {
        
func1();
    }
    else if(
key1 == enable)
    {
        
func2();
    }
    else if(
key2 == enable)
    {
        
func3();
    }
    while(
key1 key2);


موفق باشید.
سلام

ظاهرا نپمشکل من پایه ای تر از این حرفاس !
اول از همه بگم اون enable چیه ؟ و دو اینکه ظاهرا درست پورتام پیکربندی نشده ! البته باید درست باشه ها ولی نمیدونم چرا نیست .
میکرو ATmega8L هستش و برای شستی های ورودیم از پین های 2 ، 3 ، 4 و 5 پورت C استفاده کردم
این چورتو بصورت زیر ورودی تعیرف کردم :
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
یعبارتی همشونو صفر کردم
بعدش اومدم مقاومت بالاش داخلیو با یک کردن رجیستر PortC فعال کردم
PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

اما کلیدارو نمیخونه یا مدام یک فرضشون میکنه ؟
سخت افزارش صد در صد درسته و با یه برنامه که توی بیسکام نوشته بودم تستش کردم اما نمیدونم چرا توی کد ویژن اینطوری میکنه !
برای خوندن شستی های ورودی دستور خاصی لازمه که از نویز جلوگیری کنه یا اشتباه من کجاست !
if (!SAVE){
ee_mode = 100 ; delay_ms(20);
BUZZER=1 ; delay_ms(80); BUZZER=0 ;
}

با مساوی صفر کردن هم آزمایش کردم نشد ، کدویژن مثله بیسکام دستوری نداره که مثله Deounce بشه ازش برای خوندن استفده کرد ؟ این enable چیه ؟
دیگه واقعا دارم شاخ درمیارم بخدا :-(
توصیه می کنم اصول ابتدایی در زبان C رو به صورت مداوم دوره و استفاده کنی تا مفاهیم خوب برات جا بیفته.
سورس کدهای موجود در اینترنت هم زیاد بخون و بررسی کن و تجزیه تحلیل کن و با سبک های کد زنی آشنا شو و علم کد زنیت رو کاربردی تر کن ...

برای ورودی کردن پایه های پورت C همین کافی هست:
کد php:
;DDRC 0x00 
برای پول آپ هر جور راحتی:
کد php:
PORTC 2<<0X0F

شما از پورت c استفاده کردید، فیوزبیت های JTAG رو غیر فعال کردید؟!
این که چی نوشتی نفهمیدم ...

تو شبه کدی که نوشتم، واضح هست دیگه:
enable وضعیت فعال پایه ها هست وقتی کلید زده شده، پول آپ کردید و با فشردن کلید پایه رو 0 می کنید پس enable = 0 هست
کد php:
#define enable 0 
key پایه ای هست که کلید بهش متصل شده ، فرض PORTC.2 ، چون می خوای وضعیتش رو بخونی و ورودی تعریف کردی باید به صورت x = PINC.2 استفاده کنی. اینجوری تعریف می شه:
کد php:
#define key PINC.2 

البته اصولش اینه KEY و ENABLE با حروف بزرگ نوشته بشن که مشخص بشه define شدن و متغییر نیستن ...

موفق باشی.