Tutorial menggunakan Smart-AVR Basic
Bahasa Smart-AVR Basic adalah menggunakan bahasa basic
pada umumnya, tetapi tidak semua command bisa diterapkan, setidaknya dengan
bahasa yang sederhana ini dapat membantu pemula untuk belajar microcontroller.
Semua variable di Smart-AVR adalah 8bit (00H s/d FFH)
Software sangat sensitive !. Jangan menambah "space"
atau apapun di setiap akhir perintah.
Semua program ditulis dengan text editor biasa dengan
capslock aktif (huruf besar).
Input variable adalah variable atau register yang harus
di isi dengan data.
Output variable adalah variable atau register dengan
data yang ada di dalamnya
bisa diambil / dibaca.
Penting !!!
Di setiap akhir program harus diberi perintah percabangan,
supaya program
bisa berjalan continue.
Berikut adalah perintah - perintah yang digunakan SMART-AVR:
Tanda '
Adalah perintah untuk untuk memberi keterangan, tidak
ada pengaruh jika perintah ini dijalankan.
VARn
Adalah variable yang nilainya bisa berubah-ubah, dalam
SMART-AVR dibatasi hanya meliputi VAR0 s/d VAR45.
FOR VARn = a TO b dan NEXT VARn
Adalah perintah looping.
Dengan n = 0 sampai dengan 45, a dan b antara 0 sampai
dengan 255 untuk lebih jelasnya dapat dilihat di contoh program dibawah.
Syarat untuk perintah ini adalah jika nama variable sudah
digunakan dalam perintah ini tidak dapat digunakan lagi dalam perintah
yang sama, maksudnya jika VAR0 digunakan dalam perintah FOR NEXT dalam
program selanjutnya tidak bisa menggunakan VAR0 dalam perintah FOR NEXT
lagi.
Perintah - perintah percabangan:
GOTO XXX
Adalah perintah percabangan ke label XXX
GOSUB XXX dan RETURN
Adalah perintah percabangan subrutin ke label XXX.
Sedangkan RETURN digunakan untuk kembali ke bawah posisi
perintah GOSUB dijalankan. Perlu diperhatikan untuk menggunakan perintah
GOSUB harus di akhiri dengan perintah RETURN.
IF a = b THEN XXX
IF a < b THEN XXX
IF a > b THEN XXX
Adalah perintah - perintah percabangan bersyarat, a dan
b adalah variable data XXX adalah label. Lihat contoh untuk lebih jelasnya.
Perlu diingat penulisannya adalah persis seperti di atas.
Perintah - perintah matematika:
Didalam SMART-AVR perintah aritmatika yang bisa digunakan
adalah +, -, /, *, AND, OR, dan XOR.
Perintah matematika diatas boleh langsung digunakan dengan
syarat variable yang digunakan selebar 8bit, untuk variable yang lebih
lebar digunakan fungsi metematika yang akan dibahas dibawah.
Perintah - perintah READ
READ COUNTER
Adalah perintah untuk membaca external counter.
Counter adalah fasilitas untuk menghitung pulsa yang
masuk melalui port counter yang telah di sediakan Smart-AVR, dengan pulsa
high =5v low=0v.
Counter menghitung dari 0000H s/d FFFFH.
Output variable:
-
COUNTH sebagai counter high
-
COUNTL sebagai counter low
READ KEY
Adalah perintah untuk membaca keypad.
Dalam hal ini adalah pembacaan sekali penekanan keypad.
Output variable: KEY
hardware keypad:
keypad untuk Smart-AVR menggunakan system pembagi tegangan
yang dibaca oleh ADC ch.0, untuk jelasnya dapat dilihat dalam rangkaian
keypad diatas.
daftar nilai variable KEY jika keypad ditekan:
tombol 0 KEY = 0
-
tombol 1 KEY = 1
-
tombol 2 KEY = 2
-
tombol 3 KEY = 3
-
tombol 4 KEY = 4
-
tombol 5 KEY = 5
-
tombol 6 KEY = 6
-
tombol 7 KEY = 7
-
tombol 8 KEY = 8
-
tombol 9 KEY = 9
-
tombol A KEY = 10
-
tombol B KEY = 11
-
tombol C KEY = 12
-
tombol D KEY = 13
-
tombol E KEY = 14
-
tombol F KEY = 15
-
tombol tidak ditekan KEY = 255
READ I2C
Adalah perintah untuk membaca chip dengan standart bus
I2C system.
Bus dengan system I2C ini sangat menghemat tempat karena
akses ke perangkat
hanya menggunakan 2 jalur yaitu SDA dan SCL. Sebagai
contoh adalah perangkat
memory (eeprom kapasitas 8K byte), kalau menggunakan
system bus paralel
dibutuhkan IC dengan jumlah pin sekitar 28 pin (28C64),
tetapi kalau
menggunakan system bus I2C cukup menggunakan chip dengan
jumlah
pin = 8 (AT24C64). Adapun contoh perangkat yang menggunakan
system bus ini
adalah EEPROM (AT24Cxx), RTC (DS1307), ADC/DAC (PCF8591)
dan lain-lain.
Dalam perintah ini hanya membaca 1 data byte saja, maksudnya
setiap membaca
data selalu menuliskan variable input.
Format pembacaan I2C
- DEVICE ADDRESS - 1st ADDRESS
- 2nd ADDRESS - DATA
-
-
I2CDEV -
I2CAH -
I2CAL - I2CDAT
-
<-------------------------------
kirim ----------------------------><--- terima ---->
DEVICE ADDRESS = I2CDEV
1st ADDRESS = I2CAH
2nd ADDRESS = I2CAL
jika I2CCA = 1 maka hanya 2nd ADDRESS saja yang dikirim
ke chip
jika I2CCA = 2 maka 1st dan 2nd ADDRESS dikirim ke chip
DATA adalah variable yang telah dibaca dari perangkat
I2C
Input variable:
-
I2CDEV (I2C Device Address), lihat data sheet chip
-
I2CCA (I2C Control Address), 1 atau 2
-
I2CAH (I2C Address High)
-
I2CAL (I2C Address Low)
-
I2CEF (I2C Error Flag), I2CEF = 1 jika pembacaan error dan
0 jika pembacaan benar
Output variable: I2CDAT adalah data yang telah dibaca
dari perangkat I2C.
untuk lebih jelasnya dapat dilihat dalam contoh - contoh
program menggunakan chip - chip I2C (eeprom ,RTC, ADC/DAC) dibawah.
READ EEPROM
Adalah perintah untuk membaca data dari internal EEPROM
Smart-AVR
input / output variable:
-
EEPADHI (eeprom address high --> fix 0)
-
EEPADLO (eeprom address low 0 s/d 255)
-
EEPDATA (eeprom data 0 s/d 255)
READ AINx
x = 1 s/d 5 adalah perintah membaca analog input dengan
resolusi 10bit
output variable:
-
ADCH (msb data)
-
ADCL (lsb data)
Perintah - perintah WRITE
WRITE LCD
Adalah perintah untuk menulis 1 character ke LCD module.dengan
LOCATE untuk menentukan pada posisi mana character akan ditulis.
Input variable: LCDDATA
WRITE COUNTER
Adalah perintah untuk menulis data external counter.
Counter adalah fasilitas untuk menghitung pulsa yang
masuk melalui port counter yang telah di sediakan Smart-AVR, dengan pulsa
high =5v low=0v.
Counter menghitung dari 0000H s/d FFFFH.
Input variable:
-
COUNTH sebagai counter high
-
COUNTL sebagai counter low
WRITE I2C
Adalah perintah untuk menulis ke chip dengan standart
bus I2C system.
Dalam perintah ini hanya menulis 1 data byte saja, maksudnya
setiap menulis data selalu menuliskan variable input.
Format pembacaan I2C
- DEVICE ADDRESS - 1st ADDRESS
- 2nd ADDRESS - DATA
-
-
I2CDEV -
I2CAH -
I2CAL - I2CDAT
-
<---------------------------------------
kirim --------------------------------------->
DEVICE ADDRESS = I2CDEV
1st ADDRESS = I2CAH
2nd ADDRESS = I2CAL
jika I2CCA = 1 maka hanya 2nd ADDRESS saja yang dikirim
ke chip
jika I2CCA = 2 maka 1st dan 2nd ADDRESS dikirim ke chip
DATA adalah variable yang telah dibaca dari perangkat
I2C
Input variable:
-
I2CDEV (I2C Device Address), lihat data sheet chip
-
I2CCA (I2C Control Address), 1 atau 2
-
I2CAH (I2C Address High)
-
I2CAL (I2C Address Low)
-
I2CEF (I2C Error Flag), I2CEF = 1 jika pembacaan error dan
0 jika pembacaan benar
-
I2CDAT adalah data yang akan ditulis ke chip
untuk lebih jelasnya dapat dilihat dalam contoh program
WRITE EEPROM
Adalah perintah untuk menulis data dari internal EEPROM
Smart-AVR
input / output variable:
-
EEPADHI (eeprom address high --> fix 0)
-
EEPADLO (eeprom address low 0 s/d 255)
EEPDATA (eeprom data 0 s/d 255)
Perintah - perintah Function FN:
FN:HEX2BCD
Adalah fungsi untuk merubah hexa (16bit) ke BCD format.
Input variable: HHI dan HLO
Output variable: BCD65, BCD43, dan BCD21
Contoh:
Jika diinginkan merubah bilangan B49C hexa ke BCD format,
programnya adalah HHI = B4H (180dec.) HLO = 9CH (156dec.), programnya:
-
HHI = 180
HLO = 156
FN:HEX2BCD
-
-
-
Setelah program diatas dijalankan maka variable outputnya
adalah:
BCD21 = 36
BCD43 = 62
BCD65 = 04
FN:BCD2HEX
Adalah perintah untuk merubah 4 digit BCD ke hexa (16bit).
Input variable: BCDH dan BCDL
Output variable: HEXH dan HEXL
Contoh:
Jika diinginkan merubah bilangan 6853 decimal ke hexa,
programnya adalah
-
BCDH = 68
BCDL = 53
FN:BCD2HEX
-
-
-
Setelah program diatas dijalankan maka variable outputnya
adalah:
HEXH = 1A
HEXL = C5
FN:SWAP
Adalah perintah untuk menukar data pada posisi 4bit bawah
ke 4bit atas.
maksudnya, jika data biner xxxxyyyy setelah perintah
FN:SWAP akan menjadi
yyyyxxxx.
Input variable: SWAP
FN:KEY
Adalah fungsi membaca 4 digit angka dari keypad
Output variable: KEYH dan KEYL dalam BCD
Untuk fungsi ini perlu diperhatikan adalah penekanan
tombol akan disipan dalam bentuk BCD format, jadi perlu FN:BCD2HEX untuk
merubah ke format hexa.
Dalam menjalankan perintah ini program akan menunggu
sampai selesai memasukkan 4 digit angka dari keypad.
FN:DASC
Adalah fungsi untuk merubah 1 digit BCD ke dalam format
ASCII
Input variable: D2ASC
Output variable: D2ASC
LOCATE
Adalah fungsi untuk menentukan lokasi penulisan character
pada LCD module.
Input variable: LOCATE
nilai yang diisikan di variable LOCATE untuk menentukan
lokasi character yang akan ditulis.
Berikut adalah data LOCATE pada LCD module dengan jumlah
line dan character yang berbeda:
LCD 16 character 2 line
line1: 00
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
line2: 64
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
LCD 20 character 2 line
line1: 00
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
line2: 64
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
LCD 20 character 4 line
line1: 00
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
line2: 64
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
line3: 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
line4: 84
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
Untuk lokasi dari tiap LCD module yang lain dapat dilihat
dalam datasheet-nya.
CLRLCD
Adalah fungsi untuk menghapus seluruh tampilan yang tampil
di LCD module
dan lokasi kembali pada posisi 00 (line1)
DELAY
Adalah perintah penundaan dengan time base 100mS dan
factor delay di variable DELAY. Artinya jika DELAY = 5 akan menunda selama
5 x 100mS = 500mS
SDELAY
Adalah perintah delay pendek dengan time base 1mS dan
factor delay di variable SDELAY. Jika SDELAY = 80 akan menunda selama 80
x 1mS = 80mS.
Matematika 16 BIT
FN:SUM16
Adalah suatu fungsi matematika penjumlahan dengan lebar
data 16bit dengan format:
AH AL
+ BH BL = CH CL
Dari format di atas perlu diperhatikan bahwa semua variable
AH & AL, BH & BL, dan CH & CL adalah variable (hexadecimal)
berpasangan yang membentuk 16bit data.
Pada operasi fungsi ini hasilnya mempunyai lebar 16bit
untuk selebihnya terjadi nilai yang salah.
contoh:
jika
Z = X + Y
X = 1234
Y = 3456
maka Z = 4690
dalam SMART-AVR
penulisannya adalah sebagai berikut:
X = 1234 atau
04D2 Hex.
04 Hex ditulis
AH = 04
D2 Hex ditulis
AL = 210
Y = 1234 atau
0D80 Hex.
0D Hex ditulis
BH = 13
80 Hex ditulis
BL = 128
hasilnya adalah
di variable pasangan CH CL = 12 52 hex.
untuk jelasnya
dapat dilihat program CONTOH13 dibawah
Input variable:
AH AL dan
BH BL
Output variable:
CH CL
FN:SUB16
Adalah suatu fungsi matematika pengurangan dengan lebar
data 16bit dengan format:
AH AL
- BH BL = CH CL
syarat: AH AL > BH BL
Dari format di atas perlu diperhatikan bahwa semua variable
AH & AL, BH & BL, dan CH & CL adalah variable (hexadecimal)
berpasangan yang membentuk 16bit data.
Pada operasi fungsi ini hasilnya mempunyai lebar 16bit
untuk selebihnya terjadi nilai yang salah.
contoh:
jika
Z = X - Y
Y = 7281
X = 8596
maka Z = 1315
dalam SMART-AVR
penulisannya adalah sebagai berikut:
Y = 7281 atau
1C71 Hex.
1C Hex ditulis
BH = 28
71 Hex ditulis
BL = 113
X = 8596 atau
2194 Hex.
21 Hex ditulis
AH = 33
94 Hex ditulis
AL = 148
hasilnya adalah
di variable pasangan CH CL = 05 23 hex.
untuk jelasnya
dapat dilihat program CONTOH14 dibawah
Input variable:
AH AL dan
BH BL
Output variable:
CH CL
FN:MUL16
Adalah suatu fungsi matematika perkalian dengan lebar
data 16bit dengan format:
AH AL
* BH BL = DH DL CH CL
Dari format di atas perlu diperhatikan bahwa semua variable
AH & AL, BH & BL, adalah variable (hexadecimal) berpasangan yang
membentuk 16bit data dan CH CL DH DL adalah variable berpasangan 32bit.
Pada operasi fungsi ini hasilnya mempunyai lebar 32bit
untuk selebihnya terjadi nilai yang salah.
contoh:
jika
Z = X * Y
Y = 7281
X = 8596
maka C = 62587476
dalam SMART-AVR
penulisannya adalah sebagai berikut:
Y = 7281 atau
1C71 Hex.
1C Hex ditulis
BH = 28
71 Hex ditulis
BL = 113
X = 8596 atau
2194 Hex.
21 Hex ditulis
AH = 33
94 Hex ditulis
AL = 148
hasilnya adalah
di variable pasangan CH CL DH DL = 03 BB 02 54 hex.
untuk jelasnya
dapat dilihat program CONTOH16 dibawah
Input variable:
AH AL dan
BH BL
Output variable:
CH CL DH DL
FN:DIV16
Adalah suatu fungsi matematika pembagian dengan lebar
data 16bit dengan format:
AH AL
/ BH BL = CH CL sisa DH DL
syarat: AH AL > BH BL
Dari format di atas perlu diperhatikan bahwa semua variable
AH & AL, BH & BL, CH & CL, DH & DL adalah variable (hexadecimal)
berpasangan yang membentuk 16bit data. Hasil operasi ini adalah CH CL dan
sisanya DH DL. Jika AH AL < BH BL maka CH CL akan selalu 00 00 dan terjadi
sisa.
Pada operasi fungsi ini hasilnya mempunyai lebar 16bit
untuk selebihnya terjadi nilai yang salah.
contoh:
jika
Z = X / Y
Y = 7281
X = 8596
maka C = 1
sisa 1315
dalam SMART-AVR
penulisannya adalah sebagai berikut:
Y = 7281 atau
1C71 Hex.
1C Hex ditulis
BH = 28
71 Hex ditulis
BL = 113
X = 8596 atau
2194 Hex.
21 Hex ditulis
AH = 33
94 Hex ditulis
AL = 148
hasilnya adalah
di variable pasangan CH CL DH DL = 00 01 05 23 hex.
untuk jelasnya
dapat dilihat program CONTOH15 dibawah
Input variable:
AH AL dan
BH BL
Output variable:
CH CL DH DL
FN:CMP16
Adalah suatu fungsi perbandingan 16bit, formatnya:
AH AL dibandingkan dengan BH BL dengan hasil CL, dimana
kalau
-
AH AL > BH BL maka CL = 1
-
AH AL < BH BL maka CL = 0
-
AH AL = BH BL maka CL = 0
SET / RESET PORT
SET PXy
Adalah fungsi untuk menulis logic 1 ke PXy
CLR PXy
Adalah fungsi untuk menulis logic 0 ke PXy
PXy adalah PB0, PB1, PB2, PB3, PB4, PC0, PC1, PC2, PC3,
PC4, PC5, PD0, PD1, PD2, PD3, PD4, PD5, PD6 dan PD7.
TEXT Function
TEXT: data text
Adalah perintah untuk menulis text ke LCD module, dengan
data text max. 25 character.
Untuk menjalankan perintah ini yang perlu diperhatikan
adalah:
setting lokasi penulisan (LOCATE)
input variable: DATA TEXT
TIMER Function
Adalah suatu perintah untuk mengakses internal timer,
adapun perintah timer ini meliputi
TIMER RUN perintah menjalankan timer
TIMER STOP perintah untuk menghentikan timer
TIMER CLR perintah mereset variable timer sekaligus menghentikan
timer
input output variable: TIMH dan TIML
Perintah komunikasi:
READ COM
Adalah perintah untuk membaca communication port.
komunikasi data mempunyai format baudrate 4800 bps, 8bit
data, 1stop bit.
Jika perintah ini dijalankan, maka system akan menunggu
sampai ada masukkan
dari port serial, dengan format data dalam bilangan hexadecimal.
Output variable: RCOM
WRITE COM
Adalah perintah untuk menulis ke communication port.
Input variable: TCOM
SEND: data string
Adalah perintah untuk mengirim data string melalui serial
komunikasi port, dengan panjang data string maximum 25 character.
CPTEXT: data string
Adalah perintah untuk membandingkan data yang di terima
dari communication port dengan data string (selebar max.16 character).
Jika data yang diterima sama dengan data string maka variable CPFLAG =
1 dan 0 jika tidak sama.
Perintah 1-WIRE
1-WIRE command meliputi beberapa perintah, yang berfungsi
untuk berkomunikasi dengan perangkat – perangkan 1-wire buatan Dallas semiconductor.
Adapun perintah – perintah 1-wire adalah sebagai berikut:
FN:OWRESET, yang berfungsi untuk me-reset 1-wire device,
yang di ikuti oleh status bus ada device atau tidak yang ditunjukkan oleh
variable OWPRESENCE. Jika device ditemukan dalam bus maka OWPRESENCE =
1 dan 0 jika tidak.
FN:OWWRITE, yang berfungsi menulis 1byte data ke 1-wire
device
FN:OWREAD, yang berfungsi membaca 1byte data ke 1-wire
device
FN:OWSEARCH, yang berfungsi mencari dan memetakan ”64-BIT
LASERED ROM CODE” 1-wire device ke dalam internal rom table SMART-AVR
Basic. Dalam perintah ini juga menghasilkan informasi berapa banyak device
yang tersambung dalam 1-wire bus, informasi ini tersimpan dalam variable
OWAMOUNT.
FN:OWMATCROM, yang berfungsi untuk mengakses 1-wire yang
bersesuaian dengan 64bit ROM yang terkirim, dalam perintah ini harus di
tentukan device numbernya dulu dengan memberi nilai dalam variable OWNUMBER,
dalam SMART-AVR Basic nilai ini dibatasi dari 0 s/d 15 device saja.
|