سلام .یه برنامه ساده به زبان بیسیک میخوام که با هر بار تحریک یک میکروسئیچ تا 10 بره (صعودی) و با تحریک یک میکروسوئیچ دیگه تا صفر بیاد (نزولی)
اطلاعیه
Collapse
No announcement yet.
درخواست کانتر ساده
Collapse
X
-
پاسخ : درخواست کانتر ساده
آره روی lcd 16*2 - فقط یه نکته اینکه زمانی که با هربار تحریک میکروسوئیچ به 10 رسید با زدن سوئیچ صعودی شمار روی 10 بمونه و صفر نشه و وقتی با هر بار تحریک میکروسوئیچ نزولی شمار به صفر رسیدیم روی صفر بمونه تا میکروسئیچ صعودی شمار تحریک بشه و افزایش پیدا کنه در ضمن سورس برنامه رو هم میخوام مرسی
دیدگاه
-
پاسخ : درخواست کانتر ساده
سلامی دوباره
سورس:
کد:$regfile = "m16adef.dat" $crystal = 8000000 Config Porta.0 = Input Config Porta.1 = Input Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3 Config Lcd = 16 * 2 Dim A As Byte Dim B As Byte Sw1 Alias Pina.0 Sw2 Alias Pina.1 Cls Lcd A Do While B = 0 If Sw1 = 1 Then B = 1 Wend While B = 1 Incr A Waitms 500 Cls Lcd A If A = 10 Then B = 2 Wend While B = 2 If Sw2 = 1 Then B = 3 Wend While B = 3 Decr A Waitms 500 Cls Lcd A If A = 0 Then B = 0 Wend Loop
امید وارم مورد استفاده واقع بشه
دیدگاه
-
پاسخ : درخواست کانتر ساده
مرسی دوست عزیز -البته اگه میشه یه تغییری در برنامه بدید ممنون میشم همانطور که در تایپیک اول اشاره کردم با هر بار تحریک هر یک از میکروسوئیچ ها یک شماره بالا یا پائین بندازه ولی در این برنامه زمانی که میکروسوئیچ یک بار تحریک میشه شمارنده میشماره تا به 9 یا به صفر میرسه.
میخوام بدین صورت باشه :
sw1 =>1 sw1=>2 sw1=>3 sw1=>4 .......sw1=>10
sw2 =>9 sw2=>8 sw2=>7 sw2=>6 .......sw2=>0
دیدگاه
-
پاسخ : درخواست کانتر ساده
فکر کنم الان درست شده باشد
کد:$regfile = "m16adef.dat" $crystal = 8000000 Config Porta.0 = Input Config Porta.1 = Input Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3 Config Lcd = 16 * 2 Dim A As Byte Dim B As Byte Sw1 Alias Pina.0 Sw2 Alias Pina.1 Cls Lcd A Do While B = 0 If Sw1 = 1 Then Gosub C Wend While B = 1 If Sw2 = 1 Then Gosub D Wend Loop C: Incr A Waitms 200 Cls Lcd A If A = 10 Then B = 1 Return D: Decr A Waitms 200 Cls Lcd A If A = 0 Then B = 0 Return
دیدگاه
-
پاسخ : درخواست کانتر ساده
سلام
خدارو شکر :applause:
من با pwm آشنایی ندارم اما اگر توی قسمت حلقه ها مشکل دارید برنامتون رو به این صورت بنویسید
کد:$regfile = "m16adef.dat" $crystal = 8000000 Config Porta.0 = Input Config Porta.1 = Input Dim B As Byte Sw1 Alias Pina.0 Sw2 Alias Pina.1 Do While B = 0 If Sw1 = 1 Then B = 1 'sors... Wend While B = 1 If Sw2 = 1 Then B = 0 'sorse... Wend Loop
دیدگاه
-
پاسخ : درخواست کانتر ساده
باز هم سلام
ببخشید یک ورژن بهتر از برنامه قبلی رو نوشتم
کد:$regfile = "m16adef.dat" $crystal = 8000000 Config Porta.0 = Input Config Porta.1 = Input Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3 Config Lcd = 16 * 2 Dim A As Byte Dim B As Byte Sw1 Alias Pina.0 Sw2 Alias Pina.1 Cls Lcd A Do While B = 0 If Sw1 = 1 Then Gosub C Wend While B = 1 If Sw2 = 1 Then Gosub D Wend Loop C: Incr A Cls Lcd A If A = 10 Then B = 1 While Sw1 = 1 Wend Return D: Decr A Cls Lcd A If A = 0 Then B = 0 While Sw2 = 1 Wend Return
دیدگاه
-
پاسخ : درخواست کانتر ساده
سلام .دوست عزیز برنامه یه مشکلی داره اینه که زمانی که شمارش به 10 رسید شمارنده نزولی فعال میشه و همچنین زمانی که صفر شده شمارنده صعودی دوباره فعال میشه .میخوام در هر شماره ای بود بشه میکروسوئیچ هارو تحریک کرد تا شمارش صعودی و نزولی رو انجام بده
امیدوارم منظورم رو متوجه شده باشید
بدرود
دیدگاه
-
پاسخ : درخواست کانتر ساده
سلام
دوست عزیز برنامه یه مشکلی داره اینه که زمانی که شمارش به 10 رسید شمارنده نزولی فعال میشه و همچنین زمانی که صفر شده شمارنده صعودی دوباره فعال میشه
کد:$regfile = "m16adef.dat" $crystal = 8000000 Config Porta.0 = Input Config Porta.1 = Input Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3 Config Lcd = 16 * 2 Dim A As Byte Dim B As Byte Sw1 Alias Pina.0 Sw2 Alias Pina.1 Cls Lcd A Do If Sw1 = 1 Then Gosub C If Sw2 = 1 Then Gosub D Loop C: Incr A If A > 10 Then A = 10 Cls Lcd A While Sw1 = 1 Wend Return D: Decr A if a > 254 then a=0 Cls Lcd A While Sw2 = 1 Wend Return
چرا کلید ها رو به وقفه ها int0 و int1 وصل نکردی که برنامه نویسی راحت تر باشه!؟؟
این مطلبی رو که شما فرمودید من در موردش اطلاعاتی ندارم اگه یک مقدار بشتر توضیح بدید ممنون میشم
دیدگاه
دیدگاه