$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Config Portb.1 = Output
Dim Tim As Byte
'***********************************************************************
'config timer2 as timer
'AVR Timert2 is 8bit so (crystal/Prescale)/timer2 => (800000/1024)/256
Config Timer2 = Timer , Prescale = 1024
'***********************************************************************
'************************Interrup*************************************
On Timer2 Timer2isr
Enable Timer2
Enable Interrupts
'**********************************************************************
Do
If Tim > 100 Then
Toggle Portb.1
Tim = 0
End If
Loop
Timer2isr:
Incr Tim 'tim=tim+1
Return
این برنامه روش استفاده از تایمر 2 و اینتراپت اونو نشون میدن
پورت b پین یک رو روشن خاموش میکنه
بایت tim در روتین اینتراپت یکی یکی زیاد میشه
یک کم باهاش کار کن دستت میاد
'*****کانفیگ کردن تایمر دو**********
. بصورت سخت افزاری کلاک کریستال تقسیم بر پریاسیکل شده و وارد تایمر میشود نایمر هم هشت بیتی است که میشود عدد255 بنابراین داریم کریستال تقسیم بر پریاسکل حاصل تقسیم بر 256 . عدد بدست امده مبشود زمان رخ دادن یک تینتراپ تایمر و اجرای روتین اینتراپت تایمر
Config Timer2 = Timer , Prescale = 1024
در اینجا تعریف میکنیم که اینتراپت تایمر در یک روتین که در اینجا با لیبل تایمر2 ای اس ار نام گذاری شده اجرا شود
On Timer2 Timer2isr
در این خط اعلام میکنیم که میکرو اینتراپتهای تعریف شده را اجرا کند
Enable Interrupts
تایمر دو روشن
Enable Timer2
*************************************************
Do
برنامه اصلی خودت را اینجا بنویس
Loop
*************************************************
******************************************
Timer2isr:
اینجا روتین اینتراپپ اجرا میشود برنامه اینتراپت را اینجا بنویس
Return