مهندس دستور DO رو سه خط بالاتر بنویس تا مشکلت حل بشه !
کد php:
Dim Dahgan As Byte
DO
Portb.0 = Yekan.0 : Portb.1 = Yekan.1 : Portb.2 = Yekan.2 : Portb.3 = Yekan.3
Portb.7 = Dahgan.0 : Portb.6 = Dahgan.1 : Portb.5 = Dahgan.2 : Portb.4 = Dahgan.3
Incr A
Dahgan = A / 10
واقعا" بابت جوابتون ممنونم
اما حالا اگه اجازه بدين بريم سراغ قسمت شستي هاي تنظيمات ... با اجازه همه ...
براي سخت افزار شستي هاي تنظيمات سه تا شستي رو بصورت Pull UP شده به 3تا از پايه هاي ميکرو وصل مي کنيم
حالا ميخوايم روي برنامه عملکرد اين 3تا شستي کار کنيم :
خب ابتدا بايد هر 3تا رو با دستور Debounce توي حلقه قرار بديم و به ازاي هر کدوم يه زير برنامه تعريف کنيم ( درسته؟)
- حالا ميخايم اگه (+) رو فشار داديم اول يه واحد به عدد نمايشگر اضافه بشه و بعد از نمايش بلافاصله در حافظه EEPROM ذخيره بشه و بعد برگرده به حلقه.
- اگه (-) فشرده شده بود بره يه واحد از عدد نمايشگر کم کنه و بعد از نمايش بلافاصله در حافظه EEPROM ذخيره کنه و بعد برگرده به حلقه.
- اگه (SET ) فشرده شده بود بره و از اول برنامه شروع کنه به خواندن ( پرش به تابع Main )
اگه امکانش هست يه مثال از اين برنامه رو برام بذارين .... با تشکر از همگي
( اما يه سوال : اگه قرار باشه وقتي کليد رو فشرده نگه داشتيم عدد مدام زياد بشه بايد چکار کرد؟ )
( منظور از اين دستور دقيقا" چيه ؟ Ddra.0 = 0 : Porta.0 = 1 )
[code]$regfile = "M32def.dat"
$crystal = 8000000
Dim T As Byte
Dim X As Eram Byte At 10
Ddra.0 = 0 : Porta.0 = 1
Main:
Readeeprom T , 10
Set Porta.6
.
.
.
'------------------------------------------------------------------------------
Setting:
Do
Debounce Pina.0 , 0 , Restart , Sub
Debounce Pina.1 , 0 , Increment , Sub
Debounce Pina.2 , 0 , Decrement , Sub
Loop
End
'------------------------------------------------------------------------------
Increment:
Incr T
Writeeeprom T , 10
Waitms 4
Return
'------------------------------------------------------------------------------
Decrement:
Decr T
Writeeeprom T , 10
Waitms 4
Return
'------------------------------------------------------------------------------
پایه فوق رو وردی تعریف می کنه
اگه پایه فوق خروجی باشه که خوب خروجیشو یک می کنه !
ولی اگه ورودی باشه پول آپش فعال می شه !!!!
پیشنهاد می کنم با دستور Writeeeprom کار نکنین و یه متغییر تو EEPROM بگیرین و مقادیرو بریزین تو اون !!!
مهندس بالایی نوشته است:اگه قرار باشه وقتي کليد رو فشرده نگه داشتيم عدد مدام زياد بشه بايد چکار کرد؟
خوب اون پایه رو دوباره چک کن و ببین اگه یک هستش هنوز خوب بشمره و اینو ادامه بده تا زمانی که پایه فوق صفر بشه !!!
مثلا برنامه زیر واسه کم و زیاد کردن متغیر MM هستش که فرضا قراره داخلش دقیقه ذحیره شه و این قضیه بالا هم رعایت شده !!!!
کد php:
Do
Debounce Pind.0 , 1 , Ss
Debounce Pind.1 , 1 , Mm1
Debounce Pind.2 , 1 , Mm2
Loop
Mm1:
Incr Mm : If Mm > 59 Then Mm = 0
Gosub Showmm
For T = 0 To Tt
If Pind.1 = 0 Then Goto Mm
Waitms 4
Next
Ft = 1
Do
Gosub Showmm
For T = 0 To Tt
If Pind.1 = 0 Then Goto Mm
Waitms 1
Next
Incr Mm : If Mm > 59 Then Mm = 0
Gosub Showmm
Loop
Mm2:
Decr Mm : If Mm > 59 Then Mm = 59
Gosub Showmm
For T = 0 To Tt
If Pind.2 = 0 Then Goto Mm
Waitms 4
Next
Ft = 1
Do
Gosub Showmm
For T = 0 To Tt
If Pind.2 = 0 Then Goto Mm
Waitms 1
Next
Decr Mm : If Mm > 59 Then Mm = 59
Gosub Showmm
Loop
Ss:
Emm = Mm
که خوب متغیر EMM از نوع EEPROM هستش :
با سلام مجدد خدمت همه ی دوستان
( جدیدا"یه موضوعی پیش اومده در مورد منبع تغذیه مدار ... ! )
ببینید نقشه ای که گذاشتم بهم 16 ولت میده اما نمیدونم از نظر جریان دهی جوابگوی مدار هست یا نه ... ؟
( البته من توی خروجیش یه 7805 میذارم تا ازش 5 ولت بگیرم )
لیست مصرف کننده های مدار به صورت زیر هستش :
- خمد میکرو کنترلر
- سه تا رله که توسط یه ULN2003 درایو شدن ( رله ها 5 ولت هستن )
- 3تا دیود نوری (LED) که با مقاومت به میکرو وصل شدن
- 3تا میکروسوئیچ که به وقفه وصل هستن بعنوان ورودی
- سه تا شستی برای تنظیمات که Pullup شدن
حالا میشه بگین این مدار تغذیه جوابگو هستش یا نه ؟؟؟
جواب نمی ده !
یه شارژر موبایل بذار !
کوچیک و ارزون !