Translate

Cara membuat Interupt UART (SERIAL INT) BASCOM AVR

Cara membuat Interrupt UART (SERIAL INT)

          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


VIDEO HASILNYA






1 comment:

  1. bro gan, saya sudah coba untuk case, 1 -9 berjalan normal. tp untuk case 10 dst g direspon, mohon petunjuk, trms

    ReplyDelete