ايران ويج

نسخه‌ی کامل: نحوه ایجاد یک شرط خاص
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من برنامه زیر رو نوشتم اما میخوام زمانی که صفر دریافت میکنه عکس العمل خاصی از خودش نشون نده این کار به جه شکلی باید انجام بدم ؟
و دیگه اینکه از اینتراپت پورت سریال به چه شکلی باید استفاده کنم



کد:
'*******************************************************************************
$regfile = "m8def.dat"
$crystal = 11059200
$baud = 9600
'*******************************************************************************
Config Timer1 = Pwm , Prescale = 1 , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Portb.1 = Output
Config Portb.2 = Output
Config Serialin = Normal , Size = 255
Enable Interrupts
Dim Out_pwm As Word
Dim S As String * 10
Dim F1 As String * 10

Cls
Lcd "Welcome"
Wait 2
Cls
Lcd "Light Control"
Wait 2
Cls
Pwm1a = 1023
Pwm1b = 1023

Do
Home
Lcd "data = " ; S ; "   "
Input S
F1 = Mid(s , 2 , 5)
Out_pwm = Val(f1)
Lcd Out_pwm
Pwm1a = Out_pwm
Pwm1b = Out_pwm
F1 = ""
S = ""
Loop
(۲۶-دى-۱۳۹۱, ۲۰:۰۷:۴۰)arash67 نوشته است: [ -> ]سلام من برنامه زیر رو نوشتم اما میخوام زمانی که صفر دریافت میکنه عکس العمل خاصی از خودش نشون نده این کار به جه شکلی باید انجام بدم ؟
و دیگه اینکه از اینتراپت پورت سریال به چه شکلی باید استفاده کنم



کد:
'*******************************************************************************
$regfile = "m8def.dat"
$crystal = 11059200
$baud = 9600
'*******************************************************************************
Config Timer1 = Pwm , Prescale = 1 , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Portb.1 = Output
Config Portb.2 = Output
Config Serialin = Normal , Size = 255
Enable Interrupts
Dim Out_pwm As Word
Dim S As String * 10
Dim F1 As String * 10

Cls
Lcd "Welcome"
Wait 2
Cls
Lcd "Light Control"
Wait 2
Cls
Pwm1a = 1023
Pwm1b = 1023

Do
Home
Lcd "data = " ; S ; " "
Input S
F1 = Mid(s , 2 , 5)
Out_pwm = Val(f1)
Lcd Out_pwm
Pwm1a = Out_pwm
Pwm1b = Out_pwm
F1 = ""
S = ""
Loop
سوال اول رو متوجه نشدم اما دومی
پس از تعیین سرعت و اینا بعد اینو میزاری
کد:
On Urxc Rs
Enable Urxc
برای وقفه ی پایان ارسال
کد:
On Utxc Rs
Enable Utxc
پس یه لیبل به اسم RS میسازی (دیگه اسمش رو عوض کن هرچی میخوای)
بعد کاری که میخوای بکنی
اگه هم وقفه دریافت هست اولین کار باید
UDR رو بخونی که عدد ارسال شده هست بعد از اسکی به حروف تبدیلش بکنی
یادت نره بعد از فعال کردن اینا وقفه سراسری هم باید فعال بشه
بعد از پایان کارت هم return رو بزاری
ممنون در مورد سوال اول زمانی که از دستور S="" و F1="" استفاده می کنم در زمان دریافت دیتا مقادیر غیر صفر میباشد در هنگام عدم ارسال دیتا متغییر OUT_PWM صفر شده مقدار قبلی خود را ندارد و لازم به ذکر است حذف کردن دستور S="" و F1="" باعث می شود که LCD چرت و پرت نمایش دهد حالا سوال من اینجا این است که به چه شکلی میتونم داده دریافتیمو حفظ کنم ؟ درضمن من از ماژول HMT-HMR 433MHZ استفاده می کنم
راستی باید وقفه سراسری رو هم فعال کنی.
این دستور رو هم باید اضافه کنی:
کد:
Enable Interrupts
اگه بخواهید مقدار pwm شما بطور ثابت ارسال بشه ؛
یه زیر برنامه ایجاد کنید و مقادیر رو هر لحظه ارسال کنید
کد:
Sub ??
For X = 1 To 10 Step 5
Printbin V
Delay
Next X
pwm1a = 1023
pwm1b = 1023
End Sub
مهندس این برنامه ای که من گذاشتم مربوط به گیرنده هستش
(۲۶-دى-۱۳۹۱, ۲۱:۱۲:۰۶)arash67 نوشته است: [ -> ]ممنون در مورد سوال اول زمانی که از دستور S="" و F1="" استفاده می کنم در زمان دریافت دیتا مقادیر غیر صفر میباشد در هنگام عدم ارسال دیتا متغییر OUT_PWM صفر شده مقدار قبلی خود را ندارد و لازم به ذکر است حذف کردن دستور S="" و F1="" باعث می شود که LCD چرت و پرت نمایش دهد حالا سوال من اینجا این است که به چه شکلی میتونم داده دریافتیمو حفظ کنم ؟ درضمن من از ماژول HMT-HMR 433MHZ استفاده می کنم
من درست متوجه نشدم
1- شما دارید S رو مینویسید در حالی که هیچ مقداری ندارد!
2-درسته اگه S رو صفر نکنید LCD چرت و پرت نشون میده ولی نیازی به دومی نیست
3- اون چرت و پرت حاصل از ارسال نادرست هست وگرنه برای بار اول هم که شده باشه باید یک مقدار درستی بگیرید
این که حل شد میریم سراغ حفظ داده
کد:
Do
Home
Lcd "data = " ; S ; " "
S = ""
Input S
F1 = Mid(s , 2 , 5)
Out_pwm = Val(f1)
Lcd Out_pwm
Pwm1a = Out_pwm
Pwm1b = Out_pwm
Loop

(۲۶-دى-۱۳۹۱, ۲۱:۳۰:۰۴)h.unique نوشته است: [ -> ]راستی باید وقفه سراسری رو هم فعال کنی.
این دستور رو هم باید اضافه کنی:
کد:
Enable Interrupts
پست رو رو هوا زدید ها! خودم گفته بودمBiggrin

درضمن بهتره از وقفه استفاده کنین چون به احتمال زیاد در زمان درست به input نمیرسید
نقل قول: 3- اون چرت و پرت حاصل از ارسال نادرست هست وگرنه برای بار اول هم که شده باشه باید یک مقدار درستی بگیرید
مهندس من زمانی که داده ای به گیرنده نمی فرستم چرت وپرت نشون میده

میشه یک شرط تعریف کرد که زمانی که صفر از پورت سریال دریافت کرد کاری انجام نده ؟؟؟؟

3
شما اگه بدونی وقتی داده ای در کار نیست چی خونده میشه بله اگه نه باید با وقفه کار کنید