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