[attachment=6533][attachment=6533]سلام خدمت دوستان
این یه برنامه خیلی ساده اس که دو هفته منو علاف کرده خواهشن دوستان کمک کنید و مشکل این برنامه رو بگید:
پنج تا سیگنال ورودی داریم به اسمهای :
Ud: در اول کار میاد یعنی حدود یک ثانیه یک میشه بعد صفر
FLA: یا fault lamp وقتی دستگاه ارور میده این سیگنال فعال میشه
PLA: یا pass lamp حالت عادی بدون اشکال این سیگنال فعال میشه
FS: یا fault sensor سنسوری که بعد از ارور دستگاه باید فعال بشه
PS: یا pass sensor سنسوری که بعد از حالت بدون اشکال باید فعال بشه
یکی هم سیگنال خروجی PB.0 تحریک بوق
0-اول برنامه
1-بعد از اینکه UD از حالت یک به صفر تغیر حالت داد برنامه شروع میشه
2-تست میکنه ببینه FLA یک میشه یا PLA
3-اگر PLA یک باشه منتظر میشه که کدوم یک از سنسورهای FS یا PS فعای میشن
31-اگر PS فعال شد میره به اول برنامه
32-اگر FS فعال شد بوق رو فعال میکنه تا PS فعال بشه بعد بوق رو قطع میکنه و میره اول برنامه
4-اگر FLA یک باشه 20میلی ثانیه بوق رو فعال میکنه
41-سپس منتظر میشه که کدو یک از سنسورهای FS یا PS فعال میشن
42-اگر FS فعال شد میره به اول برنامه
43-اگر PS فعال شد بوق رو فعال میکنه تا FS فعال بشه بعد بوق رو قطع میکنه و
میره اول برنامه
Dim Ud As Byte 'ud = up/down
Dim Pla As Byte 'pla = pass lamp
Dim Fla As Byte 'fla = fault lamp
Dim Ps As Byte 'ps = pass sensor
Dim Fs As Byte 'fs = fault sensor
Startline:
Do
Ud = Pinc.5
Loop Until Ud = 0
Do
Ud = Pinc.5
Loop Until Ud = 1
Waitms 100
Pla = Pinc.3
Fla = Pinc.4
If Fla = 1 Then Goto Flastart
If Pla = 1 Then Goto Plastart
Plastart:
Do
Fs = Pinc.1
Ps = Pinc.2
If Fs = 1 Then Goto Errorlinep
If Ps = 1 Then Goto Startline
Loop
Flastart:
Portb.1 = 1
Waitms 20
Portb.1 = 0
Do
Ps = Pinc.2
Fs = Pinc.1
If Ps = 1 Then Goto Errorlinef
If Fs = 1 Then Goto Startline
Loop
Errorlinep:
Portb.1 = 1
Do
Ps = Pinc.2
Loop Until Ps = 0
Portb.1 = 0
Goto Startline
Errorlinef:
Portb.1 = 1
Do
Fs = Pinc.1
Loop Until Fs = 0
Portb.1 = 0
Goto Startline
End
برنامه به این سادگی دو هفته منو سر کار گذاشته
(آخرین ویرایش در این ارسال: ۲۸-خرداد-۱۳۹۰, ۱۸:۱۴:۵۶، توسط sisco.)
Config Portc = Input
Config Portb = Output 'horn trigger
up alias pinc.5
pla alias pinc.4
fla alias pinc.3
ps alias pinc.2
fs alias pinc.1
busser alias portb.1
Startline:
do
if up=1 then gosub flapla
waitms 10
loop
flapla:
bitwait up,reset
do
If Fla = 1 Then Gosub Flastart
waitms 10
If Pla = 1 Then Gosub Plastart
waitms 10
if up=1 then exit do
waitms 10
loop
return
Plastart:
Do
If Fs = 1 Then Gosub Errorlinep
waitms 10
If Ps = 1 Then Gosub Startline
waitms 10
if up=1 then exit do
waitms 10
Loop
return
Flastart:
set busser
waitms 200
reset busser
Do
If Ps = 1 Then Gosub Errorlinef
waitms 10
If Fs = 1 Then Gosub Startline
waitms 10
if up=1 then exit do
waitms 10
Loop
return
Errorlinep:
set busser
bitwait ps,reset
reset busser
Errorlinef:
set busser
bitwait fs,reset
reset busser
Goto Startline
اینو امتحان کن اما قبلش توضیح بده که از برنامت چی میخوای و اون چی کار میکنه اینجوری بهتر میتونم کمکت کنم
دانشمندان امروز دانش آموزان دیروز بودند.
به امید این که فردا دانشمند باشم.
(آخرین ویرایش در این ارسال: ۲۹-خرداد-۱۳۹۰, ۱۳:۴۰:۰۰، توسط saeidjan.)