Pernahkan Anda mengalami kesulitan saat ada kejadian begini, misal ada sebuah led menyala berkedip kemudian Anda akan mengaksesnya dengan menggunakan perintah serial, maka saat itu Anda akan berfikir, bagaimana cara mengaksesnya ?, padahal kalau main program terdapat Do Loop sehingga program akan dieksekusi terus menerus tidak peduli ada input serial atau tidak, nah untuk permasalahan ini sebaiknya menggunakan interrupt UART atau nama lainnya interrupt untuk serial, seperti halnya perintah interrupt, jika ada data interrupt masuk maka mikrokontroller akan mengutamakan untuk mengakses data yang ada pada interrupt terlebih dahulu hingga selesai kemudian akan kembali ke program utama, berikut adalah contohnya yaitu dengan menggunakan sebuah tampilan LCD yang mana jika tidak ada serial masuk akan bertuliskan "NO DATA UART", namun jika ada serial masuk entah itu character "1" atau "2" maka akan terulis pada layar LCD "ADA DATA SERIAL 1" atau "ADA DATA SERIAL 2". begitu seterusnya. untuk skematik hardware dan program adalah seperti berikut.
a. Minimum System ATMega16
b. Serial RS232
c. Program BASCOM AVR
$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
On Urxc Getchar
Dim Wtime As Word
Dim Inchar As String * 1
Enable Interrupts
Enable Urxc
Cls
Cursor Off
Do
Upperline
Lcd "NO DATA UART"
Loop
Getchar:
Inchar = Inkey()
Select Case Inchar
Case "1" :
Cls
Upperline
Lcd "ada data masuk 1"
Wait 1
Cls
Case "2" :
Cls
Upperline
Lcd "ada data masuk 2"
Wait 1
Cls
End Select
Return
End
$crystal = 12000000
$baud = 9600
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
On Urxc Getchar
Dim Wtime As Word
Dim Inchar As String * 1
Enable Interrupts
Enable Urxc
Cls
Cursor Off
Do
Upperline
Lcd "NO DATA UART"
Loop
Getchar:
Inchar = Inkey()
Select Case Inchar
Case "1" :
Cls
Upperline
Lcd "ada data masuk 1"
Wait 1
Cls
Case "2" :
Cls
Upperline
Lcd "ada data masuk 2"
Wait 1
Cls
End Select
Return
End
VIDEO HASILNYA
bro gan, saya sudah coba untuk case, 1 -9 berjalan normal. tp untuk case 10 dst g direspon, mohon petunjuk, trms
ReplyDelete