چجوری در CodeVisionAVR بر روی LCD کاراکتری از روی ROM چیز بنویسم؟
این درسته؟
کد:
char *str;
str="Hello";
lcd_puts(str);
من اینو امتحان کردم اما روی LCD یک سری علامت میاره!
لطفا راهنمایی کنید.
و در مورد اشاره گر ها نیز یک توضیح کلی بدید. :wink:
ممنون :wink:
راحت اینجوری بنویس
اونم که نوشتی نباید کار کنه خط دوم اومدی یه چیزی رو که مربوط به حافظه flash هست رو ریختی تو یه اشاره گر به حافظه ram
ببین اشاره گر ها یه سری متغیر هستند که آدرس یه جایی رو تو خودشون نگه می دارن مثلا ادرس یه متغیر که توی فضای ram تعریف شده رو می تونی با & بگیری بریزی توی یه اشاره گر حالا ما این جا دو جور خافظه داریم یکی ram یکی هم Flash که مثلا آدرس 0 هرکدومشون با هم فرق می کنه بنابراین نمی تونی یه آشاره گر که به ram اشاره می کنه رو با یه اشاره گر که به flash اشاره میکنه مقدار دهی کنی
درسته، اما من میخام محتویات متغیری را که در rom قرار داره را روی LCD نمایش بدم. نه ثابت ها.
مثلا این کد بیسیک را شما به C ترجمه کنید:
کد:
Dim S as String*6
Dim I as Byte
S="Hello"
for i=0 to len(s)
lcd left(s,i)
waitms(500)
next i
خلاصه در C چجوری میشه با رشته ها کار کرد؟
اشاره گر ها چه کاربردی دارن؟ مثال بزنید.
:wink:
کد:
flash char *str = "Hello";
lcd_putsf(str);
اشره گر ها خیلی کار برد دارن یکیش توی همین استرینگ ها که داری می بینی یا آرایه ها بالا خره دونستنشون نیازه نمی تونی از زیرش در بری :wink:
نمیشه اون برنامه ای که اون بالا نوشته بودم را کامل ترجمه کنید؟ :?
گفتم متغیر، نه ثابت! 8)
که ثابته! :!:
حالا اگه محتویات این متغیر اشاره گر قرار باشه در حین اجرای برنامه تغییر بکنه چی؟ وقتی تغییرش میدیم، دیگه نمی نویسه Hello! :wink:
کد:
#include <string.h>
#include <delay.h>
کد:
char S[6] = "Hello";
char I;
for(I=0; I<strlen(S) ;I++)
{
lcd_putchar(S[I]);
delay_ms(500);
}
اگه یه اشاره گر به یه متغیر ثابت رو به خوای محتوا شو تغییر بدی error می گیره :wink:
شما فرض کنید ما میکروکنترولر را به درگاه سریال کامپیوتر متصل کردیم. حالا اگه دیتا از سوی کامپیوتر بیاد، میکروکنترولر باید این اطلاعات را بریزه داخل یک متغیر، سپس روی LCD به نمایش در بیاره. حالا اگه این اطلاعات متنی باشه، اولا چه متغیری نیازه؟
دوما چگونه این کار امکان پذیره؟
----------------------------------------------------
در WinAVR چگونه میشه دقیقا به مدت یک ثانیه در برنامه صبر کرد؟
توسط
عدد میدم تفاوتی نمیکنه!
و اینا چی؟
کد:
_delay_loop_1()
_delay_loop_2()
:wink:
باید ببینی طولش چه قدره می تونی ی آرایه از نوع char تعریف کنی با همون طولی که می خوای و با یه while می تونی همش رو بخونی البته یه پایان هم می خواد مثلا عدد 0 رو به عنوان پایان در نظر می گیری و توی while میگی تا زمانی که صفر نیست ادامه بده البته طول رو هم باید چک کنی بیشر نشه
و اما تاخیر که می بینی همینه اما محدودیت داره یعنی فکر کنم بیشتر از 200 و اینا نمی تونی بهش یدی مال همینه فرقی نمی کنه چند تاشو پشت سر هم کپی کن درست می شه
با سلام
چرا از bascom استفاده نمیکنی !! واقعا قسمت lcd بسکام عالی هستش ؟؟ :wink: