منظورتون رو متوجه نمیشم!!!
شما میخوای ورودی رو از میکرو سوئیچ بخونی و 0 و 1 رو تشخیص بدی؟
اگه برای اینکار میخوایی باید برنامه رو به شکل زیر بنویسی :
کد:
#include <AT91SAM7X256.h>
#include <LIB_AT91SAM7X256.h>
#include <delay.h>
int main (void){
AT91F_PIO_CfgOutput (AT91C_BASE_PIOB,AT91C_PIO_PB19);
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
AT91F_PIO_CfgInput (AT91C_BASE_PIOA,AT91C_PIO_PA27);
while(1){
if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & AT91C_PIO_PA27) == 0)
AT91F_PIO_SetOutput (AT91C_BASE_PIOB,AT91C_PIO_PB19);
else
AT91F_PIO_ClearOutput (AT91C_BASE_PIOB,AT91C_PIO_PB19);
}}
مشکل شما فقط اینه که دستور :
کد:
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
رو اجرا نکردید.با اجرای این دستور کلاک پورت فعال میشه و شما میتونید ورودی رو بخونید.
در ضمن پیشنهاد میکنم از هدر pio.h استفاده کن.دستورات خیلی کاهش پیدا میکنه و به خاطر سپردنشون آسون تر میشه.برای آشنایی با این هدر یه سری به پست زیر بزن:
هدر خلاصه کننده دستورات پورت
موفق باشی