سلام به همه دوستان .
من یه پروژه دارم که توی اون باید کامپیوتر اعدادی بین 0 تا 200 رو ارسال کنه و بعد میکرو این اعداد رو دریافت کنه و اگر کمتر از 100 بود یه کاری انجام بده و اگه بین 100 تا 200 بود یه کار دیگه . اما توی همون قسمت اول که دریافت عدد از پورت هست مشکل دارم . برنامه زیر رو برای میکرو نوشتم اما درست جواب نداد . مشکل من قبل از End هست و از End به بعد مهم نیست .
راستی MAX232 رو هم با خازن های 10uf/16v بایاس کردم .
لطفا کمک کنید .
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Config Portb = Output
Config Pinc.0 = Output : Config Pinc.1 = Output
En1 Alias Portc.0 : En2 Alias Portc.1
Dim A As String * 3 , B As Byte , C(2) As Byte , D As Single , Dd As Byte , E As Byte , F(2) As Byte , G(2) As Byte , I As Byte , V_h As Byte
F(1) = 255 : F(2) = 255 : G(1) = 4 : G(2) = 4
Do
First:
A = Inkey()
If A = "" Then
Goto First
End If
B = Val(a)
If B > 100 Then
B = B - 100 : V_h = 2 : Reset En2 : Set En1
Elseif B < 100 Then
V_h = 1 : Reset En1 : Set En2
Else
Goto First
End If
D = B - C(v_h)
If D > 0 Then
Dd = D -1 : Gosub Soudi
Elseif D < 0 Then
Dd = Abs(d) : Dd = Dd - 1 : Gosub Nozooli
Else
Goto First
End If
Loop
End
Soudi:
For I = 0 To Dd
If F(v_h) = 3 Then
F(v_h) = 255
End If
Incr F(v_h) : E = 2 ^ F(v_h) : Portb = E : Waitms 70
Next I
G(v_h) = F(v_h)
C(v_h) = B
Return
Nozooli:
For I = 0 To Dd
If G(v_h) = 0 Then
G(v_h) = 4
End If
Decr G(v_h) : E = 2 ^ G(v_h) : Portb = E : Waitms 70
Next I
F(v_h) = G(v_h)
C(v_h) = B
Return
من یه پروژه دارم که توی اون باید کامپیوتر اعدادی بین 0 تا 200 رو ارسال کنه و بعد میکرو این اعداد رو دریافت کنه و اگر کمتر از 100 بود یه کاری انجام بده و اگه بین 100 تا 200 بود یه کار دیگه . اما توی همون قسمت اول که دریافت عدد از پورت هست مشکل دارم . برنامه زیر رو برای میکرو نوشتم اما درست جواب نداد . مشکل من قبل از End هست و از End به بعد مهم نیست .
راستی MAX232 رو هم با خازن های 10uf/16v بایاس کردم .
لطفا کمک کنید .
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Config Portb = Output
Config Pinc.0 = Output : Config Pinc.1 = Output
En1 Alias Portc.0 : En2 Alias Portc.1
Dim A As String * 3 , B As Byte , C(2) As Byte , D As Single , Dd As Byte , E As Byte , F(2) As Byte , G(2) As Byte , I As Byte , V_h As Byte
F(1) = 255 : F(2) = 255 : G(1) = 4 : G(2) = 4
Do
First:
A = Inkey()
If A = "" Then
Goto First
End If
B = Val(a)
If B > 100 Then
B = B - 100 : V_h = 2 : Reset En2 : Set En1
Elseif B < 100 Then
V_h = 1 : Reset En1 : Set En2
Else
Goto First
End If
D = B - C(v_h)
If D > 0 Then
Dd = D -1 : Gosub Soudi
Elseif D < 0 Then
Dd = Abs(d) : Dd = Dd - 1 : Gosub Nozooli
Else
Goto First
End If
Loop
End
Soudi:
For I = 0 To Dd
If F(v_h) = 3 Then
F(v_h) = 255
End If
Incr F(v_h) : E = 2 ^ F(v_h) : Portb = E : Waitms 70
Next I
G(v_h) = F(v_h)
C(v_h) = B
Return
Nozooli:
For I = 0 To Dd
If G(v_h) = 0 Then
G(v_h) = 4
End If
Decr G(v_h) : E = 2 ^ G(v_h) : Portb = E : Waitms 70
Next I
F(v_h) = G(v_h)
C(v_h) = B
Return
دیدگاه