Pages

17.12.12

Program Interrupt sederhana Atmega16-Bascom



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

    3    Dim I As Byte , Kiri As Byte
    4    Config Portc = Output
    5    Kiri = $b00000001
    6    Config Int0 = Falling
    7    Enable Interrupts
    8    Enable Int0
    9    On Int0 Tes

    10  Do
    11      Portc = 255
    12  Loop

    13  Tes:
    14    For I = 1 To 8
    15       Portc = Kiri
    16       Waitms 200
    17       Rotate Kiri , Left , 1
    18     Next I
    19  Return
    20  End


Baris 1: deklarasi MCU yang digunakan, yaitu ATmega16
Baris 2: deklarasi nilai crystal yang digunakan, yaitu 11.059200 MHz
Baris 3: deklarasi variable yang digunakan dalam program
Baris 4: konfigurasi portc=output
Baris 5: mengisi variable kiri= $b00000001
Baris 6: konfigurasi sinyal masukkan pada pin int0 pada saat tepi jatuh
Baris 7: enable interrupts / mengaktifkan vector interrupt
Baris 8: enable int0 / mengaktifkan int0
Baris 9: pada saat interrupt terjadi pada int0 program beralih ke sub routine Tes
Baris 10-12: main program jika tidak ada interrupt portc=255
Baris 13-19: program subroutine Tes, yaitu nilai portc = nilai pada variable kiri, kemudian nilai variable kiri di geser sebanyak 1 bit kekiri sebanyak 8 kali, kemudian return (kembali ke main program)
Baris 20: End

Pada program interrupt  hal-hal yang perlu diperhatikan adalah seperti program diatas pada baris 6, 7, 8, dan 9. Kemudian interrupt external dihubungkan pada int0 atau int1 tergantung pada penggunaan interrupt. Pada baris ke 6 terdapat 3 pilihan yaitu: low level, falling, rising untuk config int0. Low level berarti sinyal interrupt diterima jika sinyal terhubung ke ground, falling berarti sinyal interrupt yang diterima pada posisi tepi jatuh atau 1 ke 0, sedangkan rising berarti sinyal interrupt yang diterima pada posisi tepi naik atau 0 ke 1.

No comments:

Post a Comment