PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : kbd.h کامل



nh2600
16-06-2010, 22:54
با سلام
فایل 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<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));

//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<<row1));
AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row2));
AT91F_PIO_ClearOutput(((AT91PS_PIO )port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row1));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
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 هم تابعش معرفی شده ولی نوشته نشده !

1nafar
17-06-2010, 23:07
سلام
این کتابخونه دارای مشکلاتی در بخش تنظیم کردن فرکانس و کلاک pio و ... هست و متاسفانه هنوز وقت نشده مشکلش رو حل کنیم ، من حتما برای چند روز اینده ورژن هایی اون رو در همین جا میزارم .

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

1nafar
26-06-2010, 01:48
سلام
کتابخونه ی کیپد 4*4 + یه دونه پروژه :
You can see links before reply
توی این کتابخونه تقریبا کلیه ی مشکلات حذف شده و 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 نیاز دارید که در پوشه ی پروژه ی بالا وجود داره ، من به زودی این کتابخونه رو ارتقاء میدم و انشااله در ورژن نهایی نیازی به این دوتا فایل نخواهیم داشت .

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

ena
12-08-2010, 16:06
سلام
من از این فایلی که گذاشته اید استفاده می کنم ولی درست کار نمیکنه.
همیشه عبارت KBD:15 روی lcd نشون داده میشه و با زدن دگمه های کی بورد این عدد 15 میشه 13 و دوباره باز برمیگرده به 15!
لطفا راهنمایی کنید.
ممنون

M3R
12-08-2010, 16:28
سلام.
من هم دقیقا همین مشکل رو دارم.
اگه دوستان یه لطفی بکنن و کتابخونه رو بررسی کنن ممنون میشم.

eghbali
20-11-2010, 00:49
سلام و درود بر دوستان گلم
من تو برنامه ام از هدر کی پد استفاده کردم ولی باز هم جواب نگرفتم چون تو دیباگ و کامپایل به دستور زیر که قرمز رنگش کردم اشکال میگیره :x
اینم برنامه اش :
#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<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row1));
AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row2));
AT91F_PIO_ClearOutput(((AT91PS_PIO )port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row1));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
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, 20:17
سلام و درود بر دوستان گلم
من تو برنامه ام از هدر کی پد استفاده کردم ولی باز هم جواب نگرفتم چون تو دیباگ و کامپایل به دستور زیر که قرمز رنگش کردم اشکال میگیره :x
اینم برنامه اش :
#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<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row1));
AT91F_PIO_ClearOutput (((AT91PS_PIO)port_add),(1<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row2));
AT91F_PIO_ClearOutput(((AT91PS_PIO )port_add),(1<<row3));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row4));
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<<row1));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row2));
AT91F_PIO_SetOutput(((AT91PS_PIO)port_add),(1<<row3));
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

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

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

1nafar
20-11-2010, 20:34
سلام
کتابخانه ی کامل در ویرایش دوم مجله ی شماره ی 4 آورده شده :
You can see links before reply
تست کنید و اگه مشکلی بود همین جا مطرح کنید .
با تشکر

eghbali
20-11-2010, 20:44
سلام
کتابخانه ی کامل در ویرایش دوم مجله ی شماره ی 4 آورده شده :
You can see links before reply
تست کنید و اگه مشکلی بود همین جا مطرح کنید .
با تشکر
سلام و درود بر شما مدیریت محترم
دوست عزیز با اضافه کردن هدر جدید مشکلاتم بیشتر هم شد !!!!cry::

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_OFFSET+5))|(1<<(KBD_DATAPORT_OFFSET+6))|(1<<(KBD_DATAPORT_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<<(KBD_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_OFFSET+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: ^

1nafar
21-11-2010, 11:06
سلام
از کدوم ورژن کامپیایلر استفاده میکنید ؟
یادتون باشه که توی هدر kbd.h تعدادی از دستورات تغییر کرده ، بهتر اول پروژه ی داخل پیوست مجله رو تست کنید و بعد اون رو تغییر بدید .

eghbalamidi
15-05-2012, 04:43
سلام منم مدتها مشکل شما را داشتم الان با هدر زیر تقریبا حذف شده

//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

riyahiyan
09-06-2012, 10:37
سلام من از این استفاده کردم جواب داد.نحوه استفاده از توابع در فایل pdf ضمیمه.

at91sam7x256
03-08-2012, 23:53
سلام. والا این هدر اصلا کار نمیکنه و فقط عدد 0 رو نشون میده. کلی ایراد داشت . من تا یجاهیی پیش رفتم انشالله تو اولین فرصت میزارم. البته میخوام با کتابخانه pio هم بنویسم که راحتتر و قابل فهمتر باشه. کسی از این هدر تا حالا واقعا جواب گرفته ؟؟؟؟