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
- Siapkan mikrokontroler anda ( meliputi : downloader + rangkaian LED yang tersambung pada P0 mikro + kabel data serial yang menghubungkan komputer dengan mikro sebagai jalur komunikasi )
- 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…..
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
By: dotkitelectronic on October 20, 2009
at 11:48 am
bukan comport1, comport2, comport3 dst. tapi comport1 dengan write yang berbeda.
comport1.write(‘1’);
comport1.write(‘2’);
dst
sekedar info …. saya mbak, bukan mas. 😀
By: rezutopia on October 20, 2009
at 3:11 pm
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…
By: dotkitelectronic on October 21, 2009
at 8:38 pm
kalo boleh tolong ceritain keadaan mikro ma kompi anda …..
By: rezutopia on November 2, 2009
at 10:41 am
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…?
By: dotkitelectronic on November 7, 2009
at 9:57 am
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
By: rezutopia on November 11, 2009
at 2:28 pm
oke mbak… trims ya.. tak cobae utak-atik program yang mbak buat,nanti hasilnya tak laporkan ….
By: dotkitelectronic on November 12, 2009
at 11:27 am
Kalo bisa di utak atik jadi tambah lengkap. sory … itu bikinan amatir heheheheheeeeee
Kalo bisa di perbaiki, ntar ilmunya bagi2 ke aku juga . 🙂
By: rezutopia on November 12, 2009
at 2:00 pm
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
By: dotkitelectronic on November 16, 2009
at 9:21 pm
compile nya pake aplikasi apa mas??? dah di coba???
By: rezutopia on November 17, 2009
at 11:55 am
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
By: dotkitelectronic on November 19, 2009
at 1:13 am
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
By: rezutopia on November 25, 2009
at 1:25 pm
ooo gitu ta…?? trimakasih mbakkk…..
By: dotkitelectronic on November 26, 2009
at 7:06 pm
SANGAT membantu Trimksh.
By: Naomi Jelitha Sinaga on May 15, 2012
at 9:19 pm