یک جا لازم شد با استفاده از Atmega16معادل باینری یک عدد رو تو یک LCD کاراکتری 16*2 نمایش بدم. البته خیلی راحت میشه با دو خط دستور این معادل باینری رو روی یک پورت میکرو نشون داد. اینجوری:

Unsigned char a=یک عددی

PORTA=a

ولی نمیشه خیلی راحت همین عدد باینری رو تو LCD نمایش داد چون کامپایلر فرض میکنه این عدد کد اسکی یک  کاراکتره و اون کاراکترو نشون میده

 راهی که به نظرم رسید این بود که اون عدد رو روی یک پورت میکرو بنویسم، بعد با استفاده از حلقه for برنامه تک تک پین های اون پورت رو بخونه و با استفاده از دستور زیر، بسته به مقدار پین تو LCD صفر یا یک چاپ کنه:

 LCD_ putchar(ASCII code of 0 or 1)

 ولی کامپایلر به PORTA.i گیر داد(i شمارنده حلقه است) و مجبور شدم برای تک تک پین ها یه همچین کدی رو copy-paste کنم:

lcd_gotoxy(0,1);

 if(PORTA.7==0)

   lcd_putchar(o); //o = ASCII code of 0

 else

   lcd_putchar(l); //l = ASCII code of 1

اگه کسی راه آسونتری بلد بود خوشحال میشم به منم بگه

Advertisements