آموزش برنامه نویسی C/C++میکروکنترلرهمه ی مطالب

ارتباط سریال AVR ( پایانی)

در قسمت اول آموزش ارتباط سریال AVR  بیشتر با نحوه تنظیم رجیستر ها برای راه اندازی و استفاده از USART در میکروکنترلر AVR بحث کردیم در قسمت دوم و پایانی این آموزش در مورد توابع کتابخانه ای که C در اختیار ما می گذارد تا با ارتباط سریال در میکروکنترلر ها اشنا خواهیم شد و در ادامه به چند تابع نیز برای کار با رشته اشاره خواهد شد.

آشنایی با نحوه برنامه نویسی ارتباط سریال AVR :

توابع معرفی شده در کتابخانه stdio.h قرار دارند و برای استفاده از این توابع باید دستور زیر رو در اول برنامه استفاده کنیم.

#include <stdio.h>

تابع getchar:

این تابع با بررسی پرچم RX منتظر می ماند تا یک بیت توسط USART دریافت شود و مقدار دریافت شده را باز می گرداند.

تابع putchar :

این تابع منظر می ماند تا پرچم UDRE یک شود سپس ورودی تابع را ارسال می کند.

توابع بالا برای ارسال یا دریافت یک بیت به کار می رود و برای ارسال یا دریافت یک رشته به صورت کامل به وسیله USART از دستورات putsf , puts و gets استفاده می شود.

توابع puts و putsf :

تفاوت puts با putsf در این است که تابع puts رشته ی موجود در SRAM را ارسال می کند. و putsf رشته ذخیره شده در فلش در زیر تفاوت این دو را می توان دید.

char str[]="electrolab"
puts(str);
putsf("electrolab.ir");

تابع getchar :

تا زمانی که کاراکتر LF دریافت نشود کاراکترهای دریافت شده را از USRAT گرفته و در رشته ای ذخیره می کند.

char s[10];
getchar(s,10);

تابع printf :

تفاوت دستور printf با puts یا putsf در این است که می توان با دستور printf مغییر ها و رشته ها را با هم ارسال کرد. به طور مثال:

int a=10;
printf("A is =%d",a);

تابع scanf :

می تواند رشته یا متغییر را از ورودی با یک فرمت مشخص دریافت کند. مثلا در مثال زیر مقدار مورد نظر را به صورت int دریافت کرده و در متغییر a ذخیره می کند.

int a;
scanf("%d",a);

در ادامه ی اموزش توابع مهمی که برای کار با با رشته ها لازم است را با توضیح مختصر شرح می دهیم. توابع شرح داده شده همگی در کتابخانه ی string.h قرار دارد و برای استفاده از این توابع این فایل به برنامه اضافه شود.

#include <string.h>

1- تابع strcmp:

تابع strcmp کاراکترهای دو رشته را باهم مقایسه کرده و یک عدد صحیح به عنوان نتیجه ی عمل برگردانده می شود.

int a;
char str1[];
char str2[];
a=strcmp(str1,str2);
  •  اگر str1<str2 باشدمقدار برگردانده شده همان a در مثال بالا کوچکتر از صفر خواهد بود.
  • اگر str1=str2 باشد مقدار برگردانده شده برابر صفر خواهد بود.
  • و اگر str1>str2 باشد مقدار برگردانده شده بزرگتر از صفر خواهد بود.

از این دستور برای راه اندازی ماژول بلوتوث استفاده شده بود.

2- تابع strncpy:

تابع strncpy تعداد مشخصی از کاراکتر های یک رشته را در رشته ی دیگر کپی می کند.

strncpy(str1,str2,n);

str1 رشته ای که کاراکترهای str2 در آن کپی می شود. و n تعداد کاراکترهایی که از رشته ی str2 به str1 کپی شود.

3- تابع strlwr:

رشته ای را به عنوان ورودی پذیرفته و کلیه ی حروف بزرگ آن را به کوچک تبدیل می کند.

char s[]="HELLO";
strlwr(s);

4- تابع struper :

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

struper();

5- تابع strrev :

تابع strrev کاراکتر های یک رشته را معکوس می کند یعنی کارکتر ابتدا را به انتها ی آن منقل می کند و این عمل را برای کلیه ی کاراکتر ها انجام می دهد.

strrev(رشته ی مورد نظر):

 

 

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

نوشته های مشابه

4 دیدگاه

  1. واقعا از شما تشکر می کنم از آموزش های پر بار تون
    من دیپلم الکترونیک دارم و در حال آماده شدن برای المپیاد الکترونیک ملی مهارت و کنکور مهندسی پزشکی
    مطالبتون خیلی مفید بود
    من با میکروکنترلر کار نکرده بودم و با مطالب شما ان شاء الله تجربه های خوبی کسب کنم
    باز هم سپاس

    1. ممنون خوشحالم که از مطالب استفاده کردید. باز اگه سوال یا مشکلی پیش اومد با مطرح کردن در انجمن حتما به جوابتون می رسید پس به انجمن سایت هم سر بزنید. آدرس انجمن : electrolab.org

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.