1 $regfile = "m16def.dat"
2 $crystal = 11059200
3 Ddrb = 255
4 Portb = 255
5 Config Timer0 = Timer , Prescale = 1024
6 On Timer0 Tes
7 Enable Timer0
8 Enable Interrupts
9 Do
10 Loop
11 Tes:
12 Portb =
Not Portb
13 Return
14 End
Baris 1:
deklarasi MCU yang digunakan, yaitu ATmega16
Baris 2:
deklarasi nilai crystal yang digunakan, yaitu 11.059200 MHz
Baris 3: konfigurasi
portb=output
Baris 4:
mengaktifkan semua bit pada portb
Baris 5:
configurasi mode timer0 difungsikan sebagai Timer, dengan prescale = 1024
Baris 6: ketika
ada interupsi pada timer0 program secara langsung pindah ke sub routine Tes
Baris 7: enable
timer0 / mengaktifkan timer0
Baris 8: enable
interrupts/ mengaktifkan interrupt
Baris 9-10: tidak
ada program yang dijalankan
Baris 11-13:
program subroutine Tes, yaitu nilai portb diinverskan, kemudian return (kembali
pada program selanjutnya).
Baris 14: End
Pada program
timer yang terpenting adalah pada saat menggunakan fungsi timer harus
mengetahui interupsi vector yang harus di configurasi, seperti program diatas
pada baris ke 5, 7 dan 8. Timer0 adalah 8 bit timer dan 10 bit prescaler .
periode timer dapat dapat dihitung dengan menggunakan rumus seperti berikut:
Jika pada
program diatas prescale= 1024, Frekuensi Osc= 11059200, maka waktu penundaan
timer pada program diatas adalah T= 0.024 s
No comments:
Post a Comment