سلام
من می خوام کی پد 4*4 را وصل کنم به میکرو و خروجی اش را روی lcd نمایش بدم
بعوان مثال وقتی کلید 1 زدم 1 نمایش داده شودو اگر پشت سرش 2 زدم بعد یک دو نمایش داده بشه یعنی 12 و...
وقتی c رو زدم عداد را یکی یکی پاک کند مثل ماشین حساب
میخوام عمل جمع ضرب هم انجام بدم
برنامه kypad بصورت زیر نوشتم ولی مشکلی که داره نمیدونم چطور یکبار 1 میزنمیم نمایش داده میشه دوباره 2 رو که میزنم یک پاک میشه دونمایش داده میشه
حتی میخوام جاروب kypad به صورت زیر با شد
پیشنهاد دوستان در این رابطه:
ساده ترین راه اش این باشه که عدد اول که زده شد، در متغیر a ذخیره بشه، عدددوم که زده شد، در متغیر b قرار بگیره و a*=10 بشه و a+=b بشه و رو lcd نمایش داده بشه.
با زدن دکمه ی بعدی باز در b قرار بگیرهه و a*=10 بشه و a+=b بشه و رو lcd نمایش داده بشه.
و ... به همین ترتیب برای ورودی های بعدی. درواقع اینطوری 10 گان و 100 گان و ... رو به ترتیب ایجاد می کنید و عددتون رو بزرگ می کنید.

درسته با دو متغیر a,b میشه این کارو کرد
ولی چطور تشخیص بدم عددی که زده شد عدد دوم.

کد HTML:
#include <mega32.h>
#include <delay.h>

unsigned char key; 

void main(void)
{
while(1)
      { 
      do{
      
     DDRA = 0x0f;
       PORTA = 0xf0; 
       delay_us(100);
       key = PINA;
        
     
       DDRA = 0xf0;
       PORTA = 0x0f; 
       delay_us(100);
       key = key | PINA;
     
     }while(key==0xff);
    
     
        
       
          switch(key)
    {
        case 0b11101110:    
        key=1;
        break;
        case 0b11011110:    
        key=2;
        break;
        case 0b10111110:   
        key=3;
        break;
        case 0b01111110:    
        key=4;
        break;
        case 0b11101101:    
        key=5;
        break;
        case 0b11011101:    
        key=6;
        break;
        case 0b10111101:    
        key=7;
        break;
        case 0b01111101:   
        key=8;
        break;
        case 0b11101011:    
        key=9;
        break;
        case 0b11011011:    
        key=10;
        break;
        case 0b10111011:    
        key=11;
        break;
        case 0b01111011:    
        key=12;
        break;
        case 0b11100111:    
        key=13;
        break;
        case 0b11010111:    
        key=14;
        break;
        case 0b10110111:    
        key=15;
        break;
        case 0b01110111:    
        key=16;
        
    }
}
}