مهندس برنامه ات رو ببین !
ایراد داره !
حالا اینو تست کن و ببین چجوری کار می کنه :
کد php:
$regfile = "m16def.dat"
$crystal = 11059200
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
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تا سون سگمنت نمایش بده... فایل هگزشا بده من بریزم رو میکرو برم پی کار و زندگیم


فرمت ورودی به پورت سریالهم این ثابته
همیشه یک عدد صحیح 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
ظا هرا با استفاده از آورفلاو تایمر کار کرده.
الان چی شد ؟
درست شد مشکلت یا نه ؟
یا اینکه برنامشو بنویسیم !!