امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
چت باکس علمی ARM
نویسنده پیام
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #78
RE: چت باکس علمی ARM
والا من در جریان آرم و این مزه ها نیستم ولی از نظر زبون C میگم
-
اگر استراکچر داشته باشید و اشاره گر است
برای مثال
کد:
struct MyType {
  int alpha;
  double beta;
};

int main()
{
  MyType y;
  MyType *p;

  p = &y;
  y.alpha = 33;
  p->beta = 2.25; // same effect as y.beta = 2.25;

  return 0;
}
اون متغییر y اشاره گر نیست و با نقطه استفاده میشه
ولی اگه متغییر p رو ببینید اشاره گر هست برای همین از -> استفاده شده (هیچ ستاره و ... هم نداره)
پس
نقل قول: اين خط زير رو ببين ( از برنامه اي هست كه نوشتي )
کد:
while( (*(AT91C_RTTC_RTSR) & 0x1) ==0);
به اين شكل بنويسش:
1)
کد:
while( (AT91C_BASE_RTTC->RTTC_RTSR & 0x1) ==0);
اون اولین کد نشون میده متغییر "AT91C_RTTC_RTSR" است ولی کد بعدی اونو زیر مجموعه یک استراکچر بیان می کنه
اگر "AT91C_BASE_RTTC" یک استراکچر است و "AT91C_RTTC_RTSR" زیر مجموعه ی اون پس کد شماره 1 صحیح تر ولی اگه نه کد اولیه درست است
-
اما استفاده از پرانتز
همیشه در اعمال بیتی از پرانتز اتفاده کنید که اشتباه نشه به قول معروف کار از محکم کاری عیب نمی کنهBiggrin
اولویت عملگر ها رو مشاهده کنید
پس کد شما
کد:
while( (*(AT91C_RTTC_RTSR) & 0x1) ==0);
اگه پرانتز رو بر دارید ابتدا 1 برابر 0 میشه که نتیجه 0 میشه سپس با متغییر"AT91C_RTTC_RTSR" اند میشه
برای همین بدون پرانتز جواب نمیده
اما تفاوتی بین
کد:
*(AT91C_RTTC_RTSR)
و این وجود داره
کد:
*AT91C_RTTC_RTSR
در مورد دوم متغییر است که بهش اشاره میشه (همون کاری که همیشه می کنیم)
ولی اولی به نتیجه هر آنچه که درون پرانتز است اشاره میکنه که الان چیزی نیست ولی اگه مثلا این طوری بود
کد:
*(AT91C_RTTC_RTSR+4)
حالا به 4 بلاک بعد میرفت
---
حالا که گفتم اینم بگم که اگه مثلا این طوری بود
کد:
(char *)AT91C_RTTC_RTSR
این میگه متغییر ما به یه آدرس 8 بیتی اشاره میکنه فارغ از اینکه واقعا به چند بیت اشاره میکنه
برای اطلاعات بیشتر و اشاره به تابع و ...

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
(آخرین ویرایش در این ارسال: ۰۵-اردیبهشت-۱۳۹۲, ۱۱:۲۶:۵۷، توسط behzady.)
۳۱-فروردین-۱۳۹۲, ۲۲:۴۷:۳۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, sharin, babyy
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #79
RE: چت باکس علمی ARM
يكي در مورد inline__ توضيح بدهه لطفا ، اگر تابع رو معمولي بنويسيم چه تفاوتي با زماني دارهه كه از inline__ استفاده مي كنيم؟

http://www.keil.com/support/man/docs/arm...bgcdcb.htm

۰۱-اردیبهشت-۱۳۹۲, ۲۱:۲۷:۴۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, babyy
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #80
RE: چت باکس علمی ARM
(۰۱-اردیبهشت-۱۳۹۲, ۲۱:۲۷:۴۱)sharin نوشته است: يكي در مورد inline__ توضيح بدهه لطفا ، اگر تابع رو معمولي بنويسيم چه تفاوتي با زماني دارهه كه از inline__ استفاده مي كنيم؟

http://www.keil.com/support/man/docs/arm...bgcdcb.htm
برای اطلاعات بیشتر مطالعه کنید
Inline function
Inline expansion
Inline functions(KEIL Help)
-
در حالت عادی شما یک تابع که می نویسید در قسمتی از حافظه ذخیره میشه و هر بار که تابع فراخوانی میشه به اون قسمت از حافظه پرش انجام میشه اگه از این دستور استفاده کنید بجای این کار هر بار که تابع فرا خوانی میشه خود تابع جایگزین میشه مثل این که خود شما اون قسمت از کد رو کپی کنید! مثلا 10 جا تابع فرا خوانی شده تو این ده جا کل تابع کپی میشه و هیچ پرشی انجام نمیشه
این یک سری ویژگی هایی داره خلاصه
سرعت رو بالا میبره چون برشی نیست و قسمت های ابتدایی و انتهایی تابع وجود ندارن
به کامپایلر این امکان داده میشه که بهینه سازی رو نسبت به مکان انجام بده و ...
(مشاهده لینک های داده شده)

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
(آخرین ویرایش در این ارسال: ۰۱-اردیبهشت-۱۳۹۲, ۲۱:۴۱:۲۰، توسط behzady.)
۰۱-اردیبهشت-۱۳۹۲, ۲۱:۳۶:۳۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, omid_phoenix, sharin, babyy
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #81
RE: چت باکس علمی ARM
@مرتضی & بهزاد:
آقایون... ممنونم...
ببخشید یکم دیر رسیدم جواب بدم...

@مرتضی:
آقا مرتضی برام جالب بود... گفتم بگم شما هم شاید خوشتون بیاد...
چند وقت پیش داشتم سورس کد یه پروژه خارجکی رو مرور میکردم..
دیدم طرف توضیح داده که برای افزایش سرعت اجرای یه تابع خاص رو که بهش نیاز بود ، اون تابع رو در sram اجرا میکرد... خیلی برام جالب بود...

الان نتونستم پیداش کنم...
ولی خودمم میخواد بفهمم چطوری کرده این کارو...
نظری دارین آقا مرتضی؟
آقا بهزاد شما چیزی در این مورد میدونید؟
۰۱-اردیبهشت-۱۳۹۲, ۲۱:۴۸:۱۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sharin, behzady, babyy
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #82
RE: چت باکس علمی ARM
(۰۱-اردیبهشت-۱۳۹۲, ۲۱:۴۸:۱۶)salehjg نوشته است: @مرتضی & بهزاد:
آقایون... ممنونم...
ببخشید یکم دیر رسیدم جواب بدم...

@مرتضی:
آقا مرتضی برام جالب بود... گفتم بگم شما هم شاید خوشتون بیاد...
چند وقت پیش داشتم سورس کد یه پروژه خارجکی رو مرور میکردم..
دیدم طرف توضیح داده که برای افزایش سرعت اجرای یه تابع خاص رو که بهش نیاز بود ، اون تابع رو در sram اجرا میکرد... خیلی برام جالب بود...

الان نتونستم پیداش کنم...
ولی خودمم میخواد بفهمم چطوری کرده این کارو...
نظری دارین آقا مرتضی؟
آقا بهزاد شما چیزی در این مورد میدونید؟
باید ببینیم
خیلی کار ها میشه کرد ولی در کل منظورش این نبوده که کل تابع تو Sram باشه(البته شدنی هم نیستConfused)
تو avr که سرعت دسترسی به فلش و رم یکی هست!(فکر می کنمBiggrin)
به هر حال جالبه دوست دارم ببینم چه کرده! حتما سورس کدش رو پیدا کردید اینجا هم بزارید!

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۰۱-اردیبهشت-۱۳۹۲, ۲۲:۰۴:۴۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, sharin, babyy
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #83
RE: چت باکس علمی ARM
(۰۱-اردیبهشت-۱۳۹۲, ۲۲:۰۴:۴۶)behzady نوشته است:
(۰۱-اردیبهشت-۱۳۹۲, ۲۱:۴۸:۱۶)salehjg نوشته است: @مرتضی & بهزاد:
آقایون... ممنونم...
ببخشید یکم دیر رسیدم جواب بدم...

@مرتضی:
آقا مرتضی برام جالب بود... گفتم بگم شما هم شاید خوشتون بیاد...
چند وقت پیش داشتم سورس کد یه پروژه خارجکی رو مرور میکردم..
دیدم طرف توضیح داده که برای افزایش سرعت اجرای یه تابع خاص رو که بهش نیاز بود ، اون تابع رو در sram اجرا میکرد... خیلی برام جالب بود...

الان نتونستم پیداش کنم...
ولی خودمم میخواد بفهمم چطوری کرده این کارو...
نظری دارین آقا مرتضی؟
آقا بهزاد شما چیزی در این مورد میدونید؟
باید ببینیم
خیلی کار ها میشه کرد ولی در کل منظورش این نبوده که کل تابع تو Sram باشه(البته شدنی هم نیستConfused)
تو avr که سرعت دسترسی به فلش و رم یکی هست!(فکر می کنمBiggrin)
به هر حال جالبه دوست دارم ببینم چه کرده! حتما سورس کدش رو پیدا کردید اینجا هم بزارید!

پیدا کردم
http://www.pro-qwerty.com/files/wav_player_main.c.txt

__ramfunc
۰۲-اردیبهشت-۱۳۹۲, ۱۳:۰۲:۰۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sharin, babyy, behzady
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #84
RE: چت باکس علمی ARM
(۰۲-اردیبهشت-۱۳۹۲, ۱۳:۰۲:۰۰)salehjg نوشته است: پیدا کردم
http://www.pro-qwerty.com/files/wav_player_main.c.txt

__ramfunc
چه جالب!
فکر کنم این قابلیت تو AVR نیستBiggrin
بله این تابع رو توی رم ذخیره میکنه به جای اینکه توی FLASH ذخیره بشه
و بله سرعت رو افزایش میده
ولی خاصیتش بیشتر جایی مشخص میشه که شما می خوای هنگام اجرای برنامه توی FLASH تغییر ایجاد کنی که تابعی که این کار رو میکنه توی رم میاری تا بشه تغییر داد
جالب بود:d
جالب تر اینکه توی برنامه ی شما هستBiggrin
سرعت اجرا رو می خواسته زیاد کنه؟
بازم از این نکات دیدید بیارید یاد بگیریمBiggrin

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
(آخرین ویرایش در این ارسال: ۰۲-اردیبهشت-۱۳۹۲, ۱۶:۲۰:۳۲، توسط babyy.)
۰۲-اردیبهشت-۱۳۹۲, ۱۵:۵۴:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, salehjg
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #85
RE: چت باکس علمی ARM
سلام
برای راه اندازی کی پد و نمایش اطلاعات بر روی 7سگمنت
یه برنامه نوشتم ولی نمیدونم مشکلش کجاست رو سخت افزار اجرا نمیشه
کد:
#include <AT91SAM7X256.H>
#include <delay.h>
char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int main(void)
{
int i;
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOA);
AT91C_BASE_PIOA->PIO_PER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_ODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_OER=(1<<4|1<<5|1<<6|1<<7);
/////////////////
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOB);
AT91C_BASE_PIOB->PIO_PER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
AT91C_BASE_PIOB->PIO_OER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
/////////////////
while(1){
AT91C_BASE_PIOA->PIO_SODR=(1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_CODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_CODR=(1<<4);
delay_ms(5);
if (AT91C_BASE_PIOA->PIO_CODR==(1<<0)){i=7;}
if (AT91C_BASE_PIOA->PIO_CODR==(1<<1)){i=4;}
if (AT91C_BASE_PIOA->PIO_CODR==(1<<2)){i=1;}
/////////////////
AT91C_BASE_PIOA->PIO_SODR=(1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_CODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_CODR=(1<<5);
delay_ms(5);
if (AT91C_BASE_PIOA->PIO_CODR==(1<<0)){i=8;}
if (AT91C_BASE_PIOA->PIO_CODR==(1<<1)){i=5;}
if (AT91C_BASE_PIOA->PIO_CODR==(1<<2)){i=2;}
if (AT91C_BASE_PIOA->PIO_CODR==(1<<3)){i=0;}
/////////////////
AT91C_BASE_PIOA->PIO_SODR=(1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_CODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_CODR=(1<<6);
delay_ms(5);
if (AT91C_BASE_PIOA->PIO_CODR==(1<<0)){i=9;}
if (AT91C_BASE_PIOA->PIO_CODR==(1<<1)){i=6;}
if (AT91C_BASE_PIOA->PIO_CODR==(1<<2)){i=3;}
/////////////////
AT91C_BASE_PIOB->PIO_CODR=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
AT91C_BASE_PIOB->PIO_SODR=seg[i];
}
}

هدف این بود این برنامه تو کدویژن رو تو keil پیاده کنم »

کد:
#include <mega8.h>
#include <delay.h>

char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(void)
{        
int i;
PORTA=0xF0;
DDRA=0xF0;
PORTB=0x00;
DDRB=0xff;

while (1)
      {
      PORTA=0b11110000;
      PORTA.4=0;
      delay_ms(5);
      if (PINA.0==0){i=7;} //7
      if (PINA.1==0){i=4;} //4
      if (PINA.2==0){i=1;}  //1

      PORTA=0b11110000;
      PORTA.5=0;
      delay_ms(5);
      if (PINA.0==0){i=8;} //8
      if (PINA.1==0){i=5;} //5
      if (PINA.2==0){i=2;} //2
      if (PINA.3==0){i=0;} //0
      PORTA=0b11110000;
      PORTA.6=0;
      delay_ms(5);
      if (PINA.0==0){i=9;} //9
      if (PINA.1==0){i=6;} //6
      if (PINA.2==0){i=3;} //3
      PORTB=seg[i];
      };
}

بدون خطا کامپایل میشه ولی رو سخت افزار جواب نمیده
مقاومت های پول آپ رو هم گذاشتم تاثیری نداشت

(آخرین ویرایش در این ارسال: ۰۴-آبان-۱۳۹۲, ۲۳:۰۰:۳۳، توسط omid_phoenix.)
۰۴-آبان-۱۳۹۲, ۲۲:۵۵:۱۸
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #86
RE: چت باکس علمی ARM
سلام
الان کامل بررسی نکردم
آخر شب پست میزنم...

اما گفتم چیزایی که گرفتم، بگم شاید مشکل تنها اونا باشن

خل if های درون حلقه اشتباهه
اگه هدف اینکه یک بودن یک پین خاص از پورت a، بررسی بشه، اشتباهه

Reg&(1<<5) ==1<<5
با این کار یک بودن pa05 یا pb05 بررسی میشه.(بسته به این که رجیستر مال کدوم باشه)
Reg هم باید رجیستر status مربوط به pio باشه ( اسمشو حفظ نیستم... از توی اون هدر فایل میکرو، نگاه کنی مشخصه)
۰۵-آبان-۱۳۹۲, ۰۰:۳۶:۵۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, Ambassador, sharin, omid_phoenix, hadikh73
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #87
RE: چت باکس علمی ARM
اميد جان خروجي پايه ها رو بافر كن.

شرط هات هم اشتباه هستن.
مثلا اين غلط هست.
کد php:
if (AT91C_BASE_PIOA->PIO_CODR==(1<<3)){i=0;} 

بايد اينطوري بنويسي.
براي خوندن پايه:

کد php:
num AT91C_BASE_PIOA->PIO_PDSR;
if((
num & (1<<3)) == (1<<3))
i=0

(آخرین ویرایش در این ارسال: ۰۵-آبان-۱۳۹۲, ۰۰:۴۷:۱۸، توسط sharin.)
۰۵-آبان-۱۳۹۲, ۰۰:۴۱:۲۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, Ambassador, omid_phoenix, hadikh73
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #88
RE: چت باکس علمی ARM
سپاس صالح جان+سپاس مرتضی جان:)

الان به اینصورت درسته؟
کد:
#include <AT91SAM7X256.H>
#include <delay.h>
char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int main(void)
{
int i;
unsigned int k;
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOA);
AT91C_BASE_PIOA->PIO_PER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_ODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_OER=(1<<4|1<<5|1<<6|1<<7);
/////////////////
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOB);
AT91C_BASE_PIOB->PIO_PER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
AT91C_BASE_PIOB->PIO_OER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
/////////////////
while(1){
AT91C_BASE_PIOA->PIO_SODR=(1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_CODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_CODR=(1<<4);
delay_ms(5);

k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<0)==(1<<0))
i=7;
k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<1)==(1<<1))
i=4;
k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<2)==(1<<2))
i=1;

/////////////////
AT91C_BASE_PIOA->PIO_SODR=(1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_CODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_CODR=(1<<5);
delay_ms(5);

k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<0)==(1<<0))
i=8;
k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<1)==(1<<1))
i=5;
k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<2)==(1<<2))
i=2;
k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<3)==(1<<2))
i=0;
/////////////////
AT91C_BASE_PIOA->PIO_SODR=(1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOA->PIO_CODR=(1<<0|1<<1|1<<2|1<<3);
AT91C_BASE_PIOA->PIO_CODR=(1<<6);
delay_ms(5);

k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<0)==(1<<0))
i=9;
k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<1)==(1<<1))
i=6;
k = AT91C_BASE_PIOA->PIO_PDSR;
if (k & (1<<2)==(1<<2))
i=3;

/////////////////
AT91C_BASE_PIOB->PIO_CODR=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
AT91C_BASE_PIOB->PIO_SODR=seg[i];
}
}
این برنامه هم بدون خطا کامپایل شد ولی رو سخت افزار اجرا نمیشه
مقاومت پول آپ ها رو نیازه بذارم؟

نقل قول: اميد جان خروجي پايه ها رو بافر كن.

بصورت سخت افزاری؟

۰۵-آبان-۱۳۹۲, ۰۱:۱۳:۵۲
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, hadikh73


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS