دوستان ممنون از کمکاتون کسی مشکل منو نمیدونه کجاست؟ مال منه یا بیسکام؟
دوست خوبم ... مشکل از شماست !
اگرچه بیسکام هم دردسرهایی داره برای خودش . اما توی این مورد ، شما مقصرید که Error دریافت میکنید .
وقتی شما در برنامه از تابع "$lib "mcsbyte.lbx" استفاده کنید ،آ مجاز به تعیین متغیری بیش از Byte نیستید . چون اصلاٌ کار این تابع ، کوچک کردن و بهینه سازی عملیات تبدیل متغیرهای بایتی در برنامه بمنظور کاهش بار محاسباتی روی CPU هست . به همین خاطر فقط متغیرهایی از جنس Byte رو قبول میکنه .
اگر قصد استفاده از متغیری بالاتر از Byte دارید ، این تابع رو حذف کنید ...
Config Adc = Single , Prescaler = Auto ', Reference = Internal_2.56
Dim Weekday As Byte
Dim S As Byte , A As Byte , B As Byte , Dreg As Byte , Da As Byte , Treg As Byte , Mh As Byte
Dim Datereg As Eram Byte , Tempreg As Eram Byte , Timeh As Eram Byte , Timel As Eram Byte , Zangreg As Eram Byte
Dim Ad As Word , W As Word , Jump As Word , R As Word , All As Eram Byte , Alarmreg As Eram Byte
Dim B1 As Byte , B2 As Byte , Beepreg As Eram Byte , Bip As Byte , Ram As Eram Byte , Al As Bit
Dim C As Byte , Alarmreset As Byte , Dong As Bit , Day As Byte , Hh As Byte , Hl As Byte
Dim S1 As Eram Byte , S2 As Byte , Zang As Byte , D As Byte , Alm As Byte , L As Byte , Remotecode(35) As Word
Dim Jump1 As Byte , H As Byte , Mdatereg As Eram Byte , Sefr As Byte , H1 As Word , Ml As Byte
Dim Tanzimsaat As Eram Byte , Tanzimsaat1 As Eram Byte , T As Byte , T1 As Byte
Dim Myear As Integer 'input Miladi(gregorian) Year
Dim Mday As Integer 'input Miladi Day
Dim Mmonth As Integer 'input Miladi Month
Dim Mdayofyear As Integer
Dim Myear_ As Integer
Dim Jday As Integer 'output Jalali(shamsi) Day
Dim Jmonth As Integer 'output Jalali Month
Dim Jyear As Integer 'output Jalali Year
Dim Jdayofyear As Integer
Dim Gnumdayofyear As Integer
Dim Isleapyear As Bit
Dim Isleapyearp As Bit
Dim Iloop As Byte
Dim Temp1 As Integer
Dim Temp2 As Integer
Dim Temp3 As Integer
Dim Temp4 As Integer
Dim Jmonth_a(12) As Byte
Dim Mmonth_a(12) As Byte
این برنامه ساعتمه با این اوصاف تمام ساعتام حواسشون نیس نباید کار کنن و باید ارور بده برنامهword که هیچ integer هم دارم
نتیجه دوم اینکه ساعت با نمایش دما نمیشه ساخت چون هم 1307 داره و هم lm35 که بایدadc رو بخونی و توی متغیر ورد بریزی حتی تاریخ شمسیم نمیشه رو ش گذاشت اونم تو تبدیلاش بیشتر از بایت داره
ابتدا خونسردی خودتونو حفظ کنید و اینقدر زود نتیجه گیری نکنید !!! الکترونیکی ها معمولا صبر و حوصله شون خیلی بیشتر از بقیه افراد هست :nerd:
مطمئنم که شما از تجربه و مهارت کافی در برنامه نویسی برخوردارید ( لااقل خیلی بیشتر از بنده ) و توضیحاتی که عرض کردم خدای ناکرده با تصور آماتور بودن شما نبود ...
ببینید ... کار این کتابخونه ، بهینه سازی عملیات تبدیلی هست . حالا یعنی چه و کدوم تبدیلات ؟
در هر برنامه ای ، مطمئناً یکسری محاسبات برای تبدیل متغیرها به یکدیگر برای اهداف خاص انجام میشه . خواه مستقیماً توسط برنامه نویس و یا توسط توابع آماده
مثلا تبدیل رشته ها به مقادیر عددی یا فرض کنید تبدیل خواندن از یک ورودی و تبدیل اونها به کاراکترهای متنی و از این قبیل تبدیلات ...
در بیسکام بصورت پیش فرض ، برای همه این تبدیلات ، حداکثر فضا و محاسبات لازم از حافظه و CPU برای انجام امور محاسباتی در نظر گرفته میشه ... حتی اگر متغیرهای هدف ، از جنس Bit باشند .
از اونجایی که معمولا در بیشتر مواقع ، ما با مقادیر Byte در محاسبات تبدیلی روبرو هستیم ( نه همیشه بلکه بیشتر اوقات ) لذا بیسکام اومده با استفاده از این کتابخونه ، کاری کرده که چنانچه ورودی های برنامه نویس از جنس Byte بود ، فشار کمتری روی CPU وارد بشه و به اصطلاح بهینه سازی صورت بگیره .
یکی از توابعی که بیشترین بار محاسبات تبدیلی رو بر CPUآ وارد میکنه ، توابع نمایش روی LCD هست . دستور LCD در بیسکام و یا نظیر اون sprintf در کدویژن ...
شما در نمونه برنامه صفحه اول تاپیک از دستور LCD برای متغیر A استفاده کردید . اما در عین حال از کامپایلر خواستید که از کتابخونه بهینه سازی کدها برای این کار استفاده کنه و این ناممکن هست ...
[glow=red,2,300]در همون برنامه اگر از تابع LCD صرفنظر کنید میبینید که Error هم نخواهید گرفت .[/glow]
ممنون از توضیحتون من یه مدار دارم که در حالت عادی ساعت و تاریخ رو داره و بعدشم باید یک متغبر ورد رو روی ال سی دی نمایش بده فرض کنید دما فرض کنبد عدد23564حالا این کار غیر ممکنیه؟من باید چکار کنم :cry2:
ممنون از توضیحتون من یه مدار دارم که در حالت عادی ساعت و تاریخ رو داره و بعدشم باید یک متغبر ورد رو روی ال سی دی نمایش بده فرض کنید دما فرض کنبد عدد23564حالا این کار غیر ممکنیه؟من باید چکار کنم :cry2:
نوشته اصلی توسط r-el
من نمیدونم چطوری بگم اما میدونم کار غیر ممکنی برای avr نباید باشه ساعت تاریخ دما ساعت و تاریخ کتابخونه 1307میخواد +دما=متغیر word و نمایش روی ال سی دی
خوب این که خیلی ساده ست ... شما فقط بیخیال کتابخونه mscbyte.lbx بشو تا همه چیز بصورت عادی پیش بره ... همین
بله خیلی سادس ولی میخوام بدونم در هیییییچ پروژه ای همچین چیزی استفاده نشده ؟یعنی تا بع امروز کسی نتونسته ساعت و تاریخ و دما رو باهم نمایش بده؟یا ساعتو داشته باشه و یه عدد4 رقمی رو بتونه نمایش یده؟هنور تکنولوژی و علم تاان حد پیشرفت نکرده؟من الان میخوام حالت عادی ساعتو نمایش بدم و وقتی یه پالس اومد یه عدد4رقمیو نمایش بدم دو ال سی دی این یه کار غیرممکنه؟
بله خیلی سادس ولی میخوام بدونم در هیییییچ پروژه ای همچین چیزی استفاده نشده ؟یعنی تا بع امروز کسی نتونسته ساعت و تاریخ و دما رو باهم نمایش بده؟یا ساعتو داشته باشه و یه عدد4 رقمی رو بتونه نمایش یده؟هنور تکنولوژی و علم تاان حد پیشرفت نکرده؟من الان میخوام حالت عادی ساعتو نمایش بدم و وقتی یه پالس اومد یه عدد4رقمیو نمایش بدم دو ال سی دی این یه کار غیرممکنه؟
چرا نشه ؟ oo: واسه چی غیر ممکن !؟ oo: من متوجه منظورت نمیشم ! :eek:
عرض کردم که دوست عزیز ... شما فقط از کتابخونه mcsbyte صرفنظر کن ... به همین سادگی . اینجوری دیگه خطایی دریافت نمیکنی و هرچی که خواستی روی LCD نمایش میدی ...
اینا که ارتباطی به علم و تکنولوژی و این قضایا نداره !!! oo: oo: oo:
دیدگاه