sekarang saya akan membahas bagaimana membuat database sederhana pada mikrokontroller.
ada beberapa cirikhas yang sering terjadi pada mikrokontroller yaitu
- biasanya ukuran SRAM (static RAM) hanya seperdelapan dari ukuran memory Flash
- ukuran memory flash hanya berkisar 1-128 KByte
- dapat disimpulkan bahwa ukuran SRAM hanya berkisar 128 Byte - 2 KByte
hal inilah yang sering manjadi kendala ketika membuat database pada mikrokontroller. memory SRAM yang kecil dan memory flash yang lambat. hal ini juga belum diperhitungkan mengenai penggunaan ruang untuk program memory pada kedua memory tersebut, sehingga ruang yang dapat digunakan menyusut sangat kecil.
namun sebelum melangkah lebih jauh, ada beberapa dasar yang perlu diketahui baik menggunakan bahasa assembly maupun bahasa C pada pemrogramannya.
1. database diletakkan di SRAM
keunggulannya : lebih cepat
kekurangannya : ruang penyimpanan relatif sangat kecil
misal data yang akan ditaruh yaitu ABCDEFh
* pada bahasa assembly
LDI YL, 45
LDI YH, 07
LDI R16,0xAB
ST Y+,R16
LDI R16,0xCD
ST Y+,R16
LDI R16,0xEF
ST Y+,R16
*pada bahasa C
- bentuk array of char
char data[3] ={0xAB,0xCD,0xEF};
- bentuk string
char *data = {"dfg"};
2. database diletakkan di memory flash
keunggulannya : ruang lebih besar
kekurangan : kecepatan lebih lambat
misal data yang akan ditaruh yaitu ABCDEFh
* pada bahasa assembly
- bentuk array of char
LDI ZL, 45
LDI ZH, F7
LDI R0,0xAB
STM Z+,R16
LDI R0,0xCD
STM Z+,R16
LDI R0,0xEF
STM Z+,R16
- bentuk string
.db data 0xAB,0xCD,0xEF,0
*pada bahasa C
- bentuk array of char
char flash data[3] ={0xAB,0xCD,0xEF};
- bentuk string
char flash *data = {"dfg"};
nah biar ga bingung, saya jelasin pake bahasa C aja ya, soalnya kalo pake bahasa assembly agak banyak, kalo requestnya banyak nanti saya akan buatkan menggunakan bahasa assembly pada posting tersendiri
cara paling mudah menuliskan database yaitu seperti ini:
pada contoh ini saya akan membuat tabel 4x8 dengan kriteria seperti ini : syarat setiap elemen database harus memiliki panjang karakter yang sama.
NIM | NAMA | PASS | ID |
111070008 | FARD | 123456 | 1234567890123456 |
611070002 | KEREN | 123456 | 2345678901234567 |
114070003 | AKU | 123456 | 3456789012345678 |
115070067 | AMPUN | 123456 | 4567890123456789 |
111080008 | FARD1 | 123456 | 5678901234567890 |
611080456 | WAWAH | 123456 | 6789012345678901 |
114080056 | DUNG | 123456 | 7890123456789012 |
115080023 | TUING | 123456 | 8902345678901234 |
char kolom[4]={0,10,18,25};
char flash *database [8]={
"111070008# FARD #123456#1234567890123456#",
"611070002# KEREN #123456#2345678901234567#",
"114070003# AKU #123456#3456789012345678#",
"115070067# AMPUN #123456#4567890123456789#",
"111080008# FARD1 #123456#5678901234567890#",
"611080456# WAWAH #123456#6789012345678901#",
"114080056# DUNG #123456#7890123456789012#",
"115080023# TUING #123456#8902345678901234#"};
pada contoh diatas database saya letakkan di flash memory terlihat pada kolom pertama saya memberi batas panjang karakter 9 karakter, kolom kedua 7 karakter, kolom ketiga 6 karakter, kolom keempat 16 karakter
cara mengakses baris pertama kolom pertama menggunakan *database[0]
cara mengakses baris ketiga kolom keempat menggunakan *(database[2]+25)
cara mengakses baris kedua kolom ketiga tinggal menggunakan *(database[1]+18)
untuk mengakses kolom pertama tambahkan 0, kolom kedua 10, kolom ketiga 18, kolom keempat 25
untuk mengakses baris pertama hanya lakukan pengaksesan pada array saja. hal ini dikarenakan peletakan database berdasarkan array of string. dan berhatikan database[i] artinya variabel tersebut menyimpan alamat dari string yang diletakkan pada baris [i+1].
jika ingin mengakases data pada kolom ke i dan baris ke j dapat dilakukan menggunakan
*(database[j-1]+kolom[i-1])
mungkin sekian yang dapat saya sampaikan
kalo ada saran, silahkan dikomen saja
thx
Wassalamu'alaykum wr wb
Fardhady HK Hanggara
Tidak ada komentar:
Posting Komentar