![]() |
||||||||||||||||||||||||
|
Microcontroller Kits Simple
Mikrokontroller 89s51 Trainer
Super
Mikrokontroller Trainer 89s51
All Kits |
PERCOBAAN 10
Salah satu komunikasi yang paling ampuh untuk diimplementasikan dalam sistem komunikasi digital adalah komunikasi dengan memanfaatkan jalur serial RS232. Mikrokontroller 89s51 telah memiliki fasilitas UART, sehingga dapat melakukan komunikasi secara serial dengan level RS2322 antar peralatan atau dengan komputer. MAX232 merupakan IC yang difungsikan untuk merubah format TTL ke RS232 atau sebaliknya. Konfigurasi komunikasi serial dengan Hyperterminal Gambar 10.1 Pemilihan menu communication pada Accessories Gambar 10.2 Pemilihan menu HyperTerminal pada communication
Gambar 10.3. (a) Pemberian nama koneksi (b) Pemilihan koneksi pada COM1
Gambar 10.4. (a) Properties serial komunikasi (b) windows HyperTerminal
Percobaan 10.1. Mengambil Data Karakter dari ROM dan Display ke Monitor dengan Hyperterminal. Lakukan beberapa langkah percobaan sebagai berikut: org 0h
nop
call initserial
mov dptr,#MyCharacter
gets: clr A
Movc A,@A+dptr
cjne A,#0,Next
sjmp getout
Next: call sendout
inc dptr
sjmp gets
getout: sjmp getout
;
initserial:
mov scon,#52h ; Konfigurasi komunikasi serial mode 1
mov tmod,#20h ; Baud rate 2400 BPS
mov th1,#0F3H
setb tr1
ret
;
inchar:
detecti: jnb ri,detecti ; Deteksi bit RI apakah data sudah diterima atau belum
clr ri
mov a,sbuf
Subb A,#30h
Mov R0,A
ret
;
Sendout:
detecto: jnb ti,detecto;
clr ti ;
mov sbuf,a ;
ret
MyCharacter:
DB ' Selamat Datang Di Pelatihan Mikrokontroller',13,10,0
End
4. Simpanlah program yang anda ketik dan beri nama : hiper1a.asm Gambar 10.4. Tampilan data pembacaan dari ROM Percobaan 10.2. Pengendalian LED dengan menggunakan Hyperterminal Pada percobaan ini LED dihidupkan sesuai dengan karakter (1 -2
- 4 ) yang diterima dari keyboard PC. org 0h
nop
call initserial
mov dptr,#MyCharacter
gets: clr A
Movc A,@A+dptr
cjne A,#0,Next
sjmp getin
Next: call sendout
inc dptr
sjmp gets
getin: call inchar
cjne A,#'1',next1
mov P0,#11111110b
next1: cjne A,#'2',next2
mov P0,#11111101b
next2: cjne A,#'4',next3
mov P0,#11111011b
next3: sjmp getin
;
initserial:
mov scon,#52h ; Konfigurasi komunikasi serial mode 1
mov tmod,#20h ; Baud rate 2400 BPS
mov th1,#0F3H
setb tr1
ret
;
inchar:
detecti: jnb ri,detecti ; Deteksi bit RI apakah data sudah diterima atau belum
clr ri
mov a,sbuf
ret
;
Sendout:
detecto: jnb ti,detecto;
clr ti ;
mov sbuf,a ;
ret
;
MyCharacter:
DB ' Tekan Tombol 1, 2 atau 4',13,10,0
End
6. Lakukan penekanan tombol 1, 2 atau 4
Percobaan 10.3 Pengiriman data secara serial dari PC ke mikrokontroller dengan output LED ( pemrograman delphi ) Pada percobaan ini, data dikirimkan melalui port communication serial PC secara serial dan ditangkap oleh mikrokontroller untuk dioutputkan ke LED
Lakukan beberapa langkah percobaan sebagai berikut: org 0h
nop
call initserial
gets: call inchar
mov P0,a
sjmp gets
;
initserial:
mov scon,#52h ; Konfigurasi komunikasi serial mode 1
mov tmod,#20h ; Baud rate 2400 BPS
mov th1,#-13
setb tr1
ret
;
inchar:
detect: jnb ri,detect ; Deteksi bit RI apakah data sudah diterima atau belum
clr ri
mov a,sbuf
ret
;
End
6. Buka Program Delphi
var
Form1: TForm1;
data,status:byte;
const
base = $3f8;{base address port serial}
lcr = 3; {line control register}
dll = 0; {divisor lacht low byte}
dlh = 1; {divisor lacht high byte}
lsr = 5; {line status register}
implementation
{$R *.DFM}
Procedure Initserial;
begin
asm
mov dx,base+lcr; {address line control register}
mov al,$80 ; {10000000b = access bit divisor lacht}
out dx,al
;
mov dx,base+dll; {address divisor lacht low byte}
mov al,$30 ; {DLLB = 30h}
out dx,al
;
mov dx,base+dlh; {address divisor lacht high byte}
mov al,$00 ; {DLLH = 00h}
out dx,al
; {Pada saat ini Port serial}
; {memp.baud rate = 2400 bps}
mov dx,base+lcr; {address line control register}
mov al,$03 ; {00000011b =}
out dx,al ; {bit 7=0, access to Rx buffer & Tx
; {bit 6=0, set break disable
; {bit 5-4-3=000, no parity
; {bit 2=0, one stop bit
; {bit 1-0=11,data lenght 8 bit}
end;
end;
Procedure Send_Data_Serial;
begin
asm
mov dx,base
mov al,data
out dx,al
end
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Initserial;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=1;
Send_Data_Serial;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=2;
Send_Data_Serial;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=4;
Send_Data_Serial;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=8;
Send_Data_Serial;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=16;
Send_Data_Serial;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=32;
Send_Data_Serial;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=64;
Send_Data_Serial;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=128;
Send_Data_Serial;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=0;
Send_Data_Serial;
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
repeat
asm
mov dx,base+lsr ; {address line status register }
in al,dx
and al,$20 ; {00100000b =not masking bit 5}
mov status,al ; {bit5=Empty Transmitting holding reg}
end;
until status = $20; { If ETHR = 1 then data ready tobe send }
data:=255;
Send_Data_Serial;
end;
end.
8. Simpanlah program yang anda ketik dan beri nama
: prog101a.asm
Komentar, pertanyaan dan diskusi tentang topik tersebut. Klik disini
|
HARDWARE PERCOBAAN 1 PERCOBAAN 2 PERCOBAAN 3 PERCOBAAN 5 PERCOBAAN 6 PERCOBAAN 7 PERCOBAAN 8 PERCOBAAN 9 PERCOBAAN 10 PERCOBAAN 11 PERCOBAAN 12 PERCOBAAN 13 PERCOBAAN 14 PERCOBAAN 15
|
||||||||||||||||||||||