اطلاعیه

Collapse
No announcement yet.

عملکرد ناقط کیپد 4 در 4

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    عملکرد ناقط کیپد 4 در 4

    سلام
    یه برنامه ای نوشتم که کیپد رو اسکن میکنه
    همه چیزش خوبه الا یه چیز که نمیدونم دلیلش چیه
    در شبیه سازی همه چیز کاملا درسته و این مشکل در عمل برای من بوجود اومده

    به عکس توجه کنید. تمام کلید ها درست خوانده میشن به جز کلید "clr" که وقتی میزنم کلید "7" خونده میشه

    تو این پروژه دو تا کیپد دارم اون یکی 3 در 4 هستش اونم همین مشکل رو داره
    فکر میکنم تو برنامه نویسی چیزی رو لحاظ نکردم که تو عمل این مشکل رو دارم
    یادآوری می کنم که مشکل فقط با کلید گوشه چپ پایینه و بقیه کلید های سطر آخر درست کار میکنند.

    #2
    پاسخ : عملکرد ناقط کیپد 4 در 4

    همونجور که عرض کردم تو شبیه سازی مشکلی نیست اما راه حل
    برنامه من خیلی معمولی صفحه کلید رو یا کی پد رو میخونه
    هر بار یه سطررو یک میکنم و بقیه صفر و با 4 تا if ستون ها رو چک میکنم

    کد:
    PORTD.4 = 1 ;
                    PORTD.5 = 0 ;
                    PORTD.6 = 0 ;
                    PORTD.7 = 0 ;
    
                    if(PIND.0 == 1){ KEY = 0;while(PIND.0){};delay_ms(250);return 7 ;}     
                    if(PIND.1 == 1){ KEY = 0;while(PIND.1){};delay_ms(250);return 8 ;}    
                    if(PIND.2 == 1){ KEY = 0;while(PIND.2){};delay_ms(250);return 9 ;}   
                    if(PIND.3 == 1){ KEY = 0;while(PIND.3){};delay_ms(250);return 10;}
    این جوری.

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

    کد:
    PORTD.4 = 1 ;
                    PORTD.5 = 0 ;
                    PORTD.6 = 0 ;
                    PORTD.7 = 0 ;
                    delay_ms(25);
                    if(PIND.0 == 1){ KEY = 0;while(PIND.0){};delay_ms(250);return 7 ;}     
                    if(PIND.1 == 1){ KEY = 0;while(PIND.1){};delay_ms(250);return 8 ;}    
                    if(PIND.2 == 1){ KEY = 0;while(PIND.2){};delay_ms(250);return 9 ;}   
                    if(PIND.3 == 1){ KEY = 0;while(PIND.3){};delay_ms(250);return 10;}
    مشکل در عمل حل میشه
    موفق باشید

    دیدگاه

    لطفا صبر کنید...
    X