Serial Komunikasi RS-485 Dengan MCS-51 Simulasi Proteus

Membuat program serial komunikasi PC dengan MCS-51 dimana pada PC dan mikrokontroler terhubung dengan komunikasi serial RS-485 sehingga komunikasi data dalam jarak hingga 1200 meter, Pada aplikasi ini jika kita menekan huruf ‘N’ atau ‘n’ pada hyperterminal maka pada hyperterminal akan muncul nama kita (musbikhin) dan jika ditekan ‘R’ atau ‘r’ akan muncul pada hyperterminal NRP kita (7110040519).

(Crystal : 12MHz, Pengakesasan serial menggunakan metode pooling atau bukan interupt sehingga saat ada serial masuk program sedikit lambat. RS 485 disini menggunakan metode full dupplex )

 

Rangkaian dan Setting:

Rangkaian RS 485

Setting Serial USART_thumb[1]

Setting virtual Serial (baudrate: 2400) dengan cara klik dua kali pada virtual serial:

Setting virtual Serial_thumb[1]

Program (Masih Belum Sempurna) :

Program:

 

org 0h

nop

call initserial ; inisialisasi serial

mov dptr,#MyCharacter

gets: clr A

Movc A,@A+dptr

cjne A,#0,Next ; mengambil karakter pada label mycharacter ‘Tekan Tombol N atau n untuk Nama

R atau r untuk NRP” sampai karakter 0, jika tidak sama ;dengan 0 maka ;akan jump ke label Next

sjmp getin ; karakter sudah dikirim semua (A=0) jump ke getin

Next: call sendout ;menjalankan subrutin sendout

inc dptr ; mengincrement dptr

sjmp gets ; kembali ke gets

getin: call inchar ;memanggil subrutin inchar

cjne A,#’N’,next1 ; jika yang ditekan adalah tombol ‘N’ maka akan melanjutkan program ;dibawahnya jika tidak sama dengan ‘N’ maka akan jump ke next1

mov dptr,#namaku ;menampilkan namaku ‘musbikhin’

clr A

Movc A,@A+dptr

cjne A,#0,lanjut

lanjut: call sendout

inc dptr

sjmp gets

next1: call inchar ;memanggil subrutin inchar

cjne A,#’R’,next2 ; jika yang ditekan adalah tombol ‘R’ maka akan melanjutkan program ;dibawahnya jika tidak sama dengan ‘R’ maka akan jump ke next2

mov dptr,#nrpku ;menampilkan nrp ‘7110040519’

clr A

Movc A,@A+dptr

cjne A,#0,lanjut2

lanjut2: call sendout

inc dptr

sjmp gets

next2: call inchar ;memanggil subrutin inchar

cjne A,#’n’,next3 ; jika yang ditekan adalah tombol ‘n’ maka akan melanjutkan ;program dibawahnya jika tidak sama dengan ‘n’ maka akan ;jump ke next3

mov dptr,#namaku ;menampilkan namaku ‘musbikhin’

clr A

Movc A,@A+dptr

cjne A,#0,lanjut3

lanjut3: call sendout

inc dptr

sjmp gets

next3: call inchar ;memanggil subrutin inchar

cjne A,#’r’,next4 ; jika yang ditekan adalah tombol ‘r’ maka akan melanjutkan ;program dibawahnya jika tidak sama dengan ‘r’ maka akan ;jump ke next4

mov dptr,#nrpku

clr A

Movc A,@A+dptr

cjne A,#0,lanjut4

lanjut4: call sendout

inc dptr

sjmp gets

next4: sjmp getin ;kembali ke 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 ; mengclearkan bit ri

mov a,sbuf ; membaca data yang diterima pada register sbuf

ret ; kembali ke getin

;

Sendout:

detecto: jnb ti,detecto ; Deteksi bit TI apakah data sudah dikirim atau belum

clr ti ; ; sebelum mengirim data, bit TI dinolkan dulu

mov sbuf,a ; ; mengirim karakter pada register A yang berasal dari DPTR

ret ; kembali ke Next

;

MyCharacter:

DB ‘ Tekan Tombol N atau n untuk Nama R atau r untuk NRP’,13,10,0

namaku:

DB ‘ Musbikhin’,13,10,0

nrpku:

DB ‘ 7110040519’,13,10,0

End

 

Hasil Program setelah dirun :

Tampilan awal saat program dijalankan:

clip_image002_thumb[1]

Saat ada penekanan sesuai prosedur:

clip_image002[5]_thumb[1]

Semoga bermanfaat bila masih ada kekurangan harap maklum…masih newbie :)

2 gagasan untuk “Serial Komunikasi RS-485 Dengan MCS-51 Simulasi Proteus

Tinggalkan Balasan