NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4097 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 8 از 8

موضوع: حساس نمودن کلید به لبه بالارونده در کدویژن

  1. #1
    عضو جدید
    تاریخ عضویت
    Jun 2011
    نوشته ها
    14
    تشکر
    16
    تشکر شده 3 بار در 3 پست

    پیش فرض حساس نمودن کلید به لبه بالارونده در کدویژن

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

    if(key==0)
    {
    key_buf=key;
    i_0++;
    while(key=="0")
    {
    };


    };

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    ناظم انجمن vahidasm آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    وحید
    نوشته ها
    754
    تشکر
    1,068
    تشکر شده 881 بار در 470 پست

    پیش فرض

    سلام دوست عزیز این کدی که شما گذاشتین رو نمیشه فهمید خواهشا از ابرار های # و php استفاده کنید تا کدتو خوانا بشه
    اگه بعد از اضافه شدن متغیر مورد نظر از دستور while استفاده کنید که اگه کلید زده شد تو یه حلقه گیر کنه و بیرون نره تا کلید مورد نظر آزاد بشه مشکل شما حل میشه
    اولین مرحله شناخت آفرینش همانا خرد است چشم و گوش و زبان سه نگهبان اویند که لاجرم هر چه نیکی و شر است از همین سه ریشه می گیرد .و افسوس که بدنبال کنندگان خرد اندکند باید که به سخن دانندگان راه جست و باید جهان را کاوش نمود و از هر کسی دانشی آموخت و یک دم را هم برای آموختن نباید از دست داد . فردوسی خردمند

  4. کاربران : 3 تشکر کرده اند از شما vahidasm برای ارسال این پست سودمند:


  5. #3
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

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

    if(key==0)
    {
    key_buf=key;
    i_0++;
    while(key=="0")
    {
    };


    };
    سلام دوست عزیز شما می تونید از وقفه های خارجی هم استفاده کنید.
    که به نظر من بهتر هست.چون وقتی با میکرو کار می کنید باید از تمامی توانایی های اون استفاده کنید نه اینکه فقط با پین های ورودی خروجی استفاده کنید.
    ------------
    اگر نتونستی با وقفه بنویسی بگو تا کد رو برات توی همین پست بزارم

  6. تشکرها از این نوشته :


  7. #4
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام دادا

    اون چیزی که من متوجه شدم اینه :

    کد:
    if (PINx.y==1)
    {
    
    i++
    delay_ms(300)
    while (PINx.y==1)
    
    {
    }
    {
    خب ، حالا این کدی که من گذاشتم چیکار می کنه؟ این کارو : هروقت که شما پایه ی مورد نظر رو 1 کنی متغیر i یکی اضافه میشه ولی تا زمانیکه این پایه 1 هست (دستت روی کلید هست) برنامه توی حلقه ی while گرفتار میشه ، بنابراین متغیر i دیگه زیاد نمیشه. وقتیکه پایه 0 بشه (دستت رو از روی کلید ورداری) برنامه آمداش تا دوباره شروع به کار کنه.

    دستور تاخیر برای این هست که مطمئن بشی دستت هنوز روی کلیده.
    ویرایش توسط morteza_rk : 07-01-2013 در ساعت 19:31
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  8. کاربران : 2 تشکر کرده اند از شما morteza_rk برای ارسال این پست سودمند:


  9. #5
    عضو جدید
    تاریخ عضویت
    Jun 2011
    نوشته ها
    14
    تشکر
    16
    تشکر شده 3 بار در 3 پست

    پیش فرض

    نقل قول نوشته اصلی توسط morteza_rk نمایش پست ها
    سلام دادا

    اون چیزی که من متوجه شدم اینه :

    کد:
    if (PINx.y==1)
    {
    
    i++
    delay_ms(300)
    while (PINx.y==1)
    
    {
    }
    {
    خب ، حالا این کدی که من گذاشتم چیکار می کنه؟ این کارو : هروقت که شما پایه ی مورد نظر رو 1 کنی متغیر i یکی اضافه میشه ولی تا زمانیکه این پایه 1 هست (دستت روی کلید هست) برنامه توی حلقه ی while گرفتار میشه ، بنابراین متغیر i دیگه زیاد نمیشه. وقتیکه پایه 0 بشه (دستت رو از روی کلید ورداری) برنامه آمداش تا دوباره شروع به کار کنه.

    دستور تاخیر برای این هست که مطمئن بشی دستت هنوز روی کلیده.
    احسنت همینه. اما وقتی که با کیپد کار میکنم. این دستور درست عمل نمیکنه!
    مثلا کیپد من جوری نوشته شده که اگه کلید 0 زده شد. مقدار key برابر کاراکتر 70 میشه. اما وقتی دستور
    کد:
    while(key==70)
    رو میزنم برنامه گیر میکنه.
    و وقتی دستور
    کد:
    while(key=="70")
    رو میزنم، تو نرم افزار پروتئوس درست عمل میکنه اما تو سخت افزار که لود میکنم با نگه داشتن کلید 0 همینطور پشت سر هم به مقدار i اضافه میشه. منم وقتی با یه پین کار میکنم این مشکل رو ندارم ام وقتی با خروجی کیپد میخوام کار کنم ایراد داره!
    در حقیقت من میخوام وقتی کاربر یکبار کلید رو فشار داد و اگه دستشو نگه داشت مقدار متغیر همون یک واحد اضافه بشه تا زمانی که دستشو برداره و دوباره کلید رو فشار بده(اونوقت یکبار دیگه به متغیر i یک واحد اضافه بشه). نه اینکه تا زمانی که دست کاربر رو کلیده همینطور پشت سر هم به مقدار i اضافه بشه.
    ویرایش توسط ali_invention : 07-01-2013 در ساعت 20:19

  10. #6
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    برنامه رو بذار ببینیم مهندس.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  11. #7
    عضو جدید hamid-nic آواتار ها
    تاریخ عضویت
    Mar 2009
    نوشته ها
    8
    تشکر
    3
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  12. #8
    عضو جدید
    تاریخ عضویت
    Jun 2011
    نوشته ها
    14
    تشکر
    16
    تشکر شده 3 بار در 3 پست

    پیش فرض

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

  13. تشکرها از این نوشته :


موضوعات مشابه

  1. هویه هوای گرم
    توسط behnam6500 در انجمن مفاهیم اولیه در رباتیک
    پاسخ: 20
    آخرين نوشته: 28-12-2015, 18:14
  2. Spi نرم افزاری در کدویژن
    توسط ali2914 در انجمن AVR
    پاسخ: 16
    آخرين نوشته: 13-08-2014, 00:49
  3. برنامه نقاشی ویندوز 7 را به ویندوزهای ویستا و ایکس پی اضافه کنید
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 1
    آخرين نوشته: 20-01-2010, 15:43
  4. نواز وظیفه ویندوزهای ایکس پی و ویستا را به نوار وظیفه ویندوز 7 تبدیل کنید
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 0
    آخرين نوشته: 19-01-2010, 13:39
  5. Xp ویندوزهای ویندوز 2003 سرور را دقیقا به ویندوز 7 تبدیل نمائید
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 0
    آخرين نوشته: 19-01-2010, 12:59

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •