Program di computer (visual basic)
Private Sub Command1_Click()
MSComm1.Output = "a" 'kirimkan nilai a ke port serial End Sub
Private Sub Command2_Click()
MSComm1.Output = "b" 'kirimkan nilai b ke port serial End Sub
Private Sub Command3_Click()
MSComm1.Output = "c" kirimkan nilai c ke port serial End Sub
Private Sub Command4_Click()
MSComm1.Output = "0" 'kirimkan nilai 0 ke port serial End Sub
Private Sub Command5_Click()
MSComm1.Output = "1" 'kirimkan nilai 1 ke port serial End Sub
Private Sub Command6_Click()
MSComm1.Output = "2" 'kirimkan nilai 2 ke port serial End Sub
Private Sub Command7_Click()
MSComm1.Output = "3" 'kirimkan nilai 3 ke port serial End Sub
Private Sub Command8_Click()
MSComm1.Output = "4" ‘kirimkan nilai 4 ke port serial End Sub
Private Sub Command9_Click()
MSComm1.Output = "5" 'kirimkan nilai 5 ke port serial End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True ' buka komunikasi ke port serial MSComm1.DTREnable = True ' aktifkan pengiriman data MSComm1.RTSEnable = True ' aktifkan pengiriman data Timer1.Enabled = True ' aktifkan timer
End Sub
Private Sub Timer1_Timer()
Label1.Caption = MSComm1.Input ' input serial dari mikro tampilkan ke label1 If Label1.Caption <> "" Then ' jika label 1 tidak kosong maka
Label2.Caption = Label1.Caption ' isi label 1 tampilkan ke label 2 End If
If Label2.Caption = "0" Then ' jika label 2 = 0 maka
Picture1.BackColor = &HFF0000 ' warna picture 1 = biru tua (&HFF0000 ) Picture2.BackColor = &HFFFF80 ' warna picture 2 = biru muda (&HFFFF80 ) Picture3.BackColor = &HFFFF80 ' warna picture 3 = biru muda (&HFFFF80 ) Picture4.BackColor = &HFFFF80 ' warna picture 4 = biru muda (&HFFFF80 ) Picture5.BackColor = &HFFFF80 ' warna picture 5 = biru muda (&HFFFF80 ) Picture6.BackColor = &HFFFF80 ' warna picture 6 = biru muda (&HFFFF80 ) End If
Picture1.BackColor = &HFF0000 ' warna picture 1 = biru tua (&HFF0000 ) Picture2.BackColor = &HFF0000 ' warna picture 2 = biru tua (&HFF0000 ) Picture3.BackColor = &HFFFF80 ' warna picture 3 = biru muda (&HFFFF80 ) Picture4.BackColor = &HFFFF80 ' warna picture 4 = biru muda (&HFFFF80 ) Picture5.BackColor = &HFFFF80 ' warna picture 5 = biru muda (&HFFFF80 ) Picture6.BackColor = &HFFFF80 ' warna picture 6 = biru muda (&HFFFF80 ) End If
If Label2.Caption = "2" Then
Picture1.BackColor = &HFF0000 ' warna picture 1 = biru tua (&HFF0000 ) Picture2.BackColor = &HFF0000 ' warna picture 2 = biru tua (&HFF0000 ) Picture3.BackColor = &HFF0000 ' warna picture 3 = biru tua (&HFF0000 ) Picture4.BackColor = &HFFFF80 ' warna picture 4 = biru muda (&HFFFF80 ) Picture5.BackColor = &HFFFF80 ' warna picture 5 = biru muda (&HFFFF80 ) Picture6.BackColor = &HFFFF80 ' warna picture 6 = biru muda (&HFFFF80 ) End If
If Label2.Caption = "3" Then
Picture1.BackColor = &HFF0000 ' warna picture 1 = biru tua (&HFF0000 ) Picture2.BackColor = &HFF0000 ' warna picture 2 = biru tua (&HFF0000 ) Picture3.BackColor = &HFF0000 ' warna picture 3 = biru tua (&HFF0000 ) Picture4.BackColor = &HFF0000 ' warna picture 4 = biru tua (&HFF0000 ) Picture5.BackColor = &HFFFF80 ' warna picture 5 = biru muda (&HFFFF80 )
Picture6.BackColor = &HFFFF80 ' warna picture 6 = biru muda (&HFFFF80 ) End If
If Label2.Caption = "4" Then
Picture1.BackColor = &HFF0000 ' warna picture 1 = biru tua (&HFF0000 ) Picture2.BackColor = &HFF0000 ' warna picture 2 = biru tua (&HFF0000 ) Picture3.BackColor = &HFF0000 ' warna picture 3 = biru tua (&HFF0000 ) Picture4.BackColor = &HFF0000 ' warna picture 4 = biru tua (&HFF0000 )
Picture5.BackColor = &HFF0000 ' warna picture 5 = biru tua (&HFF0000 ) Picture6.BackColor = &HFFFF80 ' warna picture 6 = biru muda (&HFFFF80 ) End If
If Label2.Caption = "5" Then
Picture1.BackColor = &HFF0000 ' warna picture 1 = biru tua (&HFF0000 ) Picture2.BackColor = &HFF0000 ' warna picture 2 = biru tua (&HFF0000 ) Picture3.BackColor = &HFF0000 ' warna picture 3 = biru tua (&HFF0000 ) Picture4.BackColor = &HFF0000 ' warna picture 4 = biru tua (&HFF0000 ) Picture5.BackColor = &HFF0000 ' warna picture 5 = biru tua (&HFF0000 ) Picture6.BackColor = &HFF0000 ' warna picture 6 = biru tua (&HFF0000 ) End If
End Sub
Program di mikrokontroller (Asembley)
MOV TMOD,#20H ; boutrate 9600 stop bit 1, data bit 8, star bit 1 MOV SCON,#50H ; timer mode
MOV TH1,#-3 ; seting supaya 9600 SETB TR1
mov p2,#00H ; isi P2 dengan nilai 0H mov 70h,#0 ; isi alamat 70H nilai 0
loop:
jnb ti,ke_kosong ; ambil data low sampai selesai, jika selesai lompat kekosong clr ti ; selesai/hentikan pembacaan data
mov a,sbuf ; kirim data sbuf ke ‘a’
‘a’ jika tidak sama lompat ke cek ‘b’ acall isi ; panggil routine isi
sjmp loop ; kembali ke loop
ke_kosong:
ljmp kosong ; lompat ke loop
cek_b:
cjne a,#'b',cek_c ; bandingkan data pada alamat ‘a’ apakah sama dengan nilai ‘b’ jika tidak sama lompat ke cek ‘c’
acall kosong ; panggil routine kosong sjmp loop ; kembali ke loop
cek_c:
cjne a,#'c',cek_0 ; bandingkan data pada alamat ‘a’ apakah sama dengan nilai ‘c’ jika tidak sama lompat ke cek ‘0’
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop
cek_0:
cjne a,#'0',cek_1 ; bandingkan data ‘a’ = 0 jika sama panggil routive kosong, jika tidak cek 1
cek_01:
acall kosongkan ; panggil routine kosongkan
jnb p1.0,cek_01 ; ambil data low pada P1.0 sampai habis, jika tidak habis cek. 01
clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop
cek_1:
cjne a,#'1',cek_2 ; bandingkan data ‘a’ = 1 jika sama panggil routive kosong, jika tidak cek 2
cek_11:
acall kosongkan ; panggil routive kosongkan
jnb p1.0,cek_11 ; ambil data low pada P1.0 sampai habis, jika tidak habis cek. 01
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop cek_12:
acall isi ; panggil routine isi
jb p1.0,cek_12 ; ambil data high pada P1.0 sampai habis, jika tidak habis cek.12
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop
cek_2:
cjne a,#'2',cek_3 ; bandingkan data ‘a’ = 2 jika sama panggil routive kosong, jika tidak cek 3
cek_21:
acall kosongkan ; panggil routine kosongkan
jnb p1.1,cek_21 ; ambil data low pada P1.1 sampai habis, jika tidak habis cek.21 clr p2.6 ; isi logika high ke P2.6
sjmp loop ; kembali ke loop cek_22:
acall isi ; panggil routine isi
jb p1.1,cek_22 ; ambil data high pada P1.1 sampai habis, jika tidak habis cek.22
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop
cek_3:
cjne a,#'3',cek_4 ; bandingkan data ‘a’ = 3 jika sama panggil routive kosong, jika tidak cek 4
cek_31:
acall kosongkan ; panggil routine kosongkan
jnb p1.2,cek_31 ; ambil data low pada P1.2 sampai habis, jika tidak habis cek.31
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop cek_32:
acall isi ; panggil routine isi
jb p1.2,cek_32 ; ambil data high pada P1.2 sampai habis, jika tidak habis cek.32
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop
cek_4:
tidak cek 5 cek_41:
acall kosongkan ; panggil routine kosongkan
jnb p1.3,cek_41 ; ambil data low pada P1.3 sampai habis, jika tidak habis cek.41
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop cek_42:
acall isi ; panggil routine isi
jb p1.3,cek_42 ; ambil data high pada P1.2 sampai habis, jika tidak habis cek.42
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop
cek_5:
cjne a,#'5',kosong ; bandingkan data ‘a’ = 5 jika sama panggil routive kosong cek_52:
acall isi ; panggil routine isi
jb p1.4,cek_52 ;ambil data high pada P1.4 sampai habis, jika tidak habis cek.52
clr p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 sjmp loop ; kembali ke loop
;---; kosong:
acall status ; panggil routine status acall kirim ; panggil routive kirim ljmp loop ; kembali ke loop
kosongkan:
clr p2.6 ; isi logika high ke P2.6 setb p2.7 ; isi logika low ke P2.7 acall status ; panggil routine status acall kirim ; panggil routine kirim ret
;---; isi:
setb p2.6 ; isi logika high ke P2.6 clr p2.7 ; isi logika low ke P2.7 acall status ; panggil routine status acall kirim ; panggil routine kirim ret
;---; status:
jb p1.4,data1 ; ambil data high P1.4 sampai selesai , jika tidak lompat ke data 1 mov 70h,#'5' ; isi nilia ‘5’ ke alamat 70H
ret
data1:
jb p1.3,data2 ;ambil data high P1.3 sampai selesai , jika tidak lompat ke data 2 mov 70h,#'4' ; isi nilia ‘4’ ke alamat 70H
ret
data2:
jb p1.2,data3 ;ambil data high P1.2 sampai selesai , jika tidak lompat ke data 3
mov 70h,#'3' ; isi nilia ‘3’ ke alamat 70H ret
jb p1.1,data4 ;ambil data high P1.1 sampai selesai , jika tidak lompat ke data 4
mov 70h,#'2' ; isi nilia ‘2’ ke alamat 70H ret
data4:
jb p1.0,data5 ;ambil data high P1.0 sampai selesai , jika tidak lompat ke data 5
mov 70h,#'1' ; isi nilia ‘1’ ke alamat 70H ret
data5:
mov 70h,#'0' ; isi nilia ‘0’ ke alamat 70H ret
;---; kirim:
mov sbuf,70h ;isi nilai 70H ke sbuf jnb ti,$ ; kirimdata sampai habis clr ti ;hentikan pengisian data acall tunda
ret
;---; tunda:
mov r7,#2 ; isi nilai 2 ke r7 tnd:
mov r6,#255 ; isi nilai 255 ke r6 td:
mov r5,#255
djnz r6,td ; kurang nilai r6 sampai kemudian balik ke routive ‘td’ djnz r7,tnd ; kurangi nilai r7 kemudian balik ke routive td