اطلاعیه

Collapse
No announcement yet.

مشکل ساخت تابع کیپد

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

    مشکل ساخت تابع کیپد

    سلام دوستان عزیز من برای کیپد یه تابع درست کردم اما هر کاری میکنم کامپایلر ازم خطا میگیره .

    کد:
    char key;
     unsigned char scan[4]={0XFE,0XFD,0XFB,0XF7};
     unsigned char arrkey[16]={
     7,8,9,15,
     4,5,6,14,
     1,2,3,13,
     10,0,11,12};
    unsigned char r,b;
    char key1;
    void keypad(void);
    تو یه تابع به این شکل فراخانی میشه

    کد:
         key1=keypad()
         if(key1==6){
         es++;}
         else if (key1==4){
         es--;}
         key1=0;
    و خود تابع هم بعد حلقه ویل تعریف کردم

    void keypad()
    {
    for (r=0; r<4; r++){
    b=4;
    PORTB=scan[r];
    if(c1==0) b=0;
    if(c2==0) b=1;
    if(c3==0) b=2;
    if(c4==0) b=3;

    if (!(b==4)){
    key=arrkey[(r*4)+b];
    while(c1==0);
    while(c2==0);
    while(c3==0);
    while(c4==0);
    delay_ms(50);
    return key;
    }
    }
    }


    من میخوام کلید زده شده رو برگشت بدم تو یه تابع دیگه .

    باتشکر فراوان
    I'm going to
    RWTH Aachen
    University

    #2
    پاسخ : مشکل ساخت تابع کیپد

    سلام.
    راستش حس خوندن کد نیست الان :biggrin:
    ولی این کدی که میذارم درست کار میکنه. کدت رو با این مقایسه کن.
    [code=c]
    #include <mega128.h>
    #include <delay.h>
    #include <lcd.h>
    #asm
    .equ __lcd_port = 0x1B; // LCD: Port A
    #endasm

    /******************** defines *******************/
    #define C0 PINC.4
    #define C1 PINC.5
    #define C2 PINC.6
    #define C3 PINC.7
    /***************************************/

    flash char shift[4]={0xFE,0xFD,0xFB,0xF7};
    flash char layout[16]={'7','8','9',&#039 ;/',
    '4','5','6','*& #039;,
    '1','2','3',&#039 ;-',
    'C','0','=','+& #039;
    };
    char keypad();

    /******************** EXT_INT7 *******************/
    interrupt [EXT_INT7] void ext_int7_isr(void)
    {
    char ch;
    ch = keypad();
    PORTC = 0xF0;
    if(ch=='C&#039 lcd_clear();
    else lcd_putchar(ch);
    }

    /******************** Main Function *******************/
    void main()
    {
    EIMSK = (1<<INT7); // Enable INT7
    EICRB = (1<<ISC71)|(0<<ISC70); // INT7 Falling Edge
    EIFR = (1<<INTF7);
    PORTE.7 = 1; // E.7: pull-up
    DDRC = (1<<DDC0)|(1<<DDC1)|(1<<DDC2)|(1 <<DDC3)| // Output for Row
    (0<<DDC4)|(0<<DDC5)|(0<<DDC6)|(0 <<DDC7); // Input for Coloumn
    PORTC = (1<<PORTC4)|(1<<PORTC5)|(1<<PORT C6)|(1<<PORTC7); // Pull-up sotoons
    lcd_init(16);
    lcd_clear();
    #asm("sei&quot
    while(1);
    }


    /******************** Keypad Function *******************/
    char keypad()
    {
    int row=0,column=-1,position=0;
    for(row=0 ; row<4 ; row++)
    {
    PORTC = shift[row];
    if(C0 == 0){column = 0;}
    if(C1 == 0){column = 1;}
    if(C2 == 0){column = 2;}
    if(C3 == 0){column = 3;}
    if(column != -1)
    {
    position = row*4 + column;
    column = -1;
    while(C0 == 0);
    while(C1 == 0);
    while(C2 == 0);
    while(C3 == 0);
    return layout[position];
    }
    delay_ms(50);
    }
    }
    [/code]
    http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

    دیدگاه


      #3
      پاسخ : مشکل ساخت تابع کیپد

      ok
      I'm going to
      RWTH Aachen
      University

      دیدگاه


        #4
        پاسخ : مشکل ساخت تابع کیپد

        مشکل اینه که تابع keypad رو void تعریف کردید .
        باید char باشه

        دیدگاه

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