ايران ويج

نسخه‌ی کامل: راهنمایی درباره تایمر0و کانتر1
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
اقا من دارم از timer 0 وcounter1 برا یه کاری استفاده میکنم میخوام تایمر0 1ثانیه بشماره بعد به سراغ کانتر بره و ببینه تو این 1 ثانیه چند تا پالس اومده از سنسوری که counter داره اونو میشماره برنامم اینه مشکلی داره؟

$regfile = "m16def.dat"
$crystal = 8000000
Config Timer0 = Timer , Prescale = 1
Config Timer1 = Counter , Edge = Rising
Config Porta = Output
Dim X As Word
Enable Interrupts
Enable Timer0
Enable Ovf0
Do
Timer0 = 1230
On Ovfo Count
Loop

End
count:
X = 0
Counter1 = 0
Do
X = Counter1
Return
می شه لطفا اشکالات این برنامه رو بگید؟
از دستور
enable timer0
ایراد میگیره!!!!!!!!!
شما هم نوشتیEnable Timer0 هم نوشتی Enable Ovf0 باید فقط Enable Ovf0 رو بذاری.
من همیشه تو اینیشیال کردن رجیستر ها تو بیسکام مشکل داشتم به همین خاطر می رقتم تو ویزارد کدویژن تنظیمات رو انجام میدادم و کپی میکردم بعد تو بیسکام پیست می کردم :wink:
سلام
چه جوری میتونم این کار رو بکنم؟
جالبه
البته مشکلات دیگری هم داشت همه رو با هم نمی گه.
بعضی از فرمان ها تکرار شده بودند.
این برنامه خطایی ندارد.
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Timer0 = Timer , Prescale = 1
Config Timer1 = Counter , Edge = Rising
On Timer0 Count
Config Porta = Output
Dim X As Word

Enable Interrupts
Enable Timer0

Do
    Timer0 = 123
Loop



count:
    X = Counter1
Return
سلام
من می خوام با تایمر صفر 1 ثانیه بشمارم و کریستالمم هم حتما 8000000 باشه
چکار کنم؟
چرا شرایط را سخت می کنید؟ :roll:
تایمر صفر 8 بیت است!
دو + یک راه وجود دارد
استفاده از کریستال دوم که ویژه تایمر است و تنظیم اسیلاتور داخلی روی فرکانس 8M. مناسب ترین انتخاب که CPU بیش از 99 درصد آزاد است.
روش های دیگر به نحوه نوشتن برنامه مربوط است. که پیشنهاد نمی شود CPU حسابی درگیر حساب و کتاب می شود.
سلام
من میخوام با سه تا تایمر ها کار کنم با یکی 1 ثانیه بشمارم که فکر میکنم تایمر صفر مناسبه
با یکی تعداد پالس های که میاد رو بشمارم که چون ممکنه زیاد شه از تایمر 16 بیتی صفر استفاده میکنم
با دیگری هم پالس pwm درست کنم
در اصل میخوام سرعت چرخش یه موتور رو با سنسور هال اندازه بگیرم و نمایش بدم
در ضمن منظورتون از کریستال دوم چیه؟
من برنامه زیر رو با کانتر 1 جواب میگیرم اما با کانتر صفر نه چرا؟
برا کانتر 1 به پین t1 و برا کانتر 0 به پین t0 وصل میکنم
چرا جواب نمیده؟
$regfile = "m16def.dat"
$crystal = 8000000
Config Timer0 = Counter , Edge = Rising
Config Portd = Output
Enable Interrupts
Enable Timer0
Dim X As Word
Counter0 = 0
Do
X = Counter0
If X = 4 Then
Portd = &B11111111
End If
Loop
End
در بالا اشاره به تایمر صفر داشتم.
تایمر صفر 8 بیت است!
تایمر یک 16 بیت است!
word 16Bit
Byte 8bit

باید از Byte استفاده کنید.
:idea:

کد:
Dim X As Word
||
Dim X As Byte


خیلی خوبه که Code را قرار می دهید برای اینکه بشود به درستی آن را مطالعه کرد خوب از قالب زیر استفاده کنید.

کد:
[code]

code

[/code]
سلام
من میخوام با تایمر صفر که 8بیتی هست 1 ثانیه بشمارم چه پیشنهادی میکنید؟
میشه اگه ممکنه برنامه رو بنویسید؟با بسکام ؟
فکر بدی نیست انجام می دهم و در مقاله های سایت قرار می دهم.
اما برای کار شما پیشنهادم استفاده از کریستال دوم است. کریستال ساعت یا همان کریستال دوم به پایه های TOSC1,2 وصل می شود. و یکی از تایمر های 1 یا 0 را کنترل می کند. با یک کریستال 32768 و انتخاب تقسیم مناسب می شود 1 ثانیه را ساخت.
صفحه‌ها: 1 2