سلام عرض میکنم خدمت مهندسای انجمن
یه سوال دارم لطف کنید جوابمو بدین
قطعه کد زیر با ااستفاده از بسکام برای کنترل 2تا سروو موتوره :
'Servo Motor
'-----------------------
$regfile = "m48def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = _
Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0
Config Lcd = 16 * 2
Config Portb.1 = Output
Config Portb.2 = Output
Config Portc = Input
'--------------------------
Clkpr = &H80
Clkpr = &H00
'-------------Timer1 As PWM
Tccr1a = &HA2
Tccr1b = &H1A
Tcnt1h = &H00
Tcnt1l = &H00
Icr1h = &H3A
Icr1l = &H98
Ocr1ah = &H05
Ocr1al = &HDC
Ocr1bh = &H05
Ocr1bl = &HDC
'--------------------------
Declare Function Lcd_show_position()as Byte
'--------------------------
Dim Pwm1 As Word
Dim Pwm2 As Word
Dim Pwm_temp As Word
Dim L As Byte
Dim M1 As Byte , M2 As Byte
'--------------------------
Pwm1 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
Pwm2 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm1
'--------------------------
Cursor Off
Cls
Lcd "Start"
Waitms 500
Cls
Lcd "Servo1> Deg"
Lowerline
Lcd "Servo2> Deg"
Waitms 500
L = Lcd_show_position()
'--------------------------
Do
M1 = Pinc And &H03
M2 = Pinc And &H0C
'--------------------------
Select Case M1
Case 2:
If Pwm1 < 2400 Then
Incr Pwm1
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
L = Lcd_show_position()
End If
Case 1:
If Pwm1 > 600 Then
Decr Pwm1
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
L = Lcd_show_position()
End If
End Select
'--------------------------
Select Case M2
Case 8:
If Pwm2 < 2400 Then
Incr Pwm2
Pwm_temp = Pwm2
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm2
L = Lcd_show_position()
End If
Case 4:
If Pwm2 > 600 Then
Decr Pwm2
Pwm_temp = Pwm2
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm2
L = Lcd_show_position()
End If
End Select
'---------------------------
If Pinc.4 = 0 Then
Cls
Lcd "Servo1> Deg"
Lowerline
Lcd "Servo2> Deg"
Pwm1 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
Pwm2 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm1
L = Lcd_show_position()
End If
Loop
End
'--------------------------
Function Lcd_show_position() As Byte
Dim P1 As Integer
Dim P2 As Integer
P1 = Pwm1 - 600
P1 = P1 / 10
P2 = Pwm2 - 600
P2 = P2 / 10
Locate 1 , 9
Lcd " "
Locate 1 , 9
Lcd P1
Locate 2 , 9
Lcd " "
Locate 2 , 9
Lcd P2
End Function
می خوام بدون این کد دقیقا چیکار میکنه؟
Clkpr = &H80
Clkpr = &H00
سوال بعد اینکه مقادیری که روبروشه جریانش چیه؟اصلا کلا جریان مقادیری که به صورته هگزادسیمال هست چیه؟!!!
لطف میکنید اگه جوابمو بدین
یه سوال دارم لطف کنید جوابمو بدین
قطعه کد زیر با ااستفاده از بسکام برای کنترل 2تا سروو موتوره :
'Servo Motor
'-----------------------
$regfile = "m48def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = _
Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0
Config Lcd = 16 * 2
Config Portb.1 = Output
Config Portb.2 = Output
Config Portc = Input
'--------------------------
Clkpr = &H80
Clkpr = &H00
'-------------Timer1 As PWM
Tccr1a = &HA2
Tccr1b = &H1A
Tcnt1h = &H00
Tcnt1l = &H00
Icr1h = &H3A
Icr1l = &H98
Ocr1ah = &H05
Ocr1al = &HDC
Ocr1bh = &H05
Ocr1bl = &HDC
'--------------------------
Declare Function Lcd_show_position()as Byte
'--------------------------
Dim Pwm1 As Word
Dim Pwm2 As Word
Dim Pwm_temp As Word
Dim L As Byte
Dim M1 As Byte , M2 As Byte
'--------------------------
Pwm1 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
Pwm2 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm1
'--------------------------
Cursor Off
Cls
Lcd "Start"
Waitms 500
Cls
Lcd "Servo1> Deg"
Lowerline
Lcd "Servo2> Deg"
Waitms 500
L = Lcd_show_position()
'--------------------------
Do
M1 = Pinc And &H03
M2 = Pinc And &H0C
'--------------------------
Select Case M1
Case 2:
If Pwm1 < 2400 Then
Incr Pwm1
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
L = Lcd_show_position()
End If
Case 1:
If Pwm1 > 600 Then
Decr Pwm1
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
L = Lcd_show_position()
End If
End Select
'--------------------------
Select Case M2
Case 8:
If Pwm2 < 2400 Then
Incr Pwm2
Pwm_temp = Pwm2
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm2
L = Lcd_show_position()
End If
Case 4:
If Pwm2 > 600 Then
Decr Pwm2
Pwm_temp = Pwm2
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm2
L = Lcd_show_position()
End If
End Select
'---------------------------
If Pinc.4 = 0 Then
Cls
Lcd "Servo1> Deg"
Lowerline
Lcd "Servo2> Deg"
Pwm1 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1ah = Pwm_temp
Ocr1al = Pwm1
Pwm2 = 1500
Pwm_temp = Pwm1
Shift Pwm_temp , Right , 8
Ocr1bh = Pwm_temp
Ocr1bl = Pwm1
L = Lcd_show_position()
End If
Loop
End
'--------------------------
Function Lcd_show_position() As Byte
Dim P1 As Integer
Dim P2 As Integer
P1 = Pwm1 - 600
P1 = P1 / 10
P2 = Pwm2 - 600
P2 = P2 / 10
Locate 1 , 9
Lcd " "
Locate 1 , 9
Lcd P1
Locate 2 , 9
Lcd " "
Locate 2 , 9
Lcd P2
End Function
می خوام بدون این کد دقیقا چیکار میکنه؟
Clkpr = &H80
Clkpr = &H00
سوال بعد اینکه مقادیری که روبروشه جریانش چیه؟اصلا کلا جریان مقادیری که به صورته هگزادسیمال هست چیه؟!!!
لطف میکنید اگه جوابمو بدین
دیدگاه