رفتن به مطلب
ایران چیپ
amir_yazdi

آموزش pic ccs

پست های پیشنهاد شده

سلام

 

دستورات UART در CCS

 

برای استفاده از UART در CCS در ابتدا باید تنظیمات #USE RS232 را فراخوانی کنیم

 

در مثال زیر پین های سخت افزاری سریال و نرخ داده (سرعت انتقال) 9600 تنظیم شده

#use rs232(UART1,baud=9600)

 

در مثال زیر از پین B6 و B7 برای UART بصورت نرم افزاری استفاده شده و با استفاده از دستور INVERT میتوان بصورت مستقیم و بدون نیاز به MAX232 و مبدل های دیگر مستقیم به کامپیوتر متصل کرد

 

#use rs232(baud=9600, xmit=PIN_B6,rcv=PIN_B7,INVERT)

 

دستور STREAM به ما اجازه میدهد که بیش از یک پورت سریال تعریف کنیم

 

#use rs232(baud=9600, xmit=PIN_B6,rcv=PIN_B7,INVERT,STREAM=RS1)


#use rs232(baud=9600, xmit=PIN_B5,rcv=PIN_B4,STREAM=RS2)


#use rs232(baud=115200, xmit=PIN_B3,STREAM=RS3)

 

راسال کاراکتر با دستور putc انجام میشود

 

putc("A");

 

در صورت داشتن چند پورت UART و استفاده از STREAM دستور زیر را استفاده میکنیم

 

fputc ("A", stream);

 

دریافت کاراکتر با دستور getc انجام میشود

 

value = getc ();

 

در صورت داشتن چند پورت UART و استفاده از STREAM دستور زیر را استفاده میکنیم

 

value = fgetc (stream);

 

راسال رشته با دستور puts انجام میشود

 

puts ( "iranchip");

 

در صورت داشتن چند پورت UART و استفاده از STREAM دستور زیر را استفاده میکنیم

 

fputs ( "iranchip", stream);

 

دریافت رشته با دستور gets انجام میشود

 

value = gets ();

 

در صورت داشتن چند پورت UART و استفاده از STREAM دستور زیر را استفاده میکنیم

 

value = fgets (stream);

 

دستور kbhit در صورتی که داده ایی بر روی پایه دریافت پورت UART دریافت شود مقدار یک (TRUE) را برمیگرداند در غیر اینصورت مقدار صفر(FALSE)

 


value = kbhit();

 

در صورت داشتن چند پورت UART و استفاده از STREAM دستور زیر را استفاده میکنیم

 

value = kbhit (stream);

 

دستور printf برای ارسال انواع داده اعم از کاراکتر , رشته , اعشاری , اعداد صحیح و هگزال و ..... بکار میرود

 


printf("iranchip %c %s %u %lu %X %f \n\r",A,B,C,D,E,F);

 

نکته:

 

c% متغیر را بصورت کاراکتر نمایش میدهد

 

s% متغیر را بصورت رشته نمایش میدهد

 

u% متغیر را بصورت عدد صحیح 8 بیتی نا منفی نمایش میدهد

 

d% متغیر را بصورت عدد صحیح 8 بیتی نمایش میدهد

 

lu% متغیر را بصورت عدد صحیح +8 بیتی نا منفی نمایش میدهد

 

ld% متغیر را بصورت عدد صحیح +8 بیتی نمایش میدهد

 

x% متغیر را بصورت هگزال 8 بیتی نمایش میدهد

 

lx% متغیر را بصورت هگزال +8 بیتی نمایش میدهد

 

f% متغیر را بصورت عدد اعشاری نمایش میدهد

 

یاحق

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

 

دستورات I2C در CCS و نحوه استفاده از آن

 

برای تنظیم I2C از دستور زیر استفاده میکنیم

 

در مثال پایین

 

MASTER حالت I2C

 

FAST سرعت انتقال داده

 

SCL پایه همزمان سازی

 

SDA پایه انتقال داده


#use i2c(Master,Fast, scl=PIN_C3, sda=PIN_C4)

 

دستور i2c_start در زمان شروع انتقال داده START با نماد ( S ) و یا در زمان تغییر حالت RESTART با نماد ( R ) بکار میرود

 

[/color]i2c_start();[color=#000000]

 

دستور i2c_stop در پایان و بعد از اتمام دستورات I2C بکار میرود و نماد آن ( P ) می باشد

 

i2c_stop();

دستور i2c_write برای ارسال آدرس و داده بکار میرود

 

i2c_write (data);

 

دستور i2c_read برای در یافت داده بکار میرود

 

data = i2c_read ();

نکته : دستور i2c_read در داخل پرانتز مقدار صفر (NACK) و 1 (ACK) را میگیرد که در حالت عادی مقدار آن یک (ACK) میباشد و زمانی که شما آخرین بایت را میخوانید باید مقدار آن را صفر(NACK) کنید

 

data1 = i2c_read (1);


data2 = i2c_read (0);

 

در مثال زیر بر روی حافظه 24AA512 از نوع EEPROM با ظرفیت 512K مینویسیم

 

مقدار 0XA0 آدرس حافظه

 

ADDRH و ADDRL آدرس موقعیتی از حافظه که میخواهیم بر روی آن بنویسیم ( این آی سی به دلیل 16 بیتی بودن آدرس ها باید از 2 آدرس HIGH و LOW استفاده شود)

 

DATA مقداری که میخواهیم بر روی حافظه ذخیره شود

 

i2c_start();


i2c_write(0xA0);


i2c_write(ADDRH);


i2c_write(ADDRL);


i2c_write(DATA);


i2c_stop();

 

در مثال زیر از روی حافظه 24AA512 از نوع EEPROM با ظرفیت 512K می خوانیم

 

START دوم برای تغییر حالت به خواندن میباشد (RESTART) و بیت R/W در آدرس نیز همانطور که در دیتاشیت ذکر شده تغییر کرده برای نوشتن (0XA0) و برای خواندن (0XA1)

 


i2c_start();


i2c_write(0xA0);


i2c_write(ADDRH);


i2c_write(ADDRL);


i2c_start();


i2c_write(0xA1);


DATA = i2c_read (0);


i2c_stop();

 

نکته : پایه های I2C باید بوسیله مقاومت PULL UP شوند

 

یاحق

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...