BAB VII
ARSITEKTUR MIKROKONTROLER
Mikrokontroler dibangun dari elemen dasar yang sama dari sebuah komputer. Sistem
dasar mikrokontroler terdiri dari CPU, RAM, ROM, I/O dan timer yang terintegrasi dalam
sebuah chip IC.
Mikrokontroler merupakan suatu komponen elektronik berkerja sesuai dengan
perintah/ program yang diberikan kepadanya. Mikrokontroler digunakan untuk orientasi
kendali, seperti pemroses sinyal digital, system kendali mesin-mesin industry dll
Berbagai jenis mikrokontroler, produk dari berapa vendor diantaranya dari Intel,
Maxim, Microchip, Motorolla, ATMEL dll. Beberapa seri mikrokontroler diantaranya adalah
8031, 68HC11, 6502 , 2051, 89S51/52, AVR 8535 dan lain lain
Arsitektur MCS-51 merupakan salah satu jenis arsitektur mikrokontroler dari Intel
dan banyak diproduksi oleh ATMEL dll.
Tabel 1. perbandingan beberapa seri mikrokontroler MCS-51 buatan atmel.
Nomor Flash RAM EEPROM Pin
Seri (KBytes) (Bytes) (KBytes) I/O Timer UART SPI ISP
AT89C51 4 128 - 32 2 1 - -
AT89S51 4 128 - 32 2 1 - Ya
AT89C52 8 256 - 32 3 1 - -
AT89S52 8 256 - 32 3 1 - Ya
AT89C2051 2 256 - 15 2 1 - -
AT89S2051 2 256 - 15 2 1 - Ya
AT89C4051 4 256 - 15 2 1 - -
AT89S4051 4 256 - 15 2 1 - Ya
AT89S8252 8 256 2 32 3 1 1 Ya
AT89S8253 12 256 2 32 3 1 1 Ya
Keterangan:
31
Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil
buatan manusia yang harus dijalankan oleh mikrokontroler
RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk
penyimpanan data sementara dan pengolahan data ketika program sedang running
EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori
untuk penyimpanan data secara permanen oleh program yang sedang running
Pin I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran
ataupun masukan bagi program
Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa
UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data
khusus secara serial asynchronous
SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial
secara serial synchronous
ISP (In System Programming) adalah kemampuan mikrokontroler untuk dapat
diprogram langsung dalam sistem rangkaiannya
Gambar 4.3. Blok diagram MC 89S51 Gambar 4.4. Konfigurasi Pin 89S51
32
Port 0
Port 0 merupakan port paralel 8 bit dua arah. Bila digunakan untuk mengakses
memori luar, port ini sebagai bus data dan memultipleks alamat memori 8 bit terrendah (A7
– A0) saat mengakses memori luar. Port 0 juga memerlukan kode byte pada saat
pemrograman flash.
Port 1
Port 1 adalah sebuah port input/ output 8 bit bidirectional (dua arah). Output buffer
port 1 dapat pula menjadi sumber dari 4 TTL input. Selain sebagai port input/ output, P1.5
sampai P1.7 mempunyai fungsi alternatif yaitu untuk memasukkan program/ perintah ke
mikrokontroler
P1.5 adalah MOST (master data output, slave data input untuk kanal ISP)
P1.6 adalah MISO (master data input, slave data output untuk kanal ISP)
P1.7 adalah SCK (master clock output, slave clock input untuk kanal ISP)
Port 2
Port 2 adalah sebuah port input output 8 bit bidirectional. Buffer output port 2 dapat
berfungsi sebagai sumber 4 input TTL. Port 2 mengeluarkan alamat 8 bit terkiri (A15 – A8)
selama pengambilan dan program memori eksternal dan selama pemasukan ke data memori
eksternal yang menggunakan pengalamatan 16 bit
Pada port 1, port 0 dan port 2 (jika tidak memakai memori eksternal) maka
pengaksesan bisa dilakukan pada tiap pin secara sendiri-sendiri atau dalam satu kumpulan
port 8 bit.
33
Port 3
Port 3 adalah sebuah port input/output 8 bit bi-directional. Buffer output port 3 dapat
berfungsi sebagai sumber 4 input TTL. Port 3 AT89S51 juga melayani berbagai macam
fungsi-fungsi khusus seperti pada AT89S51 yaitu sebagai berikut:
Tabel 2. Fungsi utama pin port 3
PIN Fungsi
P3.0 RXD (serial input port)
P3.1 TXD (serial output port)
P3.2 INTO (external interrupt 0)
P3.3 INTO (external interrupt 0)
P3.4 TO (timer 0 external input)
P3.5 TI (timer 1 external input)
P3.6 WR (external data memory writd strobe)
P3.7 RD (external data memory read strobe)
d. Riset
Reset berfungsi untuk membuat eksekusi program mulai dari awal, meng-Clear-kan
semua RAM, memberhentikan dan memulai semua aktivitas dari awal. Pin RST ini
merupakan pin reset mikrokontroler AT89S51. Reset dari mikrokontroler tersebut adalah
aktif High (1) lalu kembali bernilai low.
Reset ini pada prakteknya membutuhkan nilai RC = 82ms, kemudian program mulai
di jalankan setelah pin reset diberi tegangan 0 Volt ( Low “0”). Agar kondisi tersebut di
peroleh di perlukan rangkain eksternal power-on reset .
Prinsip kerja rangkaian ini adalah pertama kali power supply di ON kan maka
kapasitor akan charge, karena pada saat kondisi pertama ON tegangan pada kapasitor adalah
0 Volt. Maka pada pin RST muncul tegangan +5 Volt. Setelah beberapa saat kapasitor penuh
dan tegangan di kapasitor menjadi +5 Volt dan tegangan di Resistor 0 Volt, sehingga pin RST
menjadi 0 Volt.
e. ALE/PROG
Pulsa output Address Latch Enable untuk memberikan alamat byte rendah selama
mengakses memori eksternal. Pin ini juga merupakan input pulse program (PROG) selama
pemrograman Flash.
Pada operasi normal ALE dipancarkan pada 1/6 frekuensi oscilator secara konstan,
dan bisa digunakan untuk tujuan external timing atau clock. ALE hanya aktif selama ada
instruksi/ perintah ke memori luar.
f. PSEN
Program Store Enable adalah membaca strobe ke memori progam ekstemal. Saat
AT89S51 mengeksekusi kode dan memori program eksternal, PSEN teraktifkan dua-kali
setiap putaran mesin (machine cycle)
g. EA/Vpp.
External Access Enable, EA harus terhubung ke GND untuk fetch kode di lokasi
memori program eksternal. EA harus terhubung ke Vcc untuk eksekusi-eksekusi program
internal. Pin ini juga menerima 12 volt programming enable voltage (Vpp) selama
pemrograman flash.
h. Pin Oscillator
Sepasang pin XTAL 1 dan XTAL 2 diberi kristal eksternal yang di bypass dengan dua
buah kapasitor kira-kira 30 pF ± 10%. Kristal yang dipakai umumnya 12 MHz, tetapi apabila
diinginkan kecepatan yang Iebih tinggi dapat dipakai kristal dengan frekuensi sampai 24
MHz. XTAL1 adalah Input ke pembalikan penguat osilator (inverting oscillator amplifier)
dan input ke clock internal pengoperasian rangkaian. Sedangkan XTAL2 adalah Output dan
pembalikan penguat osilator.
Setelah itu baru diberikan pulsa low. Kondisi ini dapat dipenuhi dengan memasang
rangkaian RC yang akan mensuplai tegangan Vcc ke pin 9 selama kapasitor mengisi muatan /
charging. Konstanta waktu pengisian = R X C.
Jika pada gambar 5.9 adalah : T=R.C = (8K2Ω)x(10uF) = 82 mS. Setelah kapasitor
terisi, maka pin 9 akan low. Tombol push button dipasang agar pada saat running
Mikrokontroler dapat juga di-reset. Pin EA / External Access harus dihubungkan ke +5V agar
mikrokontroler dapat mengambil byte instruksi dari ROM internal mikrokontroler.
128 byte menempati address mulai dari alamat 00 sampai 7F. memori RAM ini dapat diakses
dengan cara pengalamatan langsung maupun tak langsung (indirect)
2) Register B
Register B dapat digunakan untuk proses aritmatika dan dapat juga difungsikan sebagai
register umum.
3) Register Port
Pada register ini terdapat 4 buah yaitu register port 0, port 1, port 2, dan port 3. Register
port ini digunakan sebagai sarana input/output untuk menyimpan data dari atau ke port
untuk masing-masing P0, P1, P2, dan P3.
4) Register Timer
Mikrokontroller AT89S51 mempunyai dua buah timer 16 bit, yaituTimer 0 dan Timer 1
dibentuk oleh register TH0 dan TL0. Timer 1 dibentuk oleh register TH1 dan TL1.
Perilaku dari register TH0, TH1, TL0 dan TL1 diatur oleh register TMOD dan register
TCON.
40
5) Register Control
Ada beberapa register yang berisi bit-bit kontrol dan status untuk sistem interupsi, counter
atau timer, dan port serial, yaitu register-register IP (Interrupt priority), IE (Interrupt Enable),
TMOD (TimerMode), TCON (Timer Control), SCON (Serial Control), dan PCON ( Power
Control).
a. Register IP digunakan untuk mengaktifkan atau menonaktifkan sarana interupsi. IE.0
sampai IE.6 mengatur masing-masing sumber interupsi, sedangkan IE.7. mengatur
interupsi secara keseluruhan. Jika IE.7 bernilai 0 maka sistem interupsi akan non aktif
atau keadaan dari IE.0 sampai IE.6 tidak diperhatikan.
b. Register TMOD digunakan untuk mengatur mode kerja dari Timer 0 dan Timer 1. Dengan
mengatur mode kerja timer, register ini dapat digunakan mengatur masing-masing timer
untuk diatur menjadi timer 16 bit, timer 13 bit, atau timer 8 bit yang dapat diiisi ulang
secara otomatis. Selain itu, register ini juga dapat mengatur agar proses pencacah timer
dapat dikendalikan melalui sinyal dari luar mikrokontroller.
c. Register TCON digunakan untuk memulai atau menghentikan proses pencacah timer,
mengatur sinyal interupsi dari INT0 atau INT1, serta memantau adanya sinyal masuk ke
INT0 atau INT1.
d. Register SCON digunakan untuk mengatur perilaku dari UART yang diantaranya
memantau proses pengiriman dan penerimaan data seri.
e Register PCON untuk pemakaian daya pada IC (pengotrol mode kerja CPU)
2. carry dimanfaatkan sebagai bit ke delapan untuk operasi pergeseran (shift) atau
perputaran.
7) Stack Pointer
42
Register Stack Pointer (SP) merupakan register 8 bit yang terletak pada alamat 81H,
mempunyai fungsi menyimpan alamat data paling atas pada saat terjadi interrupt. Alamat
data selalu berkurang 2 setelah penumpukan data dan bertambah 2 setelah pengambilan
data dari lokasi tumpukan.
8) Data Pointer
Register data pointer (DPTR) merupakan register 16 bit, terdiri dari DP0 dan DP1.
Untuk menyimpan alamat 16 bit/ masing masing 8 bit untuk dapat mengakses EEPROM
atau eksternal data memori
BAB V
PEMROGRAMAN MIKROKONTROLER
Program pengendali mikrokontroler disusun dari beberapa kumpulan-kumpulan
instruksi/ perintah, instruksi tersebut setara dengan kalimat perintah dalam bahasa manusia
yang hanya terdiri atas predikat dan objek. Dengan demikian tahap pertama pembuatan
program pengendali mikrokontroler dimulai dengan pengenalan dan pemahaman predikat
(kata kerja) dan objek apa saja yang telah dimiliki oleh mikrokontroler. Beberapa cara untuk
menyebut tempat/ alamat data ( ‘Addressing Mode’), antara lain adalah:.
1. Penyebutan data konstan (immediate addressing mode): yaitu MOV A,#20. Data
konstan merupakan data yang berada di dalam instruksi. Contoh instruksi ini
mempunyai makna data konstan 20 (sebagai data konstan ditandai dengan ‘#’) di-
copy-kan ke Akumulator A.
2. Penyebutan data secara langsung (direct addressing mode), cara ini dipakai untuk
menunjuk data yang berada di dalam memori dengan cara menyebut nomor memori
tempat data tersebut berada : MOV A,30. (data yang berada di dalam memori nomor
30 di-copy-kan ke Akumulator. )
3. Penyebutan data secara tidak langsung (indirect addressing mode) yaitu MOV
A,@R0. Tanda ‘@’ dipakai untuk menandai bahwa nomor memori (alamat) disimpan
di dalam register R0. Dalam instruksi ini register R0 dipakai untuk menyimpan nomor
memori ( memori yang alamatnya tersimpan dalam register R0 isinya di-copy-kan ke
Akumulator A.)
4. Penyebutan data dalam register (register addressing mode): MOV A,R5. (data dalam
register serba guna R5 di-copy-kan ke Akumulator A). terdapat beberapa register
serba guna R0 sampai R7 sebagai tempat penyimpan data .
5. Cara penyebutan data dalam memori program yang dilakukan secara indirect (code
indirect addressing mode) yaitu MOVC A,@A+DPTR. MOV digantikan dengan
MOVC, tambahan huruf C tersebut dimaksud untuk membedakan bahwa instruksi ini
dipakai di memori program. (MOV tanpa huruf C artinya instruksi dipakai di memori
data). Sedangkan Tanda ‘@’ dipakai untuk menandai A+DPTR adalah menyatakan
nomor memori yang isinya di-copy-kan ke Akumulator A, dalam hal ini nilai yang
tersimpan dalam DPTR (Data Pointer Register - 2 byte) ditambah dengan nilai yang
tersimpan dalam Akumulator A (1 byte) dipakai untuk menunjuk nomor memori
program.
44
Program assembler untuk menyalakan 8 lampu LED pada keluaran sesuai dengan
keadaan dari 8 buah switch pada masukannya, lama menyalanya lampu LED adalah 525,5
ms
ORG 100H
START: MOV A, P0
MOV P2, A
ACALL DELAY
SJMP START
;subrutin delay
DELAY: MOV R0,#20
DELAY1: MOV R1,#50
DELAY2: MOV R2,# 250
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET
END.
Lama waktu delay adalah ≈ (2 x R2) + 2(R2 x R1) + 2 (R2 x R1 x R0) = (2 x 250) +
2 (250x50) + 2 (20x50x250) = 525,5 ms
DJNZ R7.$
DJNZ R6.DELAY2
DJNZ R5.DELAY1
RET
END
Sebelum menampilkan karakter pada LCD, maka terlebih dahulu harus mengikuti
prosedur- prosedur yaitu: Inisialisasi , Pemesanan tempat dan Penulisan data
a. Inisialisasi terdiri dari:
Display Clear
0 0 0 0 0 0 0 1
D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini akan menghapus semua display dan mengembalikan kursor ke posisi awal
(alamat 0)
Cursor Home
0 0 0 0 0 0 1 X
D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini mengembalikan kursor ke posisi awal (alamat 0)
Entry Mode Set
0 0 0 0 0 1 I/D S
D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini mengatur arah pergerakan kursor dan apakah display akan digeser.ke kiri
atau ke kanan
Jika I/D = 1 alamat akan dinaikkan dan kursor bergerak ke kanan dan jika I/D = 0
alamat akan diturunkan dan kursor bergerak ke kiri
Jika S = 1, semua display akan digeser, tetapi posisi kursor tidak berubah,
Jika S = 1 dan I/D = 1 , display akan digeser ke kanan dan jika S = 1 dan I/D = 0
display akan digeser ke kiri.
Jika S = 0 , display tidak akan digeser.
Display ON/OFF Control
0 0 0 0 1 D C B
D7 D6 D5 D4 D3 D2 D1 D0
D = 1, display akan ditampilkan
D = 0, display tidak ditampilkan
C = 1, kursor akan ditampilkan
C = 0 , kursor tidak ditampilkan
B = 1, karakter tempat posisi kursor berkedip
B = 0, karakter tempat posisi kursor tidak berkedip
Cursor/Display Shift
0 0 0 1 S/C R/L * *
D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini akan menggerakkan kursor dan menggeser display tanpa mengubah isi
RAM
50
supaya dapat menampilkan angka 0 pada baris 1 kolom 1 LCD, maka program
asemblernya adalah:
ORG 100H
SJMP START
DCLEAR EQU 00000001B
DEMODE EQU 00000110B
DONOFF EQU 00001100B
FSET EQU 00111000B
START :
ACALL INITLCD
START2:
MOV A,#30
ACALL TAMPIL_LCD
SJMP START2
INISIALISASI_LCD:
MOV A,#DCLEAR
ACALL INISIAL
MOV A,#FSET
ACALL INISIAL
MOV A,#DEMODE
ACALL INISIAL
MOV A,#DONOFF
ACALL INISIAL
RET
;-------------------------------------------------------
; PROSEDUR PEMESANAN TEMPAT
;-------------------------------------------------------
; RS : 0 : P3.5
;E :0-1-0 : P3.4
INISIAL:
CLR P3.5 ; RS=0
CLR P3.4 ; E=0
ACALL DELAY
MOV P2,A
SETB P3.4 ; E=1
ACALL DELAY
CLR P3.4 ; E=0
ACALL DELAY
RET
;-------------------------------------------------------
; PROSEDUR PENULISAN KARAKTER
;-------------------------------------------------------
; RS : 1 : P3.5
;E :0-1-0 : P3.4
TAMPIL_LCD:
SETB P3.5 ; RS=1
52
START :
ACALL INITLCD
START2:
MOV A,#123
MOV B,#10
DIV AB
MOV SAT,B
MOV B,#10
DIV AB
MOV PUL,B
MOV RAT,A
MOV A,#80H
ACALL INISIAL
MOV A,RAT
ADD A,#30H
ACALL TAMPIL_LCD
53
MOV A,#81H
ACALL INISIAL
MOV A,PUL
ADD A,#30H
ACALL TAMPIL_LCD
MOV A,#82H
ACALL INISIAL
MOV A,SAT
ADD A,#30H
ACALL TAMPIL_LCD
SJMP START2
INISIAL:
CLR P3.5 ; RS=0
CLR P3.4 ; E=0
ACALL DELAY
MOV P2,A
SETB P3.4 ; E=1
ACALL DELAY
CLR P3.4 ; E=0
ACALL DELAY
RET
TAMPIL_LCD:
SETB P3.5 ; RS=1
CLR P3.4 ; E=0
ACALL DELAY
MOV P2,A
SETB P3.4 ;E=1
ACALL DELAY
CLR P3.4 ;E=0
ACALL DELAY
RET
INITLCD:
MOV A,#DCLEAR
ACALL INISIAL
MOV A,#FSET
ACALL INISIAL
MOV A,#DEMODE
ACALL INISIAL
MOV A,#DONOFF
ACALL INISIAL
DELAY :
MOV R0,#0
ULANG1:
MOV R2,#0
ULANG: INC R2
CJNE R2,#5, ULANG
INC R0
CJNE R0,#5, ULANG2
RET
END
54
IC ADC0804 adalah IC yang digunakan untuk mengubah besaran sinyal analog menjadi
data digital 8 bit. System pengendalian Mode kerja dari IC ini yaitu Write (WR) adalah untuk
menulis data, Read (RD) untuk membaca data dan interrupt (INTR) menerima perintah baca/
tulis, pelaksaaan perintah tersebut tatkala menerima logika 0.
Untuk membaca data dari ADC terlebih dahulu atur WR = 1, RD = 1, kemudian atur
WR = 0 dan WR = 1, tunggu sampai ada perintah interrupt dari ADC, jika ada, atur RD = 0,
ambil data ADC dari port 1 ke akumulator, simpan data ke memori, setelah itu atur RD=1
Prosedur pengambilan data dari ADC
;---------------------------------------------------
; PENGAMBILAN DATA DARI ADC
; P3.6 : WR
; P3.7 : RD
;---------------------------------------------------
READ_ADC:
SETB P3.6 ; WR = 1
SETB P3.7 ; RD = 1
ACALL DELAY
CLR P3.6 ; WR = 0
ACALL DELAY
SETB P3.6 ; WR = 1
JB P3.2,$
ACALL DELAY
CLR P3.7 ; RD = 0
MOV A,P1
MOV 30,A
55
SETB P3.7 ; RD = 1
RET
- Bila bit GATE=0 saluran sinyal clock hanya diatur oleh bit TRx (TR0 atau TR1 pada
register TCON). Bila GATE=1 maka pin INT0 (untuk Timer 0) atau pin INT1 (untuk
Timer 1) dipakai juga untuk mengatur saluran sinyal clock.
- C/T harus diberi nilai ‘1’ oleh program user untuk menjalankan mode counter dan diberi
nilai ‘0’ untuk menjalankan mode timer.
- Ml dan MO merupakan dua bit pemilih mode operasi timer/counter
Keterangan :
- TF1 diberi nilai ‘1’ secara hardware saat nilai Timer/Counter 1 (TH1 dan TLI) mengalami
overflow. TF1 akan diberi nilai ‘0’ secara hardware saat mikrokontroler melompat ke
Interrupt Service Routine.
- TR1 harus diberi nilai ‘1’ oleh program user untuk menjalankan Timer 1.
- TF0 diberi nilai ‘1’ secara hardware saat nilai Timer/Counter 0 (TH0 dan TL0) mengalami
overflow. TF0 akan diberi nilai ‘0’ secara hardware saat mikrokontroler melompat ke
Interrupt Service Routine.
- TR0 harus diberi nilai ‘1’ oleh program user untuk menjalankan Timer 0.
Mengatur Timer
Gambar 6.9 merupakan bagan Timer 1, Rangkaian dibentuk dengan mengatur register
TMOD, sedangkan kerja dari Timer dikendalikan oleh logika di register TCON.
dari S1 disalurkan ke sistem pencacah biner, aliran sinyal clock akan dihentikan jika
TR=’0’. Sebaliknya jika bit GATE=’1’, output gerbang OR akan mengikuti keadaan pin
INT1, saat INT1=’0’ apapun keadaan bit TR1, output gerbang AND selalu =’0’ dan saklar
S1 selalu terbuka, agar saklar S1 bisa tertutup maka pin INT1 dan bit TR1 harus =’1’
secara bersamaan. Jika sistem yang dirancang menghendaki kerja dari timer/ counter
dikendalikan oleh sinyal yang berasal dari luar chip IC, maka bit GATE harus dibuat
menjadi logika ‘1’
3. Bit M1 dan M0=’0’, berarti TL1 dan TH1 disusun menjadi pencacah biner 13 bit (Mode
0), jika dikehendaki Timer 1 bekerja pada mode 1 seperti terlihat dalam Gambar, maka bit
M1 harus dibuat menjadi ‘0’ dan bit M0 menjadi ‘1’.
Timer akan menghitung pulsa clock dari osilator yang sebelumnya telah dibagi 12.
Agar berfungsi sebagai timer maka :
Bit C/T dalam TMOD harus 0 (timer operation)
Bit TRx dalam TCON harus 1 (timer run)
Bit Gate dalam TMOD harus 0 atau pin INTx harus 1.
Counter menghitung pulsa dari pin input T0 dan T1. Agar berfungsi sebagai counter
maka :
Bit C/T dalam TMOD harus 1 (counter operation).
Bit TRx dalam TCON harus 1 (timer run)
Bit Gate dalam TMOD harus 0 atau pin INTx harus 1.
Setelah reset TMOD bernilai $00, berarti Timer 1 bekerja sebagai pencacah biner 13
bit, sumber sinyal clock dari osilator kristal atau Timer 1 bekerja sebagai ‘timer’, bit GATE
=’0’ berarti pin INT1 tidak berpengaruh pada rangkaian sehingga Timer 1 hanya
dikendalikan dari bit TR1.
Proses inisialisasi adalah proses menentukan nilai semua register yang berkaitan
dengan Timer/ Counter yang akan digunakan agar Timer/ Counter dapat berfungsi
sebagaimana yang dikehendaki. Register yang harus diatur terlebih dahulu meliputi :
Timer/Counter 1 digunakan sebagai counter dalam mode 1 dengan internal control, maka
instruksinya adalah:
MOV TMOD, #01011010b
atau
MOV TMOD, #5Ah
Sedangkan untuk menjalankan kedua timer, instruksinya adalah sebagai beikut :
MOV TCON, #01010000b
atau
MOV TCON, #50h
atau
SETB TR0
SETB TR1
TL0, TH0, TL1 dan TH1 merupakan SFR (Special Function Register) yang dipakai
untuk membentuk pencacah biner perangkat Timer 0 dan Timer 1. Kapasitas keempat register
tersebut masing-masing 8 bit, bisa disusun menjadi 4 macam Mode pencacah biner
1. MODE 0.
Mode 0 adalah timer/counter 13 bit. Register TLx (TL0 atau TL1) hanya digunakan
pada 5 bit terendahnya saja sedangkan register THx (TH0 atau TH1) tetap digunakan selebar
8 bit. TLx akan bertambah hingga bernilai 1Fh. Saat ada perubahan nilai TLx dari 1Fh ke
00h, maka THx akan bertambah 1. Nilai maksimal THx dan TLx adalah FF1Fh (THx = FFh
dan TLx = 1Fh). Overflow akan terjadi jika ada perubahan dari FF1Fh ke 0000h. Nilai THx
dan TLx dapat diubah oleh user dalam program.
Dengan mensetting M1 dan M0 = 00 dalam TMOD menyebabkan register THx
berfungsi sebagai counter 8 bit dan register TLx berfungsi sebagai counter 5 bit. Ketika
overflow, TFx akan berlogika 1. Nilai maksimum adalah 8191d atau 1FFFh.
2. MODE 1
Mode 1 merupakan timer/counter 16 bit. TLx akan bertambah hingga bernilai FFh.
Saat ada perubahan nilai TLx dari FFh ke 00h, THx akan bertambah 1. Nilai maksimal THx
60
dan TLx adalah FFFFh (THx = FFh dan TLx = FFh). Overflow akan terjadi jika ada
perubahan dari FFFFh ke 0000h. Tetapi nilai THx dan TLx dapat diubah oleh user setiap saat
dalam program.
Dengan mengatur M1 dan M0 = 01 dalam TMOD menyebabkan register THx dan
TLx berfungsi sebagai counter 16 bit. Ketika overflow, TFx akan 1 .Nilai maksimumnya
adalah 65535d atau FFFFh.
3. MODE 2
Mode 2 adalah timer/counter 8 bit dengan fasilitas auto reload. TLx bertindak sebagai
timer/counter 8 bit. Sedangkan THx berisi suatu nilai tertentu. Auto reload adalah fasilitas
dimana nilai TLx setelah overflow tidak kembali ke 00h namun nilai TLx akan diambil dari
nilai THx.
Misalkan THx berisi 47h maka mulanya TLx berisi 47h kemudian isi TLx akan
bertambah sampai FFh, jika ada overflow pada TLx,maka secara automatis nilai TLx akan
berubah dari FFh ke 47h, sesuai dengan nilai THx. Proses tersebut dikerjakan secara otomatis
secara hardware sehingga user tidak perlu memeriksa apakah nilai TLx sudah overflow dan
tidak perlu mengisi ulang dengan nilai yang baru. Mode 2 ini juga digunakan untuk
menghasilkan baud rate.
Dengan mensetting M1&M0 = 10 dalam TMOD menyebabkan register THx dan TLx
masing-masing berfungsi sebagai counter 8 bit. Ketika overflow, TFx akan 1 .Nilai
maksimumnya adalah 255d atau FFh.
4. MODE 3
Pada mode 3, Timer/Counter 0 akan menjadi dua timer/counter 8 bit, sedangkan
Timer/Counter 1 akan berhenti. TL0 akan menjadi timer/counter 8 bit yang dikendalikan oleh
bit control Timer/Counter 0 (meliputi GATE, C/T , TR0, INT0, dan TF0). TH0 akan menjadi
timer 8 bit (bukan counter) yang dikendalikan oleh bit kontrol Timer/Counter 1 (meliputi
TR1 dan TF1). Jadi TR1 mengendalikan TH0 dan Timer/Counter 1 secara bersamaan.
Perbedaannya dengan instruksi di atas adalah dalam instruksi ini bit 6 (bit C/T*)
bernilai ‘1’. Selanjutnya jika diinginkan sinyal dari perangkat keras di luar chip MCS51 bisa
ikut mengendalikan Timer 1, maka instruksi pengatur Timer 1 akan buat menjadi : MOV
TMOD,#11010000, dari perintah itu terlihat bahwa pada bit 7 (bit GATE) bernilai ‘1’.
Jika bit GATE = ‘1’, selama pin INT1 bernilai ‘0’ pencacah biner belum akan
mencacah, juga pencacah biner belum dapat memulai menghitung sebelum diperintah dengan
instruksi : SETB TR1 Untuk menghentikan proses pencacahan, dipakai instruksi CLR TR1
Bit TR1 dan TR0 yang dipakai untuk mengendalikan proses pencacahan, terletak di
dalam register TCON (memori-data internal nomor 88) yang bisa dialamati secara bit (bit
addressable). Sehingga TR0 dan TR1 bisa diatur secara terpisah (dengan perintah SETB
atau CLR), tidak seperti mengatur TMOD yang harus dilakukan secara bersamaan.
Demikian pula bit penampung overflow pencacah biner TF0 dan TF1, dalam register
TCON keduanya masing-masing bisa di-monitor sendiri oleh program.
Timer/ Counter dapat dihidup dan matikan secara instruksi program dengan mengatur
logika TRx ataupun secara hardware dengan memberikan logika 0 pada pin INTx.
Tabel 13. Isi TMOD sebagai fungsi timer/counter
63
Nilai awal timer/counter harus dimasukkan dulu ke dalam timer register Timer High
(TH) dan Timer Low (TL). Secara umum delay waktu timer (T) dapat dihitung yaitu dengan
cara:
1. Sebagai timer 8 bit. T=(255-TLx)*1uS
2. Sebagai timer 13 bit. T=(8191-THxTLx)*1uS
3. Sebagai timer 16 bit. T=(65535-THxTLx)*1uS
catatan frekuensi crystal yang digunakan adalah 12 MHz.
Contoh : Diinginkan delay waktu 10 mS menggunakan timer 16 bit. Maka nilai THx
dan TLx adalah : T=(65535-THxTLx)*1uS
THxTLx=65535-(T/1uS)
THxTLx=65535-(10mS/1uS)
THxTLx=65535-10000
THxTLx=55535d=D8EFh
Maka THx=D8h dan TLx=EFh
Jika diperlukan, inisialisasi atau perubahan terhadap nilai THx dan/ atau TLx dapat
dilakukan dengan cara mengisikan nilai tertentu ke dalam register tersebut. Misalnya register
Timer/Counter 0 diisi dengan nilai 814Ah dan register Timer/Counter 1 diisi dengan nilai
0CF32h, maka instruksinya adalah sebagai berikut :
MOV TH0, #81h
MOV TL0, #4Ah
MOV TH1, #0CFh
MOV TL1, #32h
Instruksi baris pertama membuat P1.0 yang mula-mula ‘1’ menjadi ‘0’, pelaksanaan
instruksi NOP memerlukan waktu 1 mikro-detik (jika MCS51 bekerja pada frekuensi 12
MHz), instruksi SETB P1.0 juga memerlukan waktu 1 mikro-detik, total waktu sebelum P1.0
64
kembali menjadi ‘1’ adalah 3 mikro-detik (baris 2 3 dan 4). Dengan demikian terjadilah pulsa
dengan lebar 3 mikro-detik pada kaki P1.0 seperti terlihat pada Gambar 6.14
Sinyal100KHz:
CPL P1.0 ; 1 mikro-detik
NOP ; 1 mikro-detik
NOP ; 1 mikro-detik
SJMP Sinyal100KHz ; 2 mikro-detik
Instruksi CPL P1.0 pada baris 1 membalik keadaan pada P1.0, bila mula-mula P1.0
bernilai ‘1’ akan dirubah menjadi ‘0’, sebaliknya bila mula-mula ‘0’ akan dirubah menjadi
‘1’. Total waktu tunda ke-empat baris di atas adalah 5 mikro-detik, sehingga yang terjadi
adalah P1.0 bernilai ‘0’ selama 5 mikro-detik dan bernilai ‘1’ selama 5 mikro-detik berulang
terus tanpa henti, dengan frekuensi sebesar 1/10 mikro-detik = 100.000 Hertz.
Program di atas bisa pula dibuat dengan memakai Timer 1 sebagai pengatur waktu
tunda sebagai berikut :
Pencacah biner yang dibentuk dengan register TL1 akan mencacah naik, mulai dari
$F6 sampai $FF, saat pencacah melimpah dari $FF ke $00 bit TR1 pada register TCON
akan menjadi ‘1’ dan TL1 secara otomatis di isi ulang dengan bilangan $F6 yang tersimpan
pada register TH1. Hal ini akan terjadi terus menerus dan berulang setiap 10 siklus sinyal
clock ($F6, $F7, $F8, $F9, $FA, $FB, $FC, $FD, $FE, $FF kembali ke $00, total 10 siklus)
Instruksi BIT TR1,$ menunggu bit TR1 menjadi ‘1’, yakni saat pecacah biner
melimpah dari $FF ke $00. Lepas dari penantian tersebut, P1.0 dibalik keadaanya dengan
instruksi CPL P1.0, TR1 dikembalikan menjadi 0 (harus dikembalikan sendiri dengan
instruksi ini), agar bisa ditunggu lagi sampai menjadi ‘1’ kembali setelah instruksi SJMP
Ulangi. Frekuensi dari sinyal di P1.0 sebesar 1 / 16 mikro-detik = 31,25 KHz.
Contoh 1. Timer Mode 0
$mod51
ORG 0000H
LJMP MULAI
ORG 0100H
MULAI: MOV TMOD,#00H ; Timer 0 pada mode 0
MOV TL0,#17H ; T=(8191-THx TLx)*1uS
MOV TH0,#1CH
SETB TR0
LOOP: JBC TF0,SELESAI
SJMP LOOP
SELESAI:
SJMP MULAI
END
Contoh 2. Counter
$mod51
ORG 0000H
LJMP MULAI
ORG 0100H
MULAI: MOV TMOD,#05H ;COUNTER MODE 1
SETB TR0
LOOP: MOV A,TL0
MOV P1,A
SJMP LOOP
END
66
Tugas
1. Tuliskan data yang diisikan pada TMOD,THx dan TLx, jika menggunakan timer1
mode 1 waktu timer 100 ms kemudian tuliskan perintah untuk menjalankan dan
menghentikan timer.
2. Buatlah program bahasa rakitan untuk memberikan logika 1 pada P0.0 selama 10 ms
kemudian berikan logika 0 pada P0.0 selama 10ms. Gunakan timer 0 mode 1
3. Buatlah program bahasa rakitan untuk memberikan logika 1 pada P0.0 selama 10 ms
kemudian berikan logika 0 pada P0.0 selama 10ms. Gunakan timer 1 mode 1 ulangi
sampai 50 kali
4. Buatlah program bahasa rakitan untuk perintah menggunakan timer 0 pada mode 2
dan mode 3
5.
5.3 SERIAL INTERFACE
MCS-51 memiliki kemampuan untuk berkomunikasi secara serial melalui pin RXD
dan TXD. Pada prinsipnya, komunikasi serial adalah melakukan transmisi data per bit.
Komunikasi serial terdiri dari dua macam, yaitu
1. Synchronous serial adalah komunikasi dilakukan hanya ada satu pihak pengirim atau
penerima) yang menghasilkan clock dan mengirimkan clock bersama dengan data.
2. Asynchronous serial adalah komunikasi dua arah (pengirim dan penerima) masing-masing
menghasilkan clock, namun hanya data yang ditransmisikan, Agar data yang dikirim sama
dengan data yang diterima, maka kedua frekuensi clock harus sama. pengirim akan
mengirimkan datanya sesuai dengan frekuensi clock pengirim, dan penerima akan
membaca data sesuai dengan frekuensi clock penerima.
Universal Asynchronous Receiver Transmitter (UART) yang digunakan pada serial
port MCS-51 mendukung komunikasi secara asinkron, bahkan tiga dari empat serial mode
yang dimiliki MCS-51 kompatibel dengan UART.
Pada MCS-51, data ditampung sementara dalam register SBUF (Serial Buffer)
sebelum dikirim/diterima. Untuk mengatur mode komunikasi data serial dilakukan oleh
register SCON (Serial Control register). Untuk mengatur baudrate dilakukan oleh register
PCON (Power Control register).
MCS51 dilengkapi dengan 2 register dan beberapa bit tambahan untuk keperluan
pemakai port seri.
SBUF merupakan SFR (Special Function Register) yang terletak pada memori-data
internal dengan nomor 99. SBUF mempunyai kegunaan ganda, data yang disimpan pada
SBUF akan dikirim keluar MCS51 lewat port seri, sedangkan data dari luar MCS51 diterima
port seri diambil dari SBUF pula. Jadi meskipun hanya menempati satu nomor memori-data
internal nomor 99, sesungguhnya SBUF terdiri dari 2 register yang berbeda.
Bit 5-7 SCON yang berkaitan dengan serial port adalah SM0 & SM1 digunakan untuk
pemilih mode komunikasi serial.
Tabel 21. Mode Komunikasi Serial
68
Bit REN (bit 4) dipakai untuk mengaktipkan kemampuan port seri menerima data.
Pada mode 0 (pin RxD/ P3.0) dipakai untuk mengirim data seri (REN=’0’) dan juga untuk
menerima data seri (REN=’1’). Sifat ini terbawa pula pada saat port seri bekerja pada mode
1, 2 dan 3, meskipun pada mode-mode tersebut kaki RxD hanya dipakai untuk mengirim
data, agar pin RxD bisa dipakai untuk menerima data terlebih dulu harus dibuat REN=’1’.
Setelah reset bit REN bernilai ‘0’.
Pada mode 0, nilai SM2 harus ‘0’, REN harus diberi nilai ‘1’ untuk mengaktifkan
penerimaan data. Jika REN diberi nilai ‘0’, maka tidak akan ada penerimaan data.
Pada mode kerja 1, RB8 dipakai untuk menampung bit stop yang diterima, bila RB8
bernilai ‘1’ maka data diterima dengan benar, jika RB8=’0’ berarti terjadi kesalahan
kerangka (framing error). RB8 adalah bit ke-9 yang diterima dalam mode 2 atau 3. Pada
mode 1, RB8 adalah stop bit. Yang diterima. Pada mode 0, RB8 tidak digunakan
Pada mode kerja 2 dan mode kerja 3, port seri bekerja dengan 9 bit data, SBUF yang
kapasitasnya 8 bit tidak cukup untuk keperluan ini. Bit ke-sembilan yang akan dikirim
terlebih dulu diletakkan di TB8 (bit 3), bit RB8 (bit 2) merupakan bit yang dipakai untuk
menampung bit ke-sembilan yang diterima port seri. TB8 adalah bit ke-9 yang dikirimkan
dalam mode 2 atau 3. Nilai bit ini diatur oleh program user.
69
Bit TI (bit 1) merupakan petanda. Setelah port seri selesai mengirim data yang
disimpan ke-dalam SBUF, bit TI akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan
dengan program agar 69ias dipakai untuk memantau keadaan SBUF dalam pengiriman data
berikutnya.
Pengiriman data serial dimulai ketika sebuah byte data dikirimkan ke SBUF. TI akan
berlogika 1 ketika data telah selesai dikirimkan. Penerimaan data serial dimulai ketika REN
dalam SCON di set berlogika 1. RI akan berlogika 1 ketika data telah selesai diterima. Data
tersebut kemudian disimpan di dalam SBUF
Sub-rutin Serial Out berikut dipakai untuk mengirim data seri, bisa dipakai untuk
semua mode port seri. Baris 3 menunggu TI menjadi ‘1’, dimaksud untuk memastikan
pengiriman data sudah selesai. Data yang akan dikirim sudah disimpan di A, pada baris 2
data tersebut dikirim melalui port seri dengan cara meletakannya di SBUF. Agar TI bisa
dipakai untuk memantau keadaan SBUF pada pengiriman data berikutnya, pada baris 4 TI di-
nol-kan.
SerialOut:
MOV SBUF,A ; kirim data baru
JNB TI,$ ; tunggu data selesai dikirim
CLR TI ; petanda ada pengiriman baru
RET
Bit RI (bit 0) merupakan petanda. Setelah SBUF menerima data dari port seri, bit RI
akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan program agar bisa
dipakai untuk memantau keadaan SBUF dalam penerimaan data berikutnya.
Sub-rutin Serial In berikut dipakai untuk menerima data seri, bisa dipakai untuk
semua mode port seri. Baris 2 menunggu RI menjadi ‘1’, dimaksud untuk memastikan sudah
ada data baru yang diterima pada SBUF. Pada baris 3 data pada SBUF diambil ke A. Agar RI
bisa dipakai untuk memantau keadaan SBUF pada pengiriman data berikutnya, pada baris 4
RI di-nol-kan.
SerialIn:
JNB RI,$ ; tunggu SBUF berisi data baru
MOV A,SBUF ; ambil data
CLR RI ; pentanda data sudah diambil
RET
MCS51. Data dikirim/diterima 8 bit sekaligus, dimulai dari bit yang bobotnya paling kecil
(bit 0) dan diakhiri dengan bit yang bobotnya paling besar (bit 7). Kecepatan pengiriman data
=1/12 frekuensi kristal
Jika bit SM1 & SM0 dalam SCON adalah 00, menyebabkan SBUF dapat menerima
atau mengirim data 8 bit melalui pin RXD. Pin TXD digunakan sebagai jalur clock. Baudrate
tetap yaitu 1/12 frekuensi osilator.
Ketika mengirim data, data digeser keluar pin RXD setelah satu pulsa clock. Data
akan berubah ketika clock dalam fase falling edge / transisi dari high ke low.
Ketika menerima data dari pin RXD, data harus disinkronkan dengan pulsa clock
yang dihasilkan pada TXD.
Mode 1
Mode ini bekerja secara asinkron, data dikirim melalui kaki P3.1 (TxD) dan penerima
melalui kaki P3.0 (RxD). Pada Mode 1 data dikirim/ diterima adalah 10 bit sekaligus, diawali
71
dengan 1 bit start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya paling kecil
(bit 0), diakhiri dengan 1 bit stop. Pada MCS51 yang berfungsi sebagai penerima bit stop
ditampung pada RB8 dalam register SCON secara otomatis. Kecepatan pengiriman data
(baud rate) bisa diatur sesuai dengan keperluan. Mode ini dikenal sebagai UART (Universal
Asynchronous Receiver/ Transmitter).
Ketika SM0 dan SM1 adalah 01, SBUF menjadi 10-bit full-duplex
receiver/transmitter yang dapat menerima dan mengirim data pada waktu yang sama. Pin
RXD menerima semua data dan Pin TXD mengirim semua data.
Pengiriman data diawali dengan start bit, disusul dengan 8 bit data (Least Significant
Bit / LSB terlebih dahulu) dan diakhiri dengan stop bit. Interrupt flag TI akan 1 setiap kali 10
bit dikirim.
Pengiriman data dimulai ketika start bit diterima, disusul dengan 8 bit data dan
berakhir dengan diterimanya stop bit. Data 8 bit disimpan dalam SBUF dan stop bit disimpan
pada RB8 dalam SCON.sedangakan Interrupt flag RI akan berlogika 1 setiap kali 10 bit
diterima.
Mode 2
Data dikirim/ diterima 11 bit sekaligus, diawali dengan 1 bit start, disusul 8 bit data
yang dimulai dari bit yang bobotnya paling kecil (bit 0), kemudian bit ke 9 , diakhiri dengan
1 bit stop.
Pada MCS51 yang berfungsi sebagai pengirim, bit 9 ditampung di bit TB8 dalam
register SCON secara otomatis, sedangkan sebagai penerima, bit 9 ditampung pada bit RB8
dalam register SCON secara otomatis, sedangkan bit stop diabaikan tidak ditampung.
Kecepatan pengiriman data (baud rate) dipilih antara 1/32 atau 1/64 frekuensi osilator kristal.
72
Mode 2 sama dengan mode 1, tetapi jumlah data yang dikirim adalah 11 bit, dimulai
dengan start bit, 9 bit data dan diakhiri dengan 1 bit stop. Data ke-9 disimpan pada TB8
dalam SCON ketika proses pengiriman dan disimpan dalam RB8 ketika proses penerimaan.
Mode 3
Mode ini sama dengan Mode 2, hanya saja kecepatan pengiriman data (baud rate)
bisa diatur sesuai dengan keperluan, seperti halnya Mode 1. Baud rate untuk mode 1 dan 3
dihasilkan oleh Timer 1. Pengaturan baud rate untuk mode 1 dan 3 dapat dilakukan dengan
cara mengubah nilai SMOD, TMOD, dan TH1
Pada mode asinkron (Mode 1, Mode 2 dan Mode 3), port seri MCS51 bekerja secara
full duplex, artinya saat yang sama port seri ini bisa mengirim data sekaligus menerima data.
Register SBUF merupakan register penghubung port seri. Dalam ke-empat mode di
atas, semua instruksi yang mengakibatkan perubahan isi SBUF akan mengakibatkan port seri
mengirimkan data keluar dari MCS51. Agar port seri bisa menerima data, bit REN dalam
register SCON harus bernilai ‘1’. Pada mode 0, proses penerimaan data dimulai dengan
instruksi CLR RI, sedangkan dalam mode lainnya proses penerimaan data diawali oleh bit
start yang bernilai ‘0’. Data yang diterima oleh port seri dari luar MCS51, diambil dengan
instruksi MOV A,SBUF.
Mengambil data dari SBUF dan menyimpan data ke SBUF sesungguhnya bekerja
pada dua register yang berlainan, meskipun nama registernya sama-sama SBUF.
Baud rate untuk mode 2 memiliki 2 variasi tergantung dari kondisi SMOD. Rumus
baud rate untuk mode 2 adalah
Baud rate untuk mode 1 dan 3 dihasilkan oleh Timer 1. Pengaturan baud rate untuk
mode 1 dan 3 dapat dilakukan dengan cara mengubah nilai SMOD, TMOD, dan TH1. Nilai
baud rate dapat diperoleh dengan cara:.
73
Umumnya Timer 1 dioperasikan pada mode 2 (8-bit Auto Reload) sehingga dapat
ditentukan dengan cara:
Berdasarkan persamaan diatas user dapat menghitung berapa nilai TH1 yang
dibutuhkan jika diketahui baud rate yang diinginkan dengan cara:.
Pengaturan baud rate yaitu nilai baud rate dan nilai TH1 diusahakan harus tepat dan
bukan nilai pembulatan. Untuk komunikasi serial kecepatan tinggi, pembulatan terhadap
nilai-nilai tersebut dapat mengakibatkan kekacauan dalam proses pengiriman atau
penerimaan. Jika terdapat nilai pecahan, user disarankan untuk mengganti osilator dengan
frekuensi yang sesuai. Untuk komunikasi dengan kecepatan rendah, toleransi terhadap
kesalahan cukup besar sehingga pembulatan masih boleh dilakukan. Misalkan baud rate yang
diinginkan adalah 19200 bps dengan frekuensi osilator 11,0592 MHz. Dengan memasukkan
data ini ke dalam persamaan 5 maka akan didapat persamaan 6.
Jika 2SMOD bernilai ‘1’, maka akan didapat TH1 sebesar 254,5. Untuk menghindari
TH1 berupa pecahan, 2SMOD harus bernilai ‘2’ (SMOD bernilai ‘1’) sehingga didapat TH1
sebesar 253 atau FDh.
74
Untuk mendapatkan baud rate yang lambat, user dapat mengoperasikan Timer 1 pada
mode 1 dengan rumus pada persamaan 7.
Proses inisialisasi bertujuan untuk menentukan mode komunikasi serial dan baud rate
yang digunakan. Register yang harus diatur terlebih dahulu meliputi:
1. SCON
Langkah pertama adalah menentukan mode yang akan digunakan (mode 0, 1, 2, atau
3), kemampuan menerima data, dan nilai bit ke-9. Misalnya mode yang digunakan adalah
mode 1 dengan kemampuan menerima data namun tanpa komunikasi multiprosesor, maka
instruksinya adalah sebagai berikut:
MOV SCON, #01010000b
atau
MOV SCON, #50h
Atau
SETB SM1
SETB REN
Tabel 31. Isi SCON
75
Contoh Program:
ORG 100H
ACALL Inisialisasi
ACALL TERIMA
ACALL KIRIM
Inisialisasi :
MOV SCON,#50H
MOV TMOD,#20h
MOV TH1,#250
SETB TRI
RET
TERIMA: JNB RI,TERIMA
MOV A,SBUF
CLR RI
MOV P2,A
RET
KIRIM: CLR TI
MOV SBUF,A
JNB TI,$
SJMP TERIMA
END
76
Tugas:
1. Buatlah program untuk menerima data dengan Konfigurasi komunikasi serial mode 1,
Baud rate 2400 BPS kemudian setiap data yang diterima dari port 1 dikirimkan ke
port 0 selama 100 us.
2. Buatlah program untuk mengirim data dengan Konfigurasi komunikasi serial mode 1,
Baud rate 1200 BPS , data yang kirim berasal dari port 0.
3. Jelaskan prinsip kerja rangkaian dibawah ini, buatlah program
untuk
77