Pages

17.12.12

Program Counter sederhana ATmega16-Bascom




   1    $regfile = "m16def.dat"
    2    $crystal = 11059200

    3    Const Ticks = 5
    4    Dim Count As Byte , Kiri As Byte , I As Byte

    5    Config Timer0 = Counter , Edge = Falling
    6    Load Timer0 , Ticks

    7    On Timer0 Tes

    8    Config Portc = Output
    9    Kiri = &B00000001
    10  Reset Ddrb.0

    11  Enable Timer0
    12  Enable Interrupts

    13  Do
    14      Portc = 0
    15  Loop

    16  Tes:
    17      Load Timer0 , Ticks
    18      Gosub Main
    19  Return

    20  Main:
    21  For I = 1 To 8
    22      Portc = Kiri
    23      Waitms 200
    24      Rotate Kiri , Left , 1
    25  Next I
    26  Return

    27  End

Baris 1: deklarasi MCU yang digunakan, yaitu ATmega16
Baris 2: deklarasi nilai crystal yang digunakan, yaitu 11.059200 MHz
Baris 3: banyaknya sinyal external yang akan di hitung sebagai pencacah, yaitu 5
Baris 4: deklarasi variable yang digunakan pada program
Baris 5: configurasi mode timer0 difungsikan sebagai counter, pembacaan sinyal masukkan ketika falling atau ketika sinyal dari 1 ke 0
Baris 6: copy nilai ticks ke timer0 sebagai set value counter sampai 5
Baris 7: ketika ada interupsi pada timer0 program secara langsung pindah ke sub routine Tes
Baris 8: konfigurasi Portc sebagai output
Baris 9: mengisi variable kiri dengan $B00000001
Baris 10: reset portb.0
Baris 11: enable timer0 / mengaktifkan timer0
Baris 12: enable interrupts/ mengaktifkan interrupt
Baris 13-15: jika belum ada interrupt, program akan mengulangi secara terus menerus portc=0
Baris 16-19: program sub routine Tes, yaitu ketika sinyal yang dimasukkan telah mencapai 5 kali maka program beralih ke sub routine Main, kemudian return (kembali)
Baris 20-26: program sub routine Main yaitu setiap bit pada portc bergeser 1 bit ke kiri sebanyak 8 kali kemudian return (kembali ke program dimana program dilompati).
Baris 27: End

Pada program counter yang terpenting adalah pada saat menggunakan fungsi counter harus mengetahui interupsi vector yang harus di configurasi, seperti program diatas pada baris ke 3, 5, 6, 11, dan 12. Kemudian masukkan sinyal eksternal harus pada portb.0

No comments:

Post a Comment