سلام. با توجه به گفته شما ما اگر در حلقه چیزی ننویسیم میکرو با توجه به
رخدادوقفه به لیبل مورد نظر پرش میکند.اما دوست عزیز من هم در عمل تست
میکنم و هم در بسکام بدون دستور پرش از حلقه تو حلقه گیر میکنه.
یعنی وقفه تعطیل.یعنی حتما باید از حلقه پرش کنم .
که ارتفاع خیلی زیاده می ترسم
.
(۲۴-بهمن-۱۳۸۹, ۱۴:۰۰:۱۲)SABER66 نوشته است: [ -> ]سلام. با توجه به گفته شما ما اگر در حلقه چیزی ننویسیم میکرو با توجه به
رخدادوقفه به لیبل مورد نظر پرش میکند.اما دوست عزیز من هم در عمل تست
میکنم و هم در بسکام بدون دستور پرش از حلقه تو حلقه گیر میکنه.
یعنی وقفه تعطیل.یعنی حتما باید از حلقه پرش کنم .
که ارتفاع خیلی زیاده می ترسم.
از کجا میگی که تو حلقه گیر میکنه؟؟؟؟
کد:
[align=left]
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 =
Portc.7 , E = Portc.3 , Rs = Portc.2
Dim B As Byte , C As Byte
Config Timer0 = Timer , Prescale = 1024
Enable Interrupts
Enable Timer0
On Timer0 P
Start Timer0
Do
Loop
End
:P
Locate 1 , 8 : Lcd B
Incr B
If B > 3 Then : Incr C : Locate 1 , 1 : Lcd C : B = 0 : End If
return
[code]
مثلآ در همین برنامه ساده .
به گفته شما و دیگر عزیزان به هنگام رخداد وقفه میکرو هر جا که باشه حتی
در حلقه وحتی بدون داشتن دستور پرش به لیبل وقفه میره .
اما ای کاش اینجوری بود لااقل برای من.
من هرکاری میکنم بصورت عملی و همچنین در بسکام تو حلقه گیر میکنه وبه هنگام رخداد وقفه به لیبل وقفه نمیره.
مشکل من اینه .یعنی اصلآ وقفه تعطیل.
مرسی
[/align]
مثلآ در همین برنامه بالا .
به گفته شما و دیگر عزیزان به هنگام رخداد وقفه میکرو هر جا که باشه حتی
در حلقه وحتی بدون داشتن دستور پرش به لیبل وقفه میره .
اما ای کاش اینجوری بود لااقل برای من.
من هرکاری میکنم بصورت عملی و همچنین در بسکام تو حلقه گیر میکنه وبه هنگام رخداد وقفه به لیبل وقفه نمیره.
مشکل من اینه .یعنی اصلآ وقفه تعطیل.
مرسی
کد:
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
Config Timer0 = Timer , Prescale = 1024
Enable Interrupts
Enable Timer0
On Ovf0 Ebka
: Dim Sea As Byte , Mine As Byte , Hu As Byte , A As Byte
Start Timer0
Cls : Cursor Off
Do
Home
Lcd Hu ; ":" ; Mine ; ":" ; Sea
Loop
Ebka:
If A < 30 Then
Incr A
Else
A = 0
Incr Sea
End If
If Sea > 59 Then
Sea = 0
Incr Mine
End If
If Mine > 59 Then
Incr Hu
Mine = 0
End If
If Hu > 12 Then
Hu = 1
End If
Return
این برنامه رو برات نوشتم و تو پرتئوس تست کردم و درست بود
موفق باشی...
ebka جون دستت درد نکنه .
اما همینم که تو نوشتی تو بسکام تو حلقه گیر میکنه.
فکر کنم اگه بتونم ثابت کنم اسممو به عنوان پژوهشگر برتر تو گینس بنویسن
که یه ایراد از بسکام گرفتم .
من تمام حرفم اینه اقا مگه نمیگن ونمیگید به محض رخ دادن وقفه هر جا
باشی به لیبل وقفه میری پس چرا این لامسب نمیره و تو حلقه گیر میکنه.
اینو یکی برام ثابت کنه
دوست من برنامه تو حلقه همیشه هست!!!
زمانی که وقفه میخوره میره و زیر برنامش رو میخونه و بعد میاد تو حلقه!!!
باید میکرو تو حلقه باشه!!!
من متوجه نمیشم از منظورت که تو حلقه گیر میکنه چیه ؟؟؟!!!
دوست من do و loop حلقه بینهایته!!!
باید گیر کنه!!!
احسنت. قبول کردم که باید تو یه حلقه بینهایت باشه اما نکته ای که تو
گفته شما است اینه که میفرمایید بدون پرش از حلقه دستورات لیبل انجام
میشه و دوباره میاد تو حلقه .اینجا مشکل دارم.چون همچین چیزی نمیبینم.
یعنی مثلا همین برنامه ای که بهم دادید تو بسکام مشکل داره.البته در
شبیه سازی منظورمه که دستورات لیبل رو انجام نمیده همچنین در عمل.
اما در پروتیوس درسته
همه حرف من اینه که دستورات لیبل انجام نمیشه.
یعنی برنامه بدون حلقه پرش تو حلقه میمونه ودستورات لیبل انجام نمیشه.
(۲۴-بهمن-۱۳۸۹, ۲۱:۲۶:۵۹)SABER66 نوشته است: [ -> ]احسنت. قبول کردم که باید تو یه حلقه بینهایت باشه اما نکته ای که تو
گفته شما است اینه که میفرمایید بدون پرش از حلقه دستورات لیبل انجام
میشه و دوباره میاد تو حلقه .اینجا مشکل دارم.چون همچین چیزی نمیبینم.
یعنی مثلا همین برنامه ای که بهم دادید تو بسکام مشکل داره.البته در
شبیه سازی منظورمه که دستورات لیبل رو انجام نمیده همچنین در عمل.
اما در پروتیوس درسته
همه حرف من اینه که دستورات لیبل انجام نمیشه.
یعنی برنامه بدون حلقه پرش تو حلقه میمونه ودستورات لیبل انجام نمیشه.
دوست عزیز من تست کردم!!!
دقیقا کار میکنه !!! رو ال سی دی چی نشون میده؟؟؟
ما یه چند تا حلقه داریم:به طور مثال
یه مدل حلقه داریم که بی نهایته!!!
همون do , loop
یکی دیگه هم داریم که با شرط وارد میشه و باشرط خارج!!
کد:
while a=16
a=getkbd()
toggle portc.2
waitms 500
wend
ابراهیم جان از صبری که داشتی ممنونم.
بالاخره اثبات شد برام البته با برنامه شما خیلی ممنون
اما با توجه به محاسبات اختلاف زیادی داره یعنی 4 ثانیه یه بار میشماره.
همیشه همینطوره؟
اما کلآ با تایمر جماعت ساعت دقیق نمیشه ساخت به غیر از تایمر 2 و
کریستال 32768 درست میگم
در عمل یه کم تلرانس داره !!!
تو پرتئوس که دقیق نیست!!!
تو یک ساعت شاید 1 دقیقه تلرانس داشته باشه!!!
با تایمر2 دقیق تره!!! ولی از همه دقیق تر با همون ای سی که گفتمه!!
با عرض سلام.
اقا ابراهیم من یه برنامه ساعت ساختم با تایمر صفر تو بسکام کامپایل
میشه و درسته اما تو پروتیوس ارور میده نمیدونم از چیه بی زحمت یه نگاه
بهش بنداز ببین سر در میاری.یا علی