پاسخ : راه اندازی واحد USART در AT91SAM7S64 و ارسال و دریافت با HM-TR
احتمالا منظورشون این بوده که مثلا متغیر 16 بیت رو نمیشه یکجا ارسال کرد چون حداکثر طول دیتای ارسالی 9 بیته پس یه کاری کنید
اگر ماژولتون 8 بیت میفرسته دیتاتون 8 بیته اون رو مستقیما ارسال کنید بدون هیچ تغییری
اگر بیشتر از 8 بیته اون رو دو قسمت میکنید
فرض کنید متغیر int 16 بیت داره بنابراین میتونید این کار رو انجام بدید:
الآن متغیر b حاوی 8 بیت کم ارزشه یعنی عدد 91 توشه و متغیر c هم 8 بیت بعدی داخلشه که میشه 768 ولی اگر مقدار c رو بخواید مقدارش 3 هست
حالا متغیر های b و c رو ارسال میکنید با تابعی که هر چی اینور میفرستید اونور هم همونو بگیرید یعنی تبدیل اسکی نکنه
بعد توی گیرنده
اینجا متغیر های b و c رو میگیرید و عملیات رو روش انجام میدید در نتیجه متغیر s با a برابره ولی برای نمایشش روی LCD باید باید به تعداد رقم های احتمالی یه آرایه تعریف کنید و بعد یه تابع از اون کتابخونه ها پیدا کنید که مقدار int رو تبدیل کنه به اسکی و کد اسکی رقم ها رو دونه دونه داخل عضو های آرایه میریزه و بعد آرایه رو به LCD میفرستید
فکر کنم اسم تابعش باید itoa باشه میتونید توی هدر جایی که توابع LCD هست یه نگاهی بکنید
نوشته اصلی توسط Soodi
اگر ماژولتون 8 بیت میفرسته دیتاتون 8 بیته اون رو مستقیما ارسال کنید بدون هیچ تغییری
اگر بیشتر از 8 بیته اون رو دو قسمت میکنید
فرض کنید متغیر int 16 بیت داره بنابراین میتونید این کار رو انجام بدید:
کد:
int a=859; char b,c; b=a%256; c=a/256;
حالا متغیر های b و c رو ارسال میکنید با تابعی که هر چی اینور میفرستید اونور هم همونو بگیرید یعنی تبدیل اسکی نکنه
بعد توی گیرنده
کد:
int s; char b,c; . . . s=c; s=s+(256*c);
فکر کنم اسم تابعش باید itoa باشه میتونید توی هدر جایی که توابع LCD هست یه نگاهی بکنید
دیدگاه