امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ریشه معادله در avr
نویسنده پیام
farahnaz1900 آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 2
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 1
( 3 تشکر در 3 ارسال )
ارسال: #1
ریشه معادله در avr
من یه برنامه با بسکام میخوام بنویسم که معادله درجه 1 و 2 و 3 رو حل کنه ولی بسکام همش ایراد میگیره.مشکل کد من از کجاست؟

کد:
$regfile = "m8def.dat"
$crystal = 8000000


Declare Sub Daraje2(a As Integer , B As Integer , C As Integer)



Sub Daraje2(a As Integer , B As Integer , C As Integer)

delta = b ^ 2 - (4 * a * c)
If delta < 0 Then
Lcd "JAVAB NADARAD"
Exit Sub
End If
If (delta = 0) Then
x = -b \ (2 * a)
Lcd(x)
Exit Sub
End If
If delta > 0 Then
h = (-b + (Sqr(delta))) \ (2 * a)
m = (-b - (Sqr(delta))) \ (2 * a)
lcd (h)
Lcd(m)
End If


End Sub

اینو از روی یه کد که واسه ویژوال بیسیک بود تبدیل کردم ولی پر از خطا هست.
ممنون میشم یه نگاهی به کد بندازید
۰۴-بهمن-۱۳۸۷, ۰۳:۴۶:۲۹
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #2
RE: ریشه معادله در avr
مهندس متغير هاتو قبل استفاده بايد تعريف كني .

Lcd(m) چي كار ميكنه ؟ تا حالا چنين دستوري تو بسكام ديده بودم .

بعد از Then بايد دو نقطه بذاري ، چون چند تا دستوره و End If هم گذاشتي !

اين كار رو هم نمي شه تو بسكام كرد !
h = (-b + (Sqr(delta))) \ (2 * a)
تك تك عمليات رو انجام بده !
۰۴-بهمن-۱۳۸۷, ۰۵:۳۳:۳۱
ارسال‌ها
پاسخ
farahnaz1900 آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 2
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 1
( 3 تشکر در 3 ارسال )
ارسال: #3
RE: ریشه معادله در avr
خیلی از اخطارها از بین رفتند.خیلی متشکرم.
ولی باز هم مشکل داره.

کد:
$regfile = "m8def.dat"
$crystal = 8000000


Declare Sub Daraje2(a As Integer , B As Integer , C As Integer)



Sub Daraje2(a As Integer , B As Integer , C As Integer)

Dim Delta As Single
Dim Delta2 As Single
Dim Delta3 As Single

Dim X As Single
Dim X2 As Single

Dim A As Integer
Dim B As Integer
Dim C As Integer

Dim H As Single
Dim H2 As Single
Dim H3 As Single
Dim H4 As Single

Dim M As Single
Dim M2 As Single
Dim M3 As Single
Dim M4 As Single



Delta = B ^ 2
Delta2 = 4 * A
Delta3 = Delta2 * C


If Delta3 < 0 Then:
Lcd "JAVAB NADARAD"
Exit Sub
End If

If Delta = 0 Then:
X2=2 * a
X = -b \ X2
Lcd X
Exit Sub



If Delta > 0 Then:
H2 = Sqr(delta)
H3 = -b + H2
H4 = 2 * A
H = H3 \ H4


M2 = Sqr(delta)
M3 = -b - M2
M4 = 2 * A
M = M3 \ M4

Lcd H
Lcd M
End If


End Sub



End

برای X = -b \ X2 اخطار variable not dimensioned میده.این اخطار واسه چی هست؟
دو تا اخطار دیگه هم میگیره IF THEN expected و END IF expected اینا واسه چی هستند؟
۰۴-بهمن-۱۳۸۷, ۱۰:۴۲:۳۱
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #4
RE: ریشه معادله در avr
اين برنامه رو يه تست كنيد :

کد php:
$regfile "m8def.dat" $crystal 8000000


Declare Sub Daraje2(As Integer As Integer As Integer)


Sub Daraje2(As Integer As Integer As Integer)
Dim Delta As Single Delta2 As Single Delta3 As Single
Dim X 
As Single X2 As Single Ant As Single
Dim A 
As Integer As Integer As Integer
Dim H 
As Single H2 As Single H3 As Single H4 As Single
Dim M 
As Single M2 As Single M3 As Single M4 As Single


Delta 
Delta2 Delta3 Delta2 C


If Delta3 0 Then:
      
Lcd "JAVAB NADARAD"
      
Exit Sub

Elseif Delta 0 Then:
      
Ant Ant Ant Ant X2
      Home 
Lcd X "          "
      
Exit Sub

Elseif Delta 0 Then:
      
H2 Sqr(delta)
      
Ant Ant Ant H3 Ant H2
      H4 
H3 H4 M2 Sqr(delta)
      
M3 Ant M2 M4 M3 M4
      Home 
Lcd H "   " "     "
      
Exit Sub

End 
If

End Sub

End 
ايرادهاشو نگاه كنيد مي فهميد .

جالبه كه برنامه اي به اين كوچولويي حدود 3 كيلو جا مي گيره . 37 درصد از ATmega 8
۰۴-بهمن-۱۳۸۷, ۱۵:۵۵:۵۶
ارسال‌ها
پاسخ
farahnaz1900 آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 2
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 1
( 3 تشکر در 3 ارسال )
ارسال: #5
RE: ریشه معادله در avr
اقا خیلی ممنون حالا فهمیدم و مشکلم رو حل کردید.تو بسکام نمیشه عملیات رو پشت هم نوشت و باید جدا جدا انجام داد که البته این خیلی بده و تو codevision این مشکل رو نداشت.خیلی هم گیج کننده میشه و احتمال اینکه اشتباه کنیم تو محاسبات زیاد میشه.

حالا یه سوال دیگه؟
آیا میشه کاری کرد که هر بار که یکی از کلید کیبرد 3*4 رو میزنیم فقط یک عدد رو بگیره و مثل ماشین حساب دقیق عدد ها رو روی lcd و یک متغیر ذخیره کنه؟

این کدی هست که من نوشتم:

کد php:
$regfile "m8def.dat"
$crystal 8000000

Config Lcdpin 
Pin Db4 Portd.4 Db5 Portd.5 Db6 Portd.6 Db7 Portd.7 Portd.0 Rs Portd.1
Config Kbd 
Portb Debounce 250

Dim B 
As Byte
Main
:

Dim A As Byte
Getkbd()

If 
15 Then
Goto Main
End 
If

If 
0 Then End If
If 
1 Then End If
If 
2 Then End If
'If A = 3 Then : B = 10 : End If     ' char is *
If 
4 Then End If
If 
5 Then End If
If 
6 Then End If
If 
7 Then End If
If 
8 Then End If
If 
9 Then End If
If 
10 Then End If
'If A = 11 Then : B = 12 : End If    'char is #

Home
Lcd b
jmp main

End 
۰۴-بهمن-۱۳۸۷, ۱۶:۵۰:۲۲
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #6
RE: ریشه معادله در avr
farahnaz1900 نوشته است:آیا میشه کاری کرد که هر بار که یکی از کلید کیبرد 3*4 رو میزنیم فقط یک عدد رو بگیره و مثل ماشین حساب دقیق عدد ها رو روی lcd و یک متغیر ذخیره کنه؟
منظورتون چيه ؟
الان برنامه خودتون هم همين كارو مي كنه .

البته بهتره اگه يه عدد طولاني هستش ؛ عدد اول رو بگيري و در ه ضرب و كني و بعلاوه عدد دوم كني و دوباره حاصل رو در ده ضرب كني و بعلاوه عدد سوم و ..

اين برنامه رو يه تست كن .

کد php:
$regfile "m8def.dat"
$crystal 8000000

Config Lcdpin 
Pin Db4 Portd.4 Db5 Portd.5 Db6 Portd.6 Db7 Portd.7 Portd.0 Rs Portd.1
Config Lcd 
16 Cursor Off Cls

Config Kbd 
Portb Debounce 200

Dim B 
As Byte As Byte As Byte As Long

0

Do

   Do
         
Getkbd()
         If 
<> 16 Then Exit Do
   
Loop

   
If <> Or <> 11 Then B Lookup(Number)

   
10 Home

   
If 10 Then Lcd "        " L
   
Elseif 100 Then Lcd "       " L
   
Elseif 1000 Then Lcd "      " L
   
Elseif 10000 Then Lcd "     " L
   
Elseif 100000 Then Lcd "    " L
   
Elseif 1000000 Then Lcd "   " L
   
Elseif 10000000 Then Lcd "  " L
   
Elseif 100000000 Then Lcd " " L
   
Elseif 1000000000 Then Lcd L 0
   End 
If

Loop

Number
:
Data 1 10 12 

عدد مورد نظر تو متغير L ذخيره مي شه و عين ماشين حساب از سمت راست نشون داده مي شه .
۰۴-بهمن-۱۳۸۷, ۲۰:۲۵:۵۶
ارسال‌ها
پاسخ
farahnaz1900 آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 2
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 1
( 3 تشکر در 3 ارسال )
ارسال: #7
RE: ریشه معادله در avr
نه منظورم اینه که تا دستمون رو مثلا روی 1 گذاشتیم بیست سی تا 1 تایپ نکنه.
Debounce رو هرچی زیاد میکنم بازم نمیشه!
تو پروتوس جواب میده ولی توی عمل خیلی بدجوره چند تا مقاومت 220 اهم هم با هر کدوم از پایه ها زمین کردم لرزشی که روی lcd داشت درست شد ولی باز هم با هر بار فشردن یک کلید تعداد زیادی از آن رو تایپ میکنه.
(آخرین ویرایش در این ارسال: ۰۴-بهمن-۱۳۸۷, ۲۱:۴۴:۰۷، توسط farahnaz1900.)
۰۴-بهمن-۱۳۸۷, ۲۱:۳۹:۵۷
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #8
RE: ریشه معادله در avr
خوب عدد اول رو بگيريد .

بعد هر موقع عدد 16 از كيبرد دريافت شد ( يعني هيچ دكمه اي فشار داده نشد ) اون موقع عدد دوم رو بگيرين .

همين
۰۵-بهمن-۱۳۸۷, ۰۱:۳۶:۳۵
ارسال‌ها
پاسخ
تشکر شده توسط : 1nafar
1nafar غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,195
موضوع‌ها: 91
تاریخ عضویت: فروردین ۱۳۸۷

تشکرها : 1577
( 4273 تشکر در 953 ارسال )
ارسال: #9
RE: ریشه معادله در avr
سلام
میتونید بین گرفتن هر عدد یه تاخیر زمانی 200 میکلی ثانیه ای بزارید.
یه نمونه کد برای گرفتن عدد از کیبرد:
کد:
dim a as byit ,b as word
q:
a=getkbd()
if a>15 then goto q
end if
if b = 0 then
b=a
else
b=b*10
b=b+a
end if
lcd b
waitms 200
goto q
۱۰-بهمن-۱۳۸۷, ۱۱:۴۶:۰۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
farahnaz1900 آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 2
تاریخ عضویت: بهمن ۱۳۸۷

تشکرها : 1
( 3 تشکر در 3 ارسال )
ارسال: #10
RE: ریشه معادله در avr
مرسی.
تاخیرها تو بسکام باعث بروز یه سری مشکل میشه.
من تونستم با Microbasic این مشکل رو با Delay خوده کیبرد حل کنم.
۱۰-بهمن-۱۳۸۷, ۱۸:۳۷:۲۷
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
1nafar غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,195
موضوع‌ها: 91
تاریخ عضویت: فروردین ۱۳۸۷

تشکرها : 1577
( 4273 تشکر در 953 ارسال )
ارسال: #11
RE: ریشه معادله در avr
سلام
میشه مشکلات رو بگید؟
۱۲-بهمن-۱۳۸۷, ۱۴:۴۲:۳۶
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  کمک دربرنامه حل معادله تک مجهولی kendab 5 4,056 ۲۳-شهریور-۱۳۹۱, ۰۱:۱۱:۱۱
آخرین ارسال: abbasalifix

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS