- Penjelasan Program
Dari blog diagram diatas maka dapat dijelaskan bahwa master akan melakukan perintah menunggu instruksi dari push bottom, apabila kita melakukan penekanan push buttom, misalnya kita menekan pina.0(Pb1) maka mikro pada master akan mengirimkan data 1 pada slave1 sehingga slave1 akan melakukan penyamplingan karena penekanan pada pina.0 merupakan instruksi untuk melakukan sampling data sampai 100 sampel, setelah melakukan penyamplingan sampai 100 maka slave akan berhenti. Pada penekanan pina.1(Pb2) maka mikro pada master akan mengirimkan data 3 pada slave1 sehingga slave1 akan melakukan pengiriman data – data yang telah disampel pada slave1 karena penekanan pada pina.0 itu merupakan instruksi untuk mengambil data pada slave1 dan mengirimkan data tersebut keMaster, setelah data – datanya dikirim kemaster maka kita dapat melakukan penampilan data pada virtual terminal dengan melakukan penekanan pada pina.4(Pb5). Dan instruksi ini berlaku juga untuk pina.2(Pb3) dan pina.3(Pb4) dimana instruksi ini untuk mengakses/mengaktifkan slave2 dan yang berbeda itu adalah pemberian kodenya dimana kode pada slave2 ini adalah 2, sedangkan pada slave1 adalah 1.
Untuk memisahkan pengaksesan antara slave dengan virtual terminal maka kita gunakan dua buah selector dimana selector yang digunakan itu adalah buffer74LS244. selector ini akan bekerja jika kita berikan nilai nol sebab buffer ini merupakan aktif low. Dari gambar program buffer pertama digunakan untuk mengakses / mengaktifkan slave1 maupun slave2 sedangkan untuk buffer kedua digunakan untuk mengakses/mengaktifkan virtual terminal.
Keterangan pada tombol:
1. pina.0(Pb1) : instruksi untuk melakukan sampling pada slave1
2. pina.1(Pb1) : instruksi untuk melakukan get data pada slave1
3. pina.2(Pb1) : instruksi untuk melakukan sampling pada slave2
4. pina.3(Pb1) : instruksi untuk melakukan get data pada slave2
5. pina.4(Pb1) : instruksi untuk menampilkan hasil penyamplingan pada virtual memori.
2. Blok Diagram
Program Master
$regfile = "m32def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 9600
‘ konfigurasi LCD
Config Lcdpin = 16 * 2
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Declare Sub Hasil()
‘
Config Portb.0 = Output
Config Pina.0 = Input
Config Pina.1 = Input
Config Pina.2 = Input
Config Pina.3 = Input
Config Pina.4 = Input
‘ Deklarasi Variabel
Dim A As Byte
Dim B(101) As Word
Dim C As Byte
Dim Oo(100) As Byte
‘Open COM for Virtual Terminal
Open "comd.1:9600,8,n,1" For Output As #3
Locate 1 , 5
Lcd "Tugas"
Locate 2 , 3
Lcd "MIKRO2"
‘Default c Data
C = 0
‘Mematikan Cursor LCD
Cursor Off
‘ Program utama
Do
‘Cek penekanan tombol
If Pina.0 = 1 Then
Cls
Locate 1 , 5
Lcd "Proses"
Locate 2 , 3
Lcd "Penyamplingan"
Portb.0 = 1
Waitms 10
A = 1
Print Chr(a);
Waitms 50
‘Instruksi ini merupakan proses untuk mengaktifkan slave1
Elseif Pina.1 = 1 Then
Cls
Locate 1 , 5
Lcd "Get"
Locate 2 , 3
Lcd "Data"
Portb.0 = 1
Waitms 10
A = 3
Print Chr(a);
For C = 1 To 100
Oo(c) = Waitkey()
Next C
Do
Loop Until Pina.4 = 1
Call Hasil()
‘Instruksi ini merupakan proses untuk mengambil data dari slave1 dan proses pengambilan data dari slave1 dilakukan sampai samplingan yang keseratus dan sampai menunggu instruksi untuk menampilkan data kevirtual dengan adanya penekanan pada tombol5 atau Pina.4.
Elseif Pina.2 = 1 Then
Cls
Locate 1 , 5
Lcd "Proses"
Locate 2 , 3
Lcd "Penyamplingan"
Portb.0 = 1
Waitms 10
A = 2
Print Chr(a);
Waitms 50
‘Instruksi ini merupakan proses untuk mengaktifkan slave2
Elseif Pina.3 = 1 Then
Cls
Locate 1 , 5
Lcd "Get"
Locate 2 , 3
Lcd "Data"
Portb.0 = 1
Waitms 10
A = 4
Print Chr(a);
For C = 1 To 100
Oo(c) = Waitkey()
Next C
Do
Loop Until Pina.4 = 1
Call Hasil()
‘Instruksi ini merupakan proses untuk mengambil data dari slave2 dan proses pengambilan data dari slave2 dilakukan sampai samplingan yang keseratus dan sampai menunggu instruksi untuk menampilkan data kevirtual yaitu dengan adanya penekanan pada tombol5 atau Pina.4.
Else
End If
Sub Hasil()
Portb.0 = 0
Dim L As Byte
For C = 1 To 100
L = Oo(c)
Print "data ke-" ; C ; "=" ; L ; Chr(13);
Next C
End Sub
‘instruksi untuk mengirim data kevirtual terminal
Slave1 dan Slave2
$regfile = "m32def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 9600
‘ konfigurasi LCD
Config Lcdpin = 16 * 2
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
‘Mengaktifkan ADC
Config Adc = Single , Prescaler = Auto , Reference = Avcc
‘Declarasi Variabel
Dim A As Word
Dim B(300) As Word
Dim C As Word
Dim D As Word
Dim F As Byte
‘Mengaktifkan ADC
Start Adc
Locate 1 , 5
Lcd "Tugas"
Locate 2 , 3
Lcd "MIKRO"
‘Default C data
C = 0
‘Mematikan cursor LCD
Cursor Off
‘Program utama
Do
‘Menunggu Instruksi
A = Waitkey()
If A = 1 Then
Cls
Locate 1 , 5
Lcd "proses"
Locate 2 , 3
Lcd "penyamplingan"
Waitms 100
Do
C = C + 1
D = Getadc(0)
B(c) = D / 4
Waitms 50
Cls
Locate 1 , 1
Lcd "data ke-" ; C
Locate 1 , 12
Lcd "=" ; B(c)
Waitms 100
Loop Until C = 100
‘Apabila A menerima karakter 1 maka slave1 ini akan melakukan proses penyamplingan data sampai 100.
Elseif A = 3 Then
Cls
For C = 1 To 100
F = B(c)
Print Chr(f);
Waitms 10
Next C
‘Apabila A menerima karakter 3 maka slave1 ini akan melakukan proses pengiriman data yang telah disampling sampai 100 kepada Master.
End If
End
4. Gambar pada proteus
1 comment:
Makasih..,, blog kamu sangat membantu saya dalam menyelesaikan TA...
thanks...
Post a Comment
Comment