Program di computer (visual basic) Private Sub Command1_Click() MSComm1.Output = "a" 'kirimkan nilai a ke port serial Private Sub Command2_Click() MSComm1.Output = "b" 'kirimkan nilai b ke port serial Private Sub Command3_Click() MSComm1.Output = "c" kirimkan nilai c ke port serial Private Sub Command4_Click() MSComm1.Output = "0" 'kirimkan nilai 0 ke port serial Private Sub Command5_Click() MSComm1.Output = "1" 'kirimkan nilai 1 ke port serial Private Sub Command6_Click() MSComm1.Output = "2" 'kirimkan nilai 2 ke port serial Private Sub Command7_Click() MSComm1.Output = "3" 'kirimkan nilai 3 ke port serial
Private Sub Command8_Click() MSComm1.Output = "4" kirimkan nilai 4 ke port serial Private Sub Command9_Click() MSComm1.Output = "5" 'kirimkan nilai 5 ke port serial Private Sub Form_Load() MSComm1.PortOpen = True MSComm1.DTREnable = True MSComm1.RTSEnable = True Timer1.Enabled = True ' buka komunikasi ke port serial ' aktifkan pengiriman data ' aktifkan pengiriman data ' aktifkan timer 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 If Label2.Caption = "1" Then
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 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 cjne a,#'a',cek_b ; bandingkan data pada alamat a apakah sama dengan nilai
acall isi sjmp loop a jika tidak sama lompat ke cek b ; panggil routine isi ; 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 cek_c: cjne a,#'c',cek_0 ; bandingkan data pada alamat a apakah sama dengan nilai c jika tidak sama lompat ke cek 0 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
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 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 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
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 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 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 cek_4: cjne a,#'4',cek_5 ; bandingkan data a = 4 jika sama panggil routive kosong, jika
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 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 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 ;----------------------------------------; kosong: acall status ; panggil routine status acall kirim ; panggil routive kirim ljmp loop ; kembali ke loop
kosongkan: setb p2.7 ; isi logika low ke P2.7 acall status ; panggil routine status acall kirim ; panggil routine kirim ;-------------------------------------------; isi: setb p2.6 ; isi logika high ke P2.6 acall status ; panggil routine status acall kirim ; panggil routine kirim ;------------------------------------------------; 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 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 data2: jb p1.2,data3 mov 70h,#'3' ;ambil data high P1.2 sampai selesai, jika tidak lompat ke data 3 ; isi nilia 3 ke alamat 70H data3:
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 data4: jb p1.0,data5 mov 70h,#'1' ;ambil data high P1.0 sampai selesai, jika tidak lompat ke data 5 ; isi nilia 1 ke alamat 70H data5: mov 70h,#'0' ; isi nilia 0 ke alamat 70H ;---------------------------------; kirim: mov sbuf,70h ;isi nilai 70H ke sbuf jnb ti,$ ; kirimdata sampai habis clr ti ;hentikan pengisian data acall tunda ;-----------------------------------; tunda: mov r7,#2 ; isi nilai 2 ke r7 tnd: mov r6,#255 ; isi nilai 255 ke r6 td: mov r5,#255 djnz r5,$ ; kurangi nilai r5 sampai 0
djnz r6,td ; kurang nilai r6 sampai kemudian balik ke routive td djnz r7,tnd ; kurangi nilai r7 kemudian balik ke routive td
DATA SERERIAL DAN PARAREL Data pararel (biner) Data heksa desimal Data serial 0000 00H 0001 01H 0010 02H 0011 03H 0100 04H 0101 05H 0110 06H 0111 07H 1000 08H 1001 09H 1010 0aH 1011 0Bh 1100 0cH 1101 0dH 1110 0eH 1111 0fH
CODE ASCII
KODE WARNA HTML
KODE WARNA HTML
GAMBAR RANGKAIAN LENGKAP