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

موضوع: kbd.h کامل

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2008
    نوشته ها
    25
    تشکر
    20
    تشکر شده 4 بار در 4 پست

    پیش فرض kbd.h کامل

    با سلام
    فایل kbd.h معرفی شده در سایت کار نمی کنه میشه لطفا یه kbd.h دیگه بدید؟


    #ifndef kbd_INCLUDED_
    #define kbd_INCLUDED_
    #include "delay.h"
    void kbd_pin(int port,int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4);
    void debounce(unsigned long b);

    int row1,row2,row3,row4,getkbd;
    int clm1,clm2,clm3,clm4;

    void kbd_pin(int port,int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4){

    row1=a1,row2=a2,row3=a3,row4=a4;
    clm1=b1,clm2=b2,clm3=b3,clm4=b4;

    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);


    switch (port)
    {

    case 1: port_add =0xFFFFF400; // (PIOA) Base Address
    break;
    case 2: port_add =0xFFFFF600; // (PIOB) Base Address
    break;
    default : port_add =0xFFFFF600;
    break;
    }
    }
    unsigned int get_kbd(void)
    {

    AT91F_PIO_CfgOutput (((AT91PS_PIO)port_add),(1<<row1));
    AT91F_PIO_CfgOutput (((AT91PS_PIO)port_add),(1<<row2));
    AT91F_PIO_CfgOutput (((AT91PS_PIO)port_add),(1<<row3));
    AT91F_PIO_CfgOutput (((AT91PS_PIO)port_add),(1<<row4));


    //************************************************** *********************************
    AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));

    //if (((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & AT91C_PIO_PA30) == 0))
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)

    //if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    {
    getkbd=0;
    goto x; }
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0) {
    getkbd=1;
    goto x; }
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0) {
    getkbd=2;
    goto x; }
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0) {
    getkbd=3;
    goto x; }

    delay_s(1);
    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 1));
    AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0) {
    getkbd=4;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0) {
    getkbd=5;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0) {
    getkbd=6;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0) {
    getkbd=7;
    goto x; }
    delay_ms(50);
    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput (((AT91PS_PIO)port_add),(1<<row1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_ClearOutput(((AT91PS_PIO )port_add),(1<<row3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0) {
    getkbd=8;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0) {
    getkbd=9;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0) {
    getkbd=10;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0) {
    getkbd=11;
    goto x;}

    delay_ms(50);
    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_ClearOutput(((AT91PS_PIO) port_add),(1<<row4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0) {
    getkbd=12;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0) {
    getkbd=13;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0) {
    getkbd=14;
    goto x;}
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0) {
    getkbd=15;
    goto x;}
    delay_ms(25);
    x:

    return(getkbd);

    }

    #endif


    همونطور که ملاحظه می فرمایید دستور debounce هم تابعش معرفی شده ولی نوشته نشده !

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

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    این کتابخونه دارای مشکلاتی در بخش تنظیم کردن فرکانس و کلاک pio و ... هست و متاسفانه هنوز وقت نشده مشکلش رو حل کنیم ، من حتما برای چند روز اینده ورژن هایی اون رو در همین جا میزارم .

  4. کاربران : 2 تشکر کرده اند از شما 1nafar برای ارسال این پست سودمند:


  5. #3
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2008
    نوشته ها
    25
    تشکر
    20
    تشکر شده 4 بار در 4 پست

    پیش فرض

    فقط لطفا یه کم سریعتر.
    به نظر بنده مشکل در خواندن ورودی بصورت if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0) هستش چون ظاهراً وقتی برنامه رو نگاه می کنی الگوریتمش صحیح هستش اما اگه از همین الگوریتم برای خواندن یه کلید استفاده کنیم درست عمل نمی کنه یا من جواب نگرفتم.
    من این هدر رو لازم دارم و اگه جواب گرفتم میزارم رو سایت اما اگه شما زودتر این کار رو برام انجام بدید خیلی ممنون میشم.

  6. #4
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    کتابخونه ی کیپد 4*4 + یه دونه پروژه :
    http://fuf.ir/download.php?id=B5E31F201
    توی این کتابخونه تقریبا کلیه ی مشکلات حذف شده و 100 % کار میکنه
    دستورات همون دستورات قبلی هست :
    معرفی سطر ها و ستون ها و پورتی که کیپد بهش متصل شده :
    kbd_pin(port,row1, row2, row3, row4, col1, col2 , col3, col4);
    خوندن خروجی کیپد و ارسال مقدار دیبانس :
    var=get_kbd(debounce);
    مقدار دیبانس عددی بین 0 تا 265 هست و میتونه تاخری بین 0 تا 256 میلی ثانیه رو در هنگام خوندن کیپد ایجاد کنه
    با فشردن هر کلید عدد متناظر اون که بین 1 تا 16 هست ، در متغیر var قرار میگیره .

    برای راه اندازی این کتابخونه ، به کتابخونه های delay.h و ilib_AT91SAM7X256.h نیاز دارید که در پوشه ی پروژه ی بالا وجود داره ، من به زودی این کتابخونه رو ارتقاء میدم و انشااله در ورژن نهایی نیازی به این دوتا فایل نخواهیم داشت .

    اگه مشکلی توی کتابخونه بود ، یا دستوری باید اضافه بشه یا شکلش تغییر کنه بگید .
    با تشکر

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


  8. #5
    عضو جدید
    تاریخ عضویت
    Jul 2010
    نوشته ها
    17
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    من از این فایلی که گذاشته اید استفاده می کنم ولی درست کار نمیکنه.
    همیشه عبارت KBD:15 روی lcd نشون داده میشه و با زدن دگمه های کی بورد این عدد 15 میشه 13 و دوباره باز برمیگرده به 15!
    لطفا راهنمایی کنید.
    ممنون

  9. #6
    همکار M3R آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    مسعود
    نوشته ها
    710
    تشکر
    426
    تشکر شده 649 بار در 304 پست

    پیش فرض

    سلام.
    من هم دقیقا همین مشکل رو دارم.
    اگه دوستان یه لطفی بکنن و کتابخونه رو بررسی کنن ممنون میشم.

  10. #7
    عضو جدید
    تاریخ عضویت
    Jan 2010
    نوشته ها
    14
    تشکر
    5
    تشکر شده 14 بار در 6 پست

    Exclamation اشکال در دستور debounce در keil

    سلام و درود بر دوستان گلم
    من تو برنامه ام از هدر کی پد استفاده کردم ولی باز هم جواب نگرفتم چون تو دیباگ و کامپایل به دستور زیر که قرمز رنگش کردم اشکال میگیره
    اینم برنامه اش :
    #ifndef kbd_INCLUDED_
    #define kbd_INCLUDED_
    #include "delay.h"
    #include "lib_AT91SAM7X256.h "
    void kbd_pin(int port,int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4);
    unsigned int row1,row2,row3,row4,getkbd,port_add;
    unsigned int clm1,clm2,clm3,clm4;
    //************************************************** *************
    void kbd_pin(int port,int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4){

    row1=a1,row2=a2,row3=a3,row4=a4;
    clm1=b1,clm2=b2,clm3=b3,clm4=b4;

    switch (port)
    {


    case 1: port_add =0xFFFFF400; // (PIOA) Base Address
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    break;
    case 2: port_add =0xFFFFF600; // (PIOB) Base Address
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
    break;
    default : port_add =0xFFFFF600;
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
    break;
    }
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row1));
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row2));
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row3));
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row4));
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm1));
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm2));
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm3));
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm4));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm1));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm2));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm3));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm4));
    }


    unsigned int get_kbd(char deb)
    {
    delay_ms(deb);
    //************************************************** *********************************
    AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=1;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=2;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=3;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=4;
    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 1));
    AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=5;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=6;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=7;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=8;
    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput (((AT91PS_PIO)port_add),(1<<row1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_ClearOutput(((AT91PS_PIO )port_add),(1<<row3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=9;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=10;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=11;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=12;

    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_ClearOutput(((AT91PS_PIO) port_add),(1<<row4));

    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=13;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=14;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=15;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=16;
    return(getkbd);


    }
    //************************************************** *******************

    //************************************************** *******************

    #endif

    کسی از دوستان میتونه مشکل من را حل کنه ؟؟؟
    ممنون میشم از لطفتون
    ویرایش توسط eghbali : 20-11-2010 در ساعت 00:58

  11. #8
    عضو جدید
    تاریخ عضویت
    Jan 2010
    نوشته ها
    14
    تشکر
    5
    تشکر شده 14 بار در 6 پست

    Exclamation مشکل در هدر فایل کی پد

    نقل قول نوشته اصلی توسط eghbali نمایش پست ها
    سلام و درود بر دوستان گلم
    من تو برنامه ام از هدر کی پد استفاده کردم ولی باز هم جواب نگرفتم چون تو دیباگ و کامپایل به دستور زیر که قرمز رنگش کردم اشکال میگیره
    اینم برنامه اش :
    #ifndef kbd_INCLUDED_
    #define kbd_INCLUDED_
    #include "delay.h"
    #include "lib_AT91SAM7X256.h "
    void kbd_pin(int port,int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4);
    unsigned int row1,row2,row3,row4,getkbd,port_add;
    unsigned int clm1,clm2,clm3,clm4;
    //************************************************** *************
    void kbd_pin(int port,int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4){

    row1=a1,row2=a2,row3=a3,row4=a4;
    clm1=b1,clm2=b2,clm3=b3,clm4=b4;

    switch (port)
    {


    case 1: port_add =0xFFFFF400; // (PIOA) Base Address
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    break;
    case 2: port_add =0xFFFFF600; // (PIOB) Base Address
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
    break;
    default : port_add =0xFFFFF600;
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
    break;
    }
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row1));
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row2));
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row3));
    AT91F_PIO_CfgOutput (((AT91PS_PIO) port_add),(1<<row4));
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm1));
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm2));
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm3));
    AT91F_PIO_CfgInput(((AT91PS_PIO) port_add),(1<<clm4));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm1));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm2));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm3));
    AT91F_PIO_CfgPullup(((AT91PS_PIO) port_add),(1<<clm4));
    }


    unsigned int get_kbd(char deb)
    {
    delay_ms(deb);
    //************************************************** *********************************
    AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=1;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=2;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=3;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=4;
    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 1));
    AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=5;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=6;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=7;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=8;
    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput (((AT91PS_PIO)port_add),(1<<row1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_ClearOutput(((AT91PS_PIO )port_add),(1<<row3));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 4));
    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=9;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=10;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=11;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=12;

    //************************************************** ***********************************
    //************************************************** *********************************
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 1));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 2));
    AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row 3));
    AT91F_PIO_ClearOutput(((AT91PS_PIO) port_add),(1<<row4));

    if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm1)) == 0)
    getkbd=13;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm2)) == 0)
    getkbd=14;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm3)) == 0)
    getkbd=15;
    else if ((AT91F_PIO_GetInput((AT91PS_PIO)port_add) & (1<<clm4)) == 0)
    getkbd=16;
    return(getkbd);


    }
    //************************************************** *******************

    //************************************************** *******************

    #endif

    کسی از دوستان میتونه مشکل من را حل کنه ؟؟؟
    ممنون میشم از لطفتون
    کسی از دوستان میتونه مشکل هدر کی پد را حل کنه ؟؟؟؟؟؟؟

  12. #9
    عضو جدید
    تاریخ عضویت
    Jan 2010
    نوشته ها
    14
    تشکر
    5
    تشکر شده 14 بار در 6 پست

    Exclamation

    من دارم تو یه پروژه هم از کی پد استفاده میکنم و هم از "ال سی دی " 4 بیتی .تو هر دو هدر فایل هایی که نوشته شده یک بار port_add به صورت متغیر unsigned int تعریف شده ( در داخل هدر کی پد ) و یک بار به صورت int تعریف شده !!!!
    فکر کنم یکی از دلایل گیر دادن در هنگام کامپایل کردن این باشه .
    اومدم و هر دو را به مقدار int تبدیل کردم و این مشکل برطرف شد ولی نمیدون این کارم درسته یا نه ؟!!!
    حالا هنگام کامپایل کردن میاد به Debounce اشکال میگیره و میگه براش تعریف نشده که چیه !!!!!!
    کسی میتونه کمکم کنه ؟؟!!!

  13. #10
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    کتابخانه ی کامل در ویرایش دوم مجله ی شماره ی 4 آورده شده :
    http://www.iranmicro.ir/forum/showthread.php?t=4295
    تست کنید و اگه مشکلی بود همین جا مطرح کنید .
    با تشکر

  14. #11
    عضو جدید
    تاریخ عضویت
    Jan 2010
    نوشته ها
    14
    تشکر
    5
    تشکر شده 14 بار در 6 پست

    پیش فرض

    نقل قول نوشته اصلی توسط 1nafar نمایش پست ها
    سلام
    کتابخانه ی کامل در ویرایش دوم مجله ی شماره ی 4 آورده شده :
    http://www.iranmicro.ir/forum/showthread.php?t=4295
    تست کنید و اگه مشکلی بود همین جا مطرح کنید .
    با تشکر
    سلام و درود بر شما مدیریت محترم
    دوست عزیز با اضافه کردن هدر جدید مشکلاتم بیشتر هم شد !!!!
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h(25): error: #20: identifier "KBD_PIO_enable" is undefined
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: KBD_PIO_enable=(0xFF << KBD_DATAPORT_OFFSET);
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: ^
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h(25): error: #20: identifier "KBD_DATAPORT_OFFSET" is undefined
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: KBD_PIO_enable=(0xFF << KBD_DATAPORT_OFFSET);
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: ^
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h(26): error: #20: identifier "KBD_PIO_Pull_up" is undefined
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: KBD_PIO_Pull_up =((1<<(KBD_DATAPORT_OFFSET+4))|(1<<(KBD_DATAPORT_O FFSET+5))|(1<<(KBD_DATAPORT_OFFSET+6))|(1<<(KBD_DA TAPORT_OFFSET+7)));
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: ^
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h(27): error: #20: identifier "KBD_PIO_CfgOutput" is undefined
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: KBD_PIO_CfgOutput=((1<<KBD_DATAPORT_OFFSET)|(1<<(K BD_DATAPORT_OFFSET+1))|(1<<(KBD_DATAPORT_OFFSET+2) )|(1<<(KBD_DATAPORT_OFFSET+3)));
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: ^
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h(31): error: #20: identifier "KBD_PIO_SetOutput" is undefined
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: KBD_PIO_SetOutput=((1<<(KBD_DATAPORT_OFFSET+1))|(1 <<(KBD_DATAPORT_OFFSET+2))|(1<<(KBD_DATAPORT_OFFSE T+3)));
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: ^
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h(32): error: #20: identifier "KBD_PIO_ClearOutput" is undefined
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: KBD_PIO_ClearOutput =(1<<KBD_DATAPORT_OFFSET);
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: ^
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h(34): error: #20: identifier "KBD_PIO_Setinput" is undefined
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: if (KBD_PIO_Setinput& ((1<<(KBD_DATAPORT_OFFSET+4)) ) == 0) {
    E:\Keil\ARM\INC\Atmel\SAM7X\kbd.h: ^

  15. #12
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    از کدوم ورژن کامپیایلر استفاده میکنید ؟
    یادتون باشه که توی هدر kbd.h تعدادی از دستورات تغییر کرده ، بهتر اول پروژه ی داخل پیوست مجله رو تست کنید و بعد اون رو تغییر بدید .

  16. #13
    تازه وارد
    تاریخ عضویت
    Apr 2012
    نوشته ها
    3
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض

    سلام منم مدتها مشکل شما را داشتم الان با هدر زیر تقریبا حذف شده

    //keypad.h revision 1.0
    //raminmicro@gmail.com
    #ifndef keypad_INCLUDED_
    #define keypad_INCLUDED_
    #ifdef KBD_PORT_A
    #define KEYPAD_PORT AT91C_BASE_PIOA
    #define KEYPAD_ID_PIO AT91C_ID_PIOA
    #endif
    #ifdef KBD_PORT_B
    #define KEYPAD_PORT AT91C_BASE_PIOB
    #define KEYPAD_ID_PIO AT91C_ID_PIOB
    #endif
    char keypad(void)
    {
    unsigned char code[4][4]={{'1','4','7','*'},{'2','5','8','0'},{'3','6','9' ,'#'},{'A','B','C','D'}};
    unsigned char i,num_key='@';
    unsigned int data,temp= 1<<(KBD_OFFSET+3);
    AT91F_PIO_CfgOutput(KEYPAD_PORT, 0xF<<KBD_OFFSET);
    AT91F_PIO_CfgInput(KEYPAD_PORT, 0xF<<(KBD_OFFSET+4));
    AT91F_PIO_CfgPullup(KEYPAD_PORT, 0xF<<(KBD_OFFSET+4));
    *AT91C_PMC_PCER= 1 << KEYPAD_ID_PIO;
    for (i=0;i<4;i++) {
    AT91F_PIO_SetOutput (KEYPAD_PORT, 0xF<<KBD_OFFSET);
    AT91F_PIO_ClearOutput(KEYPAD_PORT, temp);
    delay_us(100);
    if ((AT91F_PIO_GetInput(KEYPAD_PORT)& 1<<KBD_OFFSET+4)==0)
    num_key=code[i][3];
    else if ((AT91F_PIO_GetInput(KEYPAD_PORT)& 1<<KBD_OFFSET+5)==0)
    num_key=code[i][2];
    else if ((AT91F_PIO_GetInput(KEYPAD_PORT)& 1<<KBD_OFFSET+6)==0)
    num_key=code[i][1];
    else if ((AT91F_PIO_GetInput(KEYPAD_PORT)& 1<<KBD_OFFSET+7)==0)
    num_key=code[i][0];
    delay_ms(20);
    temp>>=1;
    }
    return num_key;
    }
    #endif

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


  18. #14
    عضو جدید
    تاریخ عضویت
    Mar 2012
    نوشته ها
    12
    تشکر
    0
    تشکر شده 2 بار در 2 پست

    پیش فرض

    سلام من از این استفاده کردم جواب داد.نحوه استفاده از توابع در فایل pdf ضمیمه.
    فايل هاي پيوست شده فايل هاي پيوست شده

  19. #15
    کاربر علاقه مند at91sam7x256 آواتار ها
    تاریخ عضویت
    May 2012
    نوشته ها
    63
    تشکر
    111
    تشکر شده 22 بار در 12 پست

    پیش فرض

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

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

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