Pages

17.12.12

Program Timer sederhana Atmega16-Bascom



      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