باسلام
من وقتی وقفه را در میکرو فعال میکنم.بدون هیچ مشکلی کار میکنه.یعنی باتحریک پایه خروجی 1 وبا قطع تحریک خروجی 0 میشه (دو تا وقفه در مگا 8).ولی مسئله اینجاست که اگه یک پایه دیگه میکرو را ورودی تعریف کنم و یک دستور حلقه (do-loop)بدم.دیگه خروجی وقفه صفر نمیشه!وبا یکبارتحریک همچنان 1 میمونه.
لطفا راهنمایی کنید
(۳۰-دى-۱۳۹۰, ۱۶:۲۵:۱۹)alfaalarm نوشته است: [ -> ]باسلام
من وقتی وقفه را در میکرو فعال میکنم.بدون هیچ مشکلی کار میکنه.یعنی باتحریک پایه خروجی 1 وبا قطع تحریک خروجی 0 میشه (دو تا وقفه در مگا 8).ولی مسئله اینجاست که اگه یک پایه دیگه میکرو را ورودی تعریف کنم و یک دستور حلقه (do-loop)بدم.دیگه خروجی وقفه صفر نمیشه!وبا یکبارتحریک همچنان 1 میمونه.
لطفا راهنمایی کنید
دوسته من منظورتون پایه های int0 , int1 هست؟؟؟
برنامتون رو بزارین !!!!
بله منظورم int0وint1هست.
config portb=output
config int0=falling
config int1=falling
config portc=input
enable int0
enable int1
enable interrupts
on int0 1
on int1 2
do
if pinc.0=1 then:set pinb.0:else:reset pinb.0:end
loop
1:
if pind.2=1 then:set pinb.1:else:reset pinb.1:end
2:
if pind.3=1 then:set pinb.2:else:reset pinb.2:end
return
pind.2همون پایه int0هست و pind.3پایه int1هست
وقتی خط قرمز را حذف می کنم (دستور do-loop)با تحریک پایه intخروجی 1 وبا قطع تحریک خروجی 0 می شه ولی وقتی این دستور را اضافه میکنم دیگه خروجی 0 نمی شه
با تشکر
میخوای بجای
if pinc.0=1
از
debounce pinc.0,set,label,sub
استفاده کن ببین درست میشه
البته یه مشکل دیگه هست اگر ورودی پینت c0 سریعا لو و های میشه پس احتمالا این شرطت معنی نداره و همیشه صفر میمونه.
امتحان کردم.بااین دستور خروجی 1 میمونه.
اصلا این ورودی چیه؟ آیا سریع صفر و یک میشه؟
اینو بگو آیا سریعا صفر و یک میشه؟ یعنی کلیدت پوش باتونه و بعد زدن به حالت اولش میره؟
شاسی نیست کلیده.باید دوباره بزنی تا قطع بشه.
دقیقا چکار میخوای انجام بدی چون تو این کد من نفهمیدم.
اون end آخر 1و2رو بردار بجاشون return بزار اون ریترن آخر رو بردار
do loop هم که باید باشه.
از debounce استفاده کن
end رو از do loop بردار
سه تا ورودیه
که دوتاش دائم چک میشه (پایه های int0-int1)این پایه ها به کلید وصله می خوام وقتی 1 شدن خروجی های متناظرشون 1 بشن
وقتی 0 شدن خروجی ها صفر بشن. تا وقتی حلقه نباشه وقفه درست کار می کنند ولی وقتی حلقه را اضافه می کنم (همون ورودی سوم)خروجی وقفه ها دیگه 0 نمی شه