Posted by: rezutopia | July 15, 2009

SIMULASI SISTEM PEMBELIAN BBM MENGGUNAKAN AT89S51 DENGAN DELPHI 7 – MYSQL (PART II : KOMUNIKASI SERIAL)

di Part II judul TA ini saya postingkan cara komunikasi serial secara mudah dari Mikrokontroler anda ke program yang telah di buat menggunakan Borland Delphi 7.0

Di program ini kita akan mencoba mengirimkan perintah dari aplikasi yang telah dibuat untuk menghidupkan dan mematikan LED yang ada di mikrokontroler

Langkah – langkah

  1. Siapkan mikrokontroler anda ( meliputi : downloader + rangkaian LED yang tersambung pada P0 mikro + kabel data serial yang menghubungkan komputer dengan mikro sebagai jalur komunikasi )
  2. ketikkan program ini pada editor anda

org 0000h
    jmp main

org 0023h
    jmp serint

org 0100h
main:
     mov TMOD,#20h
     mov TH1,#0fdh
     mov scon,#50h
     setb TR1

     mov p2,#00000000b

mulai:
      setb ea
      setb es
      jmp mulai

serint:
       jb RI,RCV
       reti

RCV:
    mov A,SBUF
    CLR RI

lampu_a:
     cjne A,#31h,lampu_b
     mov p2,#03h
     mov SBUF,A
     reti

lampu_b:
        cjne A,#32h,lampu_c
        mov p2,#07h
        mov SBUF,A
        reti
lampu_c:
        cjne A,#33h,lampu_d
        mov p2,#0Fh
        mov SBUF,A
        reti
lampu_d:
        cjne A,#34h,lampu_e
        mov p2,#1Fh
        mov SBUF,A
        reti
lampu_e:
        cjne A,#35h,default
        mov p2,#00h
        mov SBUF,A
        reti
default:
        mov p2,#00000000b
        mov sbuf,A
        reti
end 

3.  Compile program tersebut menggunakan compiler untuk keluarga MCS51.

4. Download file hex program yang telah dibuat

untuk persiapan pembuatan aplikasi Delphi 7.0

1. download komponen TCOMPort by Dejan Crnila

2. install komponen

3. gunakan komponen ComPort

4. Setting penggunaan komponen di Object Inspector Comport ( setting baudrate,  letak Port, dll )

5. Buat 5 tombol. Untuk procedure masing2 tombol :

ComPort1.Write(‘1’); –> untuk tombol ke satu

ComPort1.Write(‘2’); –> untuk tombol ke dua

ComPort1.Write(‘3’); –> untuk tombol ke tiga dst

pastikan mikro anda berada pada port yang benar dengan xtal 11,059 MHz dan baudratenya 1200.  Run program aplikasi delphi, let see what happen…..


Responses

  1. unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, CPort, StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    ComPort1: TComPort;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    comport1.Write(‘1’);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    comport2.Write(‘2’);
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    comport3.Write(‘3’);
    end;

    procedure TForm1.Button4Click(Sender: TObject);
    begin
    comport4.Write(‘4’);
    end;

    procedure TForm1.Button5Click(Sender: TObject);
    begin
    comport5.Write(‘5’);
    end;

    end.

    setelah saya RUN hasilnya

    Build
    [Error] Unit1.pas(37): Not enough actual parameters
    [Error] Unit1.pas(42): Undeclared identifier: ‘comport2’
    [Error] Unit1.pas(47): Undeclared identifier: ‘comport3’
    [Error] Unit1.pas(52): Undeclared identifier: ‘comport4’
    [Error] Unit1.pas(57): Undeclared identifier: ‘comport5’
    [Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’

    tolong dikoreksi mas,trims

    • bukan comport1, comport2, comport3 dst. tapi comport1 dengan write yang berbeda.

      comport1.write(‘1’);

      comport1.write(‘2’);
      dst

      sekedar info …. saya mbak, bukan mas. 😀

  2. ooo… sorrry mbak,hehehe…
    uda sy coba lagi

    comport1.write(’1′);

    comport1.write(’2′);

    comport1.write(’3′);

    comport1.write(’4′);
    comport1.write(’5′);

    setelah RUN

    Not enough actual parameters

    klo pake MSComm1 pemrogramannya gimana mbak..?
    trus klo mengirim alamat biner dari delphi 7 ke at89s51 gimana mbak?
    misalnya gini mbak :

    MSComm1.Port Output:=chr(00000001);
    pemrograman di mikronya agar bisa menerima alamat 00000001 gimana mbak?

    tolong mbak buatkan contoh buat saya ya mbak….?trimsss…

    • kalo boleh tolong ceritain keadaan mikro ma kompi anda …..

      • trims mbak…?
        mikro sy pake AT89s51,aplikasi delphi 7, xp2,downloader dt-hiq innovative,sy pake MSComm port ,..

        skarang sudah hampir beres mbak..?

        tapi adalagi problem yaitu

        mengirim data dari mikro ke pc,itu yg saya blm dapet..?
        mbak bisa bantu kah…?

      • Kalo saya kemaren ngirim data dari keypad ke aplikasi yang saya buat pake Delphi dengan komponen TCommport nya Dejan Crnila.

        di mikronya sendiri ada keypad buat inputan, dan ada satu switch yang fungsinya buat ngaktifin interupsi, agar data yang di accumulator dikirim ke buffer.
        kelemahan program yang saya bikin(maklum amatir) input harus tiap satu kali. jadi satu digit di keypad di tekan, switch kirim di tekan satu kali juga. jadi kalo mau ngirim 5 digit berarti switch juga harus di tekan switch kirim tiap satu digitnya.

        seting :
        keypad di port 0
        Switch pengirim di port 3.3

        poin equ 7eh

        org 000h
        jmp main

        org 0003h
        jmp switch ;untuk menjalankan interupsi pengiriman data

        org 00bh
        ljmp bounc

        org 0023h
        ljmp baca ;membaca data dari komputer ke mikro

        org

        org 100h
        main:
        call init_sr
        mov ie,#85h ;10000101 > mengaktifkan semua sumber interupsi & mengaktifkan p3.3 sebagai interupsi external
        mov ip,#02h
        setb ex0
        setb ex1
        clr it0
        clr it1

        mov r2,#4

        keypad:
        setb ea
        setb es
        clr p0.0
        setb p0.1
        setb p0.2
        setb p0.3
        jb p0.7,key1
        mov poin,#41h
        lcall simpan
        sjmp keypad
        key1:
        jb p0.6, key2
        mov poin,#033h
        lcall simpan
        sjmp keypad
        key2:
        jb p0.5,key3
        mov poin,#032h
        lcall simpan
        sjmp keypad
        key3:
        jb p0.4,key4
        mov poin,#031h
        lcall simpan
        sjmp keypad
        key4:
        clr p0.1
        setb p0.0
        setb p0.2
        setb p0.3
        jb p0.7,key5
        mov poin,#42h
        lcall simpan
        sjmp keypad
        key5:
        jb p0.6,key6
        mov poin,#36h
        lcall simpan
        sjmp keypad
        key6:
        jb p0.5,key7
        mov poin,#35h
        lcall simpan
        sjmp keypad
        key7:
        jb p0.4,key8
        mov poin,#34h
        lcall simpan
        sjmp keypad
        key8:
        clr p0.2
        setb p0.1
        setb p0.3
        setb p0.0
        jb p0.7,key9
        mov poin,#43h
        lcall simpan
        ljmp keypad
        key9:
        jb p0.6,key10
        mov poin,#39h
        lcall simpan
        ljmp keypad
        key10:
        jb p0.5,key11
        mov poin,#38h
        lcall simpan
        ljmp keypad
        key11:
        jb p0.4,key12
        mov poin,#37h
        lcall simpan
        ljmp keypad
        key12:
        clr p0.3
        setb p0.0
        setb p0.1
        setb p0.2
        jb p0.7,key13
        mov poin,#44h
        lcall simpan
        ljmp keypad
        key13:
        jb p0.6,key14
        mov poin,#023h
        lcall simpan
        ljmp keypad
        key14:
        jb p0.5,key15
        mov poin,#030h
        lcall simpan
        ljmp keypad
        key15:
        jb p0.4,key16
        mov poin,#2ah
        lcall simpan
        ljmp keypad
        key16:
        ljmp keypad

        simpan:
        mov 71h,poin
        ret

        switch:
        mov r7,#2
        setb tf0
        setb et0
        reti

        bounc:
        clr tr0
        djnz r7,more
        clr ex0
        clr ex1

        call kirim
        clr et0
        ljmp finout

        more:
        mov th0,#high(-50000)
        mov tl0,#low(-50000)
        setb tr0

        finout:
        setb ex0
        setb ex1
        reti

        init_sr:
        mov scon,#01000000b ;mengaktifkan mode 1(8-bit UART) untuk mengaktifkan mode pengiriman dan atau peneriman data
        mov Tmod,#00100000b
        mov th1,#0e8h
        mov pcon,#0h
        setb tr1
        ret

        msnd:
        clr Ti
        mov sbuf,a

        tt: jnb ti,tt
        clr ti
        ret
        clr ti
        ret

        kirim:
        mov a,#71h
        call msnd
        ret
        end

  3. oke mbak… trims ya.. tak cobae utak-atik program yang mbak buat,nanti hasilnya tak laporkan ….

    • Kalo bisa di utak atik jadi tambah lengkap. sory … itu bikinan amatir heheheheheeeeee
      Kalo bisa di perbaiki, ntar ilmunya bagi2 ke aku juga . 🙂

  4. Programmer 2.0 Copyright (2003-2006) U-2 Technologies

    1 $MOD52
    2 seting :
    ****——————————-^
    ****ERROR #23: Illegal or missing directive
    3 keypad di port 0
    ****——————————-^
    ****ERROR #23: Illegal or missing directive
    4 Switch pengirim di port 3.3
    ****——————————-^
    ****ERROR #23: Illegal or missing directive
    5
    007E 6 poin equ 7eh
    7
    0000 8 org 000h
    0000 020100 9 jmp main
    10
    0003 11 org 0003h
    0003 0201F6 12 jmp switch ;untuk menjalankan interupsi pengiriman data
    13
    000B 14 org 00bh
    000B 0201FD 15 ljmp bounc
    16
    0023 17 org 0023h
    0023 020000 18 ljmp baca ;membaca data dari komputer ke mikro
    ****—————————–^
    ****ERROR #2: Undefined symbol
    19
    0000 20 org
    ****—————————^
    ****ERROR #10: Illegal or missing expression
    21
    0100 22 org 100h
    0100 23 main:
    0100 12021A 24 call init_sr
    0103 75A885 25 mov ie,#85h ;10000101 > mengaktifkan semua sumber interupsi & mengaktifkan p3.3 sebagai inte
    rupsi external
    0106 75B802 26 mov ip,#02h
    0109 D2A8 27 setb ex0
    010B D2AA 28 setb ex1
    010D C288 29 clr it0
    010F C28A 30 clr it1
    31
    0111 7A04 32 mov r2,#4
    33
    0113 34 keypad:
    0113 D2AF 35 setb ea
    0115 D2AC 36 setb es
    0117 C280 37 clr p0.0
    0119 D281 38 setb p0.1
    011B D282 39 setb p0.2
    011D D283 40 setb p0.3
    011F 208708 41 jb p0.7,key1
    0122 757E41 42 mov poin,#41h
    0125 1201F2 43 lcall simpan
    0128 80E9 44 sjmp keypad
    012A 45 key1:
    012A 208608 46 jb p0.6, key2
    012D 757E33 47 mov poin,#033h
    WWWINE^1 PAGE 2

    0130 1201F2 48 lcall simpan
    0133 80DE 49 sjmp keypad
    0135 50 key2:
    0135 208508 51 jb p0.5,key3
    0138 757E32 52 mov poin,#032h
    013B 1201F2 53 lcall simpan
    013E 80D3 54 sjmp keypad
    0140 55 key3:
    0140 208408 56 jb p0.4,key4
    0143 757E31 57 mov poin,#031h
    0146 1201F2 58 lcall simpan
    0149 80C8 59 sjmp keypad
    014B 60 key4:
    014B C281 61 clr p0.1
    014D D280 62 setb p0.0
    014F D282 63 setb p0.2
    0151 D283 64 setb p0.3
    0153 208708 65 jb p0.7,key5
    0156 757E42 66 mov poin,#42h
    0159 1201F2 67 lcall simpan
    015C 80B5 68 sjmp keypad
    015E 69 key5:
    015E 208608 70 jb p0.6,key6
    0161 757E36 71 mov poin,#36h
    0164 1201F2 72 lcall simpan
    0167 80AA 73 sjmp keypad
    0169 74 key6:
    0169 208508 75 jb p0.5,key7
    016C 757E35 76 mov poin,#35h
    016F 1201F2 77 lcall simpan
    0172 809F 78 sjmp keypad
    0174 79 key7:
    0174 208408 80 jb p0.4,key8
    0177 757E34 81 mov poin,#34h
    017A 1201F2 82 lcall simpan
    017D 8094 83 sjmp keypad
    017F 84 key8:
    017F C282 85 clr p0.2
    0181 D281 86 setb p0.1
    0183 D283 87 setb p0.3
    0185 D280 88 setb p0.0
    0187 208709 89 jb p0.7,key9
    018A 757E43 90 mov poin,#43h
    018D 1201F2 91 lcall simpan
    0190 020113 92 ljmp keypad
    0193 93 key9:
    0193 208609 94 jb p0.6,key10
    0196 757E39 95 mov poin,#39h
    0199 1201F2 96 lcall simpan
    019C 020113 97 ljmp keypad
    019F 98 key10:
    019F 208509 99 jb p0.5,key11
    01A2 757E38 100 mov poin,#38h
    01A5 1201F2 101 lcall simpan
    01A8 020113 102 ljmp keypad
    01AB 103 key11:
    01AB 208409 104 jb p0.4,key12
    01AE 757E37 105 mov poin,#37h
    WWWINE^1 PAGE 3

    01B1 1201F2 106 lcall simpan
    01B4 020113 107 ljmp keypad
    01B7 108 key12:
    01B7 C283 109 clr p0.3
    01B9 D280 110 setb p0.0
    01BB D281 111 setb p0.1
    01BD D282 112 setb p0.2
    01BF 208709 113 jb p0.7,key13
    01C2 757E44 114 mov poin,#44h
    01C5 1201F2 115 lcall simpan
    01C8 020113 116 ljmp keypad
    01CB 117 key13:
    01CB 208609 118 jb p0.6,key14
    01CE 757E23 119 mov poin,#023h
    01D1 1201F2 120 lcall simpan
    01D4 020113 121 ljmp keypad
    01D7 122 key14:
    01D7 208509 123 jb p0.5,key15
    01DA 757E30 124 mov poin,#030h
    01DD 1201F2 125 lcall simpan
    01E0 020113 126 ljmp keypad
    01E3 127 key15:
    01E3 208409 128 jb p0.4,key16
    01E6 757E2A 129 mov poin,#2ah
    01E9 1201F2 130 lcall simpan
    01EC 020113 131 ljmp keypad
    01EF 132 key16:
    01EF 020113 133 ljmp keypad
    134
    01F2 135 simpan:
    01F2 857E71 136 mov 71h,poin
    01F5 22 137 ret
    138
    01F6 139 switch:
    01F6 7F02 140 mov r7,#2
    01F8 D28D 141 setb tf0
    01FA D2A9 142 setb et0
    01FC 32 143 reti
    144
    01FD 145 bounc:
    01FD C28C 146 clr tr0
    01FF DF0C 147 djnz r7,more
    0201 C2A8 148 clr ex0
    0203 C2AA 149 clr ex1
    150
    0205 120236 151 call kirim
    0208 C2A9 152 clr et0
    020A 020215 153 ljmp finout
    154
    020D 155 more:
    020D 758C3C 156 mov th0,#high(-50000)
    0210 758AB0 157 mov tl0,#low(-50000)
    0213 D28C 158 setb tr0
    159
    0215 160 finout:
    0215 D2A8 161 setb ex0
    0217 D2AA 162 setb ex1
    0219 32 163 reti
    WWWINE^1 PAGE 4

    164
    021A 165 init_sr:
    021A 759840 166 mov scon,#01000000b ;mengaktifkan mode 1(8-bit UART) untuk mengaktifkan mode pengiriman dan
    atau peneriman data
    021D 758920 167 mov Tmod,#00100000b
    0220 758DE8 168 mov th1,#0e8h
    0223 758700 169 mov pcon,#0h
    0226 D28E 170 setb tr1
    0228 22 171 ret
    172
    0229 173 msnd:
    0229 C299 174 clr Ti
    022B F599 175 mov sbuf,a
    176
    022D 3099FD 177 tt: jnb ti,tt
    0230 C299 178 clr ti
    0232 22 179 ret
    0233 C299 180 clr ti
    0235 22 181 ret
    182
    0236 183 kirim:
    0236 7471 184 mov a,#71h
    0238 5129 185 call msnd
    023A 22 186 ret
    187 end

    VERSION 1.2h ASSEMBLY COMPLETE, 5 ERRORS FOUND

    ERROR SUMMARY:
    Line #2, ERROR #23: Illegal or missing directive
    Line #3, ERROR #23: Illegal or missing directive
    Line #4, ERROR #23: Illegal or missing directive
    Line #18, ERROR #2: Undefined symbol
    Line #20, ERROR #10: Illegal or missing expression
    WWWINE^1 PAGE 5

    BACA . . . . . . . . . . . . . . UNDEFINED
    BOUNC. . . . . . . . . . . . . . C ADDR 01FDH
    DI . . . . . . . . . . . . . . . UNDEFINED NOT USED
    EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
    ES . . . . . . . . . . . . . . . B ADDR 00ACH PREDEFINED
    ET0. . . . . . . . . . . . . . . B ADDR 00A9H PREDEFINED
    EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
    EX1. . . . . . . . . . . . . . . B ADDR 00AAH PREDEFINED
    FINOUT . . . . . . . . . . . . . C ADDR 0215H
    IE . . . . . . . . . . . . . . . D ADDR 00A8H PREDEFINED
    INIT_SR. . . . . . . . . . . . . C ADDR 021AH
    IP . . . . . . . . . . . . . . . D ADDR 00B8H PREDEFINED
    IT0. . . . . . . . . . . . . . . B ADDR 0088H PREDEFINED
    IT1. . . . . . . . . . . . . . . B ADDR 008AH PREDEFINED
    KEY1 . . . . . . . . . . . . . . C ADDR 012AH
    KEY10. . . . . . . . . . . . . . C ADDR 019FH
    KEY11. . . . . . . . . . . . . . C ADDR 01ABH
    KEY12. . . . . . . . . . . . . . C ADDR 01B7H
    KEY13. . . . . . . . . . . . . . C ADDR 01CBH
    KEY14. . . . . . . . . . . . . . C ADDR 01D7H
    KEY15. . . . . . . . . . . . . . C ADDR 01E3H
    KEY16. . . . . . . . . . . . . . C ADDR 01EFH
    KEY2 . . . . . . . . . . . . . . C ADDR 0135H
    KEY3 . . . . . . . . . . . . . . C ADDR 0140H
    KEY4 . . . . . . . . . . . . . . C ADDR 014BH
    KEY5 . . . . . . . . . . . . . . C ADDR 015EH
    KEY6 . . . . . . . . . . . . . . C ADDR 0169H
    KEY7 . . . . . . . . . . . . . . C ADDR 0174H
    KEY8 . . . . . . . . . . . . . . C ADDR 017FH
    KEY9 . . . . . . . . . . . . . . C ADDR 0193H
    KEYPAD . . . . . . . . . . . . . C ADDR 0113H
    KIRIM. . . . . . . . . . . . . . C ADDR 0236H
    MAIN . . . . . . . . . . . . . . C ADDR 0100H
    MORE . . . . . . . . . . . . . . C ADDR 020DH
    MSND . . . . . . . . . . . . . . C ADDR 0229H
    P0 . . . . . . . . . . . . . . . D ADDR 0080H PREDEFINED
    PCON . . . . . . . . . . . . . . D ADDR 0087H PREDEFINED
    PENGIRIM . . . . . . . . . . . . UNDEFINED NOT USED
    POIN . . . . . . . . . . . . . . NUMB 007EH
    SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
    SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
    SETING . . . . . . . . . . . . . UNDEFINED NOT USED
    SIMPAN . . . . . . . . . . . . . C ADDR 01F2H
    SWITCH . . . . . . . . . . . . . C ADDR 01F6H
    TF0. . . . . . . . . . . . . . . B ADDR 008DH PREDEFINED
    TH0. . . . . . . . . . . . . . . D ADDR 008CH PREDEFINED
    TH1. . . . . . . . . . . . . . . D ADDR 008DH PREDEFINED
    TI . . . . . . . . . . . . . . . B ADDR 0099H PREDEFINED
    TL0. . . . . . . . . . . . . . . D ADDR 008AH PREDEFINED
    TMOD . . . . . . . . . . . . . . D ADDR 0089H PREDEFINED
    TR0. . . . . . . . . . . . . . . B ADDR 008CH PREDEFINED
    TR1. . . . . . . . . . . . . . . B ADDR 008EH PREDEFINED
    TT . . . . . . . . . . . . . . . C ADDR 022DH

    • compile nya pake aplikasi apa mas??? dah di coba???

      • pake Programmer 2.0 Copyright (2003-2006) U-2 Technologies ,ASM 51

        ada errornya mbak..? disini :

        org 0023h
        ljmp baca ;membaca data dari komputer ke mikro

        org

        klo ada waktu tolong mbak koreksi lagi ya….saya tungggu

      • oooohhh lupa mas, itu karena gak ada label baca di bawahnya. heheheheeeeee itu kan interupsi untuk baca dari kompi. lha sedangkan syntax bacanya gak saya sertakan. kesalahan, hapus aja… dari org 0023h sampe ljmp baca. hihihihiiii

        maap …. hihihiii

      • ooo gitu ta…?? trimakasih mbakkk…..

  5. SANGAT membantu Trimksh.


Leave a reply to rezutopia Cancel reply

Categories