اطلاعیه

Collapse
No announcement yet.

مشکل این برنامه چیه ؟؟ (برنامه برای کیپد)

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

    مشکل این برنامه چیه ؟؟ (برنامه برای کیپد)

    سلام دوستان . این برنامه رو برای کیپد نوشتم اما جواب نمی ده .

    اضافه کنم که از پین های P0.0 تا P0.7 برای کیپد استفاده کردم و هیچ گونه مقاومتی برای سخت افزار کیپد استفاده نکردم و از مقاومت های pullup خود میکرو استفاده کردم .

    کد:
    #include "LPC23xx.h"
    #include "delay.h"
    
    const unsigned char scan_key[16]= {
    								 /* 1	  2   3   4  */
    								  0xEE , 0xDE , 0xBE , 0x7e ,
    								 /*	 5   6   7   8  */
    								  0xed , 0xdd , 0xbd , 0x7d ,
    								 /* 9   10   11	 12	 */
    								  0xeb , 0xdb , 0xbb , 0x7b ,
    								 /* 13 	  14	 15	 16  */
    								  0xE7 , 0xD7 , 0xB7 , 0x77 
    								  };
    int main(void)
    {
    unsigned char key;
    unsigned char i;
    
    SCS |=1; 
    PINSEL0=0x00000000;
    FIO2DIR0 = 0xFF;
    FIO2SET0 = 0xFF;
    
    delay_ms(1000);
    
    
    while(1)
     {
     FIO0DIR0 = 0x0F;
     //PINMODE0=0x000000AA;
     FIO0SET0 = 0x0F;
     FIO0CLR0 = 0x0F;
     delay_us(5);
     key = FIO0PIN0 & 0xF0;
    
     FIO0DIR0 = 0xF0;
     //PINMODE0=0x0000AA00;
     FIO0SET0 = 0xF0;
     FIO0CLR0 = 0xF0;
     delay_us(5);
     key = (FIO0PIN0 & 0x0F) | key;
    
     if((key & 0xFF)!= 0xFF)
     	{
    	for(i=0;i<16;i++)
    		{
    		if (scan_key[i]==key)
    			{
    			break;
    			}
    		}
    
    	if (i==16) 
    		i=0;
      else 
    		i++; //to make range 1-16
    
    	delay_ms(100);
    	}
    
    
     else 
     	i=128;
    
     FIO2CLR0 = 0xFF;
     FIO2SET0 = i;
     delay_ms(1000); 
     }	// end while
    
    }

    من کد های کلید های کیپد رو از 1 گرفتم تا 16 . گفتم اگر دکمه ای زده نشه مقدار 128 رو روی پورت 2 بریز . اما در عجبم که نه مقداری بین 1 تا 16 میریزه (که نشانه زده شدن کلید هست ) و نه مقدار 128 رو (که نشانه زده نشدن کلید) . این delay_ms(1000); رو هم برای دیدن این زده نشدن کلید گذاشتم که برای تست هست و گذاشتم که یه وقت نگید که برنامه داره تند پایه ی P2.7آ‌ رو صفر و یک می کنه و ledآ‌ دیده نمیشه و تو برنامه اصلی جایی نداره
لطفا صبر کنید...
X