سلام دوستان دیروز یکی از دوستان درباره تغییر مقدار یک متغییر که یک رشته در ان قرار گرفته از من سوال پرسیدند و همان طور که میدانید متغییری که به منظور قرار دادن رشته یا کلمه در ان تعریف شده فقط هنگام تعریف قابل مقدار دهی میباشند
و در خطوط بعدی برنامه به طور مستقیم نمیتوان ان را تغییر داد:
و من نیز به ان علاقه مند شدم 
به خاطر همین شروع کردم به مطالعه و به نتایج زیر دست یافتم و گفتم بزارم تا استفاده کنید توضیحات هر خط در روبه روی ان قرار گرفته
از دوستان خواهشمندم برای تکمیل این تایپیک به من ملحق بشن تا در اینده بتوانیم رو رشته ها مانور بیشتری داشته باشیم کد زیر یه مثال سادس
البته بابت توابع lcd که برنامه رو شلوغ کرده یکم ببخشید چون من نمیتونم از توابع خود کدویژن استفاده کنم
یه مقاله ام در همین رابطه قرار میدم که به جزئیات کار با رشته ها پرداخته و دستورات فایل کتابخانه : string.h رو توضیح داده
http://rozup.ir/up/kulor/Documents/A...w.iseee.ir.pdf
با تشکر
کد:
char a[5]="sajad";
کد:
char a[5]="sajad"; a[5]=sara; // خطا

به خاطر همین شروع کردم به مطالعه و به نتایج زیر دست یافتم و گفتم بزارم تا استفاده کنید توضیحات هر خط در روبه روی ان قرار گرفته
از دوستان خواهشمندم برای تکمیل این تایپیک به من ملحق بشن تا در اینده بتوانیم رو رشته ها مانور بیشتری داشته باشیم کد زیر یه مثال سادس
البته بابت توابع lcd که برنامه رو شلوغ کرده یکم ببخشید چون من نمیتونم از توابع خود کدویژن استفاده کنم
یه مقاله ام در همین رابطه قرار میدم که به جزئیات کار با رشته ها پرداخته و دستورات فایل کتابخانه : string.h رو توضیح داده
http://rozup.ir/up/kulor/Documents/A...w.iseee.ir.pdf
با تشکر
کد:
#include <mega16a.h> #include <stdlib.h> #include <string.h> #include <delay.h> //*************************************************************** #define LCD_RS PORTB.0 // #define LCD_EN PORTB.1 // #define LCD_D4 PORTB.2 // #define LCD_D5 PORTB.3 // معرفی پورت های lcd #define LCD_D6 PORTB.4 // #define LCD_D7 PORTB.5 // #define LCD_STROBE ((LCD_EN = 1),(LCD_EN=0)) char buffer[32]; //**************************************************************** void lcd_write(unsigned char c); void lcd_cls(void); void lcd_puts(const char * s); // توابع lcd void lcd_putch(unsigned char c); void lcd_goto(unsigned char pos,unsigned char line); void lcd_init(void); //******************************************************************************* void strcat_cls(char *hj);//تعریف تابع پاک کردن رشته * void main(void){ // * unsigned char sajad[30]; // متغییری که رشته در ان قرار میگیرد * DDRB=0xff; // تعریف پورت lcd * lcd_init(); // * while(1){ // * strcat(sajad,"sohrab"); //قرار دادن کلمه sohrab در متغییر sajad * lcd_cls(); // پاک کردن lcd * برنامه اصلی lcd_puts(sajad); // نمایش متغییر سجاد * delay_ms(500); // * strcat_cls(sajad); //پاک کردن محتویات متغییر sajad * strcat(sajad,"sara"); //قرار دادن کلمه sara در sajad * lcd_cls(); // پاک کردن lcd * lcd_puts(sajad); // * strcat_cls(sajad); //پاک کردن محتوای متغییر sajad * delay_ms(500); // * } // * } // * //******************************************************************************* void strcat_cls(char *hj){ int hj_11; // بدنه تابع پاک کردن مقدار محتوای متغییر sajad for(hj_11=strpos(hj,'\0')-1;hj_11>=0;hj[hj_11]=0,hj_11--); hj[0]='\0'; } //************************************************************************************ void lcd_write(unsigned char c){ if(c & 0x80) LCD_D7=1; else LCD_D7=0; // بدنه توابع lcd if(c & 0x40) LCD_D6=1; else LCD_D6=0; if(c & 0x20) LCD_D5=1; else LCD_D5=0; if(c & 0x10) LCD_D4=1; else LCD_D4=0; LCD_STROBE; if(c & 0x08) LCD_D7=1; else LCD_D7=0; if(c & 0x04) LCD_D6=1; else LCD_D6=0; if(c & 0x02) LCD_D5=1; else LCD_D5=0; if(c & 0x01) LCD_D4=1; else LCD_D4=0; LCD_STROBE; delay_us(40); } void lcd_cls(void){ LCD_RS = 0; lcd_write(0x1); delay_ms(2); } void lcd_puts(const char * s){ LCD_RS = 1; while(*s) lcd_write(*s++); } void lcd_putch(unsigned char c){ LCD_RS = 1; lcd_write(c); } void lcd_goto(unsigned char pos,unsigned char line){ LCD_RS = 0; if (line==0) lcd_write(0x80 + pos); else lcd_write(0x80 + pos+ 0x40); } void lcd_init(void){ LCD_RS = 0; delay_ms(15); LCD_D4 = 1; LCD_D5 = 1; LCD_STROBE; delay_ms(5); LCD_STROBE; delay_us(100); LCD_STROBE; delay_ms(5); LCD_D4 = 0; LCD_STROBE; delay_us(40); lcd_write(0x28); lcd_write(0x0C); lcd_write(0x06); lcd_write(0x01); }
دیدگاه