۱۱-تير-۱۳۹۲, ۱۴:۴۱:۲۷
سلام دوستان
من یک پروژه درایو موتور توی بسکام دارم که باهاش سرعت موتور کم و زیاد می کنم می خواهم چپگرد و راست گرد موتورهم به برنامه اضافه کنم(به وسیله فشردن کلیدی متصل به PB.1 ). باید چه کار کنم؟ من به زبان بیسک مسلط نیستم. کسی می تونه کمک کنه؟
اصل برنامه هم اینه
من یک پروژه درایو موتور توی بسکام دارم که باهاش سرعت موتور کم و زیاد می کنم می خواهم چپگرد و راست گرد موتورهم به برنامه اضافه کنم(به وسیله فشردن کلیدی متصل به PB.1 ). باید چه کار کنم؟ من به زبان بیسک مسلط نیستم. کسی می تونه کمک کنه؟
اصل برنامه هم اینه
کد:
$crystal = 8000000
Config Portd = Output
Config Porta = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7,_
E = Portc.3 , Rs = Portc.2
Muxled Alias Porta.0
Minled Alias Porta.1
En1 Alias Portd.6
Aled Alias Porta.2
Config Timer1 = Pwm , Pwm = 10 , Prescale = 8 , Compare A Pwm = Clear Down,_
Compare B Pwm = Clear Down
Config Timer0 = Counter , Edge = Rising
Config Timer2 = Timer , Prescale = 1024
Enable Counter0
Enable Interrupts
Enable Timer0
Enable Timer2
Cls
Home
"Lcd " dc motor speed
Home Lower
"Lcd " controling
Wait 2
On Ovf0 Sh
On Ovf2 Edd
Dim A As Word , B As Byte , C As Word , I As Long
'//////////////////////
Enable Timer1
A = 500
Start Timer1
En1 = 1
B = 0
Start Timer2
Main:
Counter0 = 0
Start Timer2
Pwm1a = A
Pwm1b = 0 'Used for 2 PWM channels
Do
:Main1
If Pinb.4 = 0 Then Goto Afzayesh
If Pinb.3 = 0 Then Goto Kahesh
If Pinb.2 = 0 Then Goto Change
Loop
'////////////////////////
:Afzayesh
If A = 50 Then A = 0
A = A + 100
If A >= 1000 Then
A = 1000
Muxled = 1
Home
Cls
"Lcd " muximum range
Wait 1
End If
If Minled = 1 Then Minled = 0
Aled = 1
Waitms 500
Aled = 0
B = 0
Goto Main
'///////////////////////
:Kahesh
If A > 100 Then
A = A - 100
If Muxled = 1 Then Muxled = 0
Aled = 1
Waitms 500
Aled = 0
B = 0
Goto Main
End If
A = 50
Minled = 1
Cls
Home
"Lcd " minimum range
Aled = 1
Waitms 500
Aled = 0
Wait 1
Goto Main
'/////////////////////
:Change
Toggle En1
Aled = 1
Waitms 500
Aled = 0
Goto Main
End
:Edd
Incr I
If I > 30 Then
Stop Timer2
Cls : Home
C = 0
If B > 2 Then B = 1
C = B * 256
C = C + Counter0
C = C / 7
C = C * 60
"Lcd "speed is:" ; C ; "rpm
B = 0
I = 0
Counter0 = 0
Start Timer2
End If
Return
:Sh
Incr B
Counter0 = 0
Return