ايران ويج

نسخه‌ی کامل: اشکال با وقفه پورت سریال
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
مهندس برنامه ات رو ببین !
ایراد داره !

حالا اینو تست کن و ببین چجوری کار می کنه :

کد php:
$regfile "m16def.dat"
$crystal 11059200

Config Lcdpin 
Pin Db4 Porta.3 Db5 Porta.4 Db6 Porta.5 Db7 Porta.6 Rs Porta.0 Porta.2
Config Lcd 
16 2

Enable Interrupts
Config Timer1 
Timer Prescale 64
On Timer0 Scan
Enable Timer1
Start Timer1

Dim Si 
As Word

Do
    
Si Si 1
    waitms 500
Loop


Scan
:
    
Cls
    Lcd Si
Return 
اصلا قسمت Scan اجرا نمیشه :(

mega16 دارم کار میکنم.

پیوست » فیوزبیتهای من اینطوریه ، ربطی نداره ؟
یک موردی ، شاید کمک کنه ،توی پروتئوس درست کار میکنه ولی توی عمل هیچ ظاهرا نه :(
یه سوال :

فیوزببیت ها تو PROGISP چجوریه ؟

منظورم صفر و یکشون هستش که مثل بسکام نات شده یا نه ؟؟
( تو هاتل که خودشه )

الان پورت سی واست کار می کنه ؟؟؟
(۱۱-خرداد-۱۳۸۹, ۲۲:۰۸:۱۶)t3r!p3000 نوشته است: [ -> ]یه سوال :

فیوزببیت ها تو PROGISP چجوریه ؟

منظورم صفر و یکشون هستش که مثل بسکام نات شده یا نه ؟؟
( تو هاتل که خودشه )
تنها چیزی که از فیوزبیتها میدونم همون عکسیه که توی دوتاپست قبل ضمیمه کردم :)

بعله پورت C کار میکنه

حالا مشکلاتم شده 2تا
اگه تایمر0م کار کنه ، حلقه لوپم دیگه کار نمیکنه

---> این شکلک کندن موی سر به تعداد هوارتا....
مهندس پس فیوزبیت هات اشتباه هستش !!!

واسه کریستال خارجی با اون فرکانس تیک تمام فیوزبیت های CKCEL رو بردار !
واسه یه مگ داخلی به جز CKSEL0 بقیه تیک داشته باشن !!!!
و .... !!!

مهندس برنامتو بذار !
احتمالا تو وقفه تایمر یه کاری کردی که به دستور RETURN نمیرسه تا برگرده به حلقه اصلی برنامه !!!!
2خط برنامه که بیشتر ننوشتم :) چیا بزارم دیگه... توی do loop مقدار را اضافه میکنم
توی تایمر صفر نمایش میخوام بدم
عوضی این اذیت کردنا برو خودت تست کن ببین من چه گیری کردم :(((

اصلن ولش کن ... غلط کردم... بیخیال .... دیونه شدم...

اقا یه برنامه برا من بنویس که هر مقداری را از پورت سریال خوند روی 4تا سون سگمنت نمایش بده... فایل هگزشا بده من بریزم رو میکرو برم پی کار و زندگیمConfusedConfused
فرمت ورودی به پورت سریالهم این ثابته

کد:
@123.4#
همیشه یک عدد صحیح 3 کاراکتری + یک عدد ممیز ( . ) و یک رقم اعشار.
کاراکترهای @ و # به عنوان کاراکترهای کنترلی در اول و آخر مقدار ورودی در نظر گرفتم
چون بادریتم 1200 هست یه 1% خطا دارم گفتم اینطوری دیگه مشکلشو خطای بادریت 1200 را هم نداشته باشم.

برنامه تست برای ارسال مقادیر به پورت سریال هم داشته باش برای تست:
کد:
$regfile = "m16def.dat"
$crystal = 11059200
'$crystal = 8000000
$baud = 1200

Dim S As String * 7
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.4 , Db6 = Porta.5 , Db7 = Porta.6 , Rs = Porta.0 , E = Porta.2
Config Lcd = 16 * 2

Config Portd.6 = Output


Do
Set Portd.6
Print "@001.3#"
Cls : Lcd "@136.0#"
Wait 2
Print "@123.4#"
Cls : Lcd "@123.4#"
Wait 3
Print "@085.5#"
Cls : Lcd "@085.5#"
Wait 2
Print "432.1"
Cls : Lcd "432.1"
Wait 3
Reset Portd.6

Print "@085.5#"
Cls : Lcd "@085.5#"
Wait 2
Print "95959595"
Cls : Lcd "95959595"
Wait 2




Loop

End
مشکل تخمیتخیلیعجیبی بود
با استفاده از یکی از مثالهای خود باسکام ( بیشرف نمیدونم چرا مارکشون کرده بود) مشکلات اسلام و مسلمین حل شد :)
کد:
'Configute the timer to use the clock divided by 1024

Config Timer0 = Timer , Prescale = 1024



'Define the ISR handler

On Ovf0 Tim0_isr

'you may also use TIMER0 for OVF0, it is the same



Enable Timer0                                               ' enable the timer interrupt

Enable Interrupts                                           'allow interrupts to occur

Do

  'your program goes here

Loop



'the following code is executed when the timer rolls over

Tim0_isr:

Print "*";

Return



')

End
ظا هرا با استفاده از آورفلاو تایمر کار کرده.
الان چی شد ؟

درست شد مشکلت یا نه ؟

یا اینکه برنامشو بنویسیم !!
(۱۳-خرداد-۱۳۸۹, ۰۰:۲۹:۴۲)t3r!p3000 نوشته است: [ -> ]الان چی شد ؟
درست شد مشکلت یا نه ؟
یا اینکه برنامشو بنویسیم !!

حلیده شد :)
تشکرات عالی :)
صفحه‌ها: 1 2