ممنون اما باز جواب نداد ... باز هم اشكال مي گيره !!
------------------
يه مشكل تازه ...
براي دستور :
کد:
target = FORMAT(source, "mask")
به help مراجعه كردم كه بهتر درك اش كنم . ميان توضيحات يه مثال زده بود و خواستم همون رو اجرا كنم و برنامه اش رو به شكل زير نوشتم ...
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
Dim L As Long , X As Long , Res As Long , S1 As String * 10
L = 100
X = 2
Res = L / X
S1 = Str(res)
Print Format(s1 , "000.00")
End
از اين اشكال نمي گيره ، اما در پروتوس عمل نمي كنه و چيزي در LCD نوشته نمي شه و در قسمت massege ها يه پشت اخطار مي ده !!
بعد ، كار print چي هست ؟؟
عبارت S1 = Str(res) چه معني يي مي ده و چه كاري رو انجام مي ده ؟؟
در نهايت بايد كدوم متغيير روي LCD به نمايش در بياد ؟!!!!!
اگر خواستيد ، فايل پروتوس اش رو بذارم ...
ممنون از توجه اتون.
print برای ارسال داده ها به پورت سریال است(به جای print از lcd استفاده کن)
str مقدار عدد متغییر res توی s1 میرزه
در lcd مقدار متغییر res که درون s1 ریخته شده به نمایش در میاد
ممنون . خيلي خوب بود . جواب داد .
اما اون قضيه ي defbyte x هنوز حل نشده !!!
فقط يك بار قبلا ازش جواب گرفتم كه يه آرايه به صورت زير براش تعريف كردم.
البته جالب بود كه وقتي از ( 10 )a استفاده مي كردم جواب نمي داد و ايراد مي گرفت !!
.............................................
يه موضوع ديگه اينه كه هر وقت در پروتوس كريستال خارجي مي ذارم احساس مي كنم ازش استفاده اي نمي شه ( يعني واقعا نمي شه !! ) و فركانس در شبيه سازي با osilator داخلي فقط تغيير مي كنه !! ( CKSEL FUSE )
براي استفاده از كريستال خارجي بايد در برنامه دستوري اضاف كرد ؟؟
ممنون.
يا علي.
ترجمه :
همينطور شما مي تونيد از defint,...,....,.... استفاده كنيد.
براي مثال ، defint c به كامپايلر مي گه كه تمام متغيير هايي كه بعد ندارند و با كاراكتر c شروع مي شوند از نوع integer هستند.
..................................
يعني وقتي [] جلوي كاراكتر نباشه بدون بعد هست ، خوب . اما چه كمكي به مشكل من مي كنه ؟!
ممنون.
میگه این به کامپایلر میگه تمام متغیر هایی که تعریف نشدن و با حرف C شروع میشن رو integer در نظر بگیره
چرا لقمه رو دور سرت میچرخونی
از همون Dim ساده استفاده کن
نقل قول: میگه این به کامپایلر میگه تمام متغیر هایی که تعریف نشدن و با حرف C شروع میشن رو integer در نظر بگیره
ا ... به اين قشنگي ترجمش كردم ، چرا دستش زدي :دي
تعريف نشده نه ... هموني كه خودم گفتم درسته .
ممنونم . درست شد .
عجيبه ها ... حامد خان گفت 2 تايي تعريف كن ، اما اون موقع جواب نداد !!
اما حالا جواب مي ده !! 100% از گيج بازيه خودمه :دي . اما باعث شد بهتر بفهمم اش .
نقل قول: چرا لقمه رو دور سرت میچرخونی
از همون Dim ساده استفاده کن
آخه تا لقمه رو دور سر نچرخوني ، نمي فهمي كه dim يه چيز ه ديگه ست !! :دي
حقيقتش عادت دارم كه اگر چيزي رو نفهميدم ، با تمام وجود سعي كنم كه بفهمم اش .
---------------------------------------
حالا اين يكي ديگه چشه !!
خيلي بهش ور رفتم ، اما پيغام خطا ساز مخالف ميزنه !!
در خط 15 و 22
کد:
$regfile = "m161def.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd4 , Rs = Portd.5
Dim S As String * 10 , A As Byte , I As Single
Cls
I = 10
A = 3
I = I / A
S = Str(i)
Locate 1 , 1
Lcd S
Wait 1
Locate 2 , 1
Lcd Fusing(s , "#.##")
Wait 1
Locate 1 , 2
Lcd S
Wait 2
Cls
Locate 1 , 1
S = Fusing(s , "#.##")
Lcd S
End
توی خط 15 رو نگاه کن ببین مشکل چیه
ظاهرا Lcd با fusing مشکل داره
توی برنامه کرسر رو بیار روی Lcd و F1 رو بزن یا توی هلپ دستور LCD رو ببین چی گفته
گفته ثابت تعریف شده یا متغیر مقدار دهی شده رو نمایش میده
و شما اینجا اول باید نتیجهfusing رو میریختی توی یه متغیر رشته و بعد نمایش میدادی
خط 22 رو هم همین کارو بکنی به این میرسی:
نتیجه عمل fusing که روی متغیر منبع که اینجا S هست انجام میشه ، توی متغیر هدف باید ریخته شه و اون هر رشته ای میتونه باشه جر متغیر منبع پ
شما اینجا S رو fusing کردی و ریختی تو خودش
پس اینم دو اشکال برنامت
ممنون توضيحات خوبي بود ...
حالا برنامه رو به شكل زير نوشتم ، اما حالا از خط آخر ايراد ميگيره و كلي هم اختار مي گيره !!
چيكارش كنم ؟!! اشكال از كجاست ؟؟!!
کد:
$regfile = "m161def.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd4 , Rs = Portd.5
Dim S As String * 10 , A As Byte , I As Single
Cls
I = 10
A = 3
I = I / A
Locate 1 , 1
S = Str(i)
Lcd s
Wait 1
S = Fusing(i , "#.##")
Locate 2 , 1
Lcd S
End
ممنون
يا علي.
ببین برای تعریف پایه های ال سی دی برای پایه E چجوری تعریف کردی
درستش اینه:
یه دات جا انداختی
بازم سلام.
آقا رضا ايول ... ، چشماي تيزي داري ... ( فكر نمي كردم يه همچين مشكلي ، همچين خطايي بگيره ... ! )
.....................................
اگه ممكنه يكي از دوستان لطف كنن و در مورد دستور زير يه توضيح مختصر و مفيدي بدن :
بيشتر منظورم varexist هست...
ممنون.