Microcontroller 8051

101
Triwiyanto - Jurusan Teknik Elektromedik A Software Oriented Device

Transcript of Microcontroller 8051

Page 1: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

A Software Oriented Device

Page 2: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Page 3: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

uC

Device

Programmer

APAKAH MIKROKONTROLLER ?

uC: sebuah komputer didalam  chip untuk mengontrol peralatan elektronik

Sebuah device memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini

Page 4: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

KENAPA MENGGUNAKAN MIKROKONTROLLER ?

Dengan penggunaan mikrokontroler ini maka : Sistem elektronik akan menjadi lebih ringkas Rancang bangun sistem elektronik akan lebih

cepat karena sebagian besar dari sistem adalah perangkat lunak yang mudah dimodifikasi

Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak

Page 5: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

APA MANFAATNYA ?Dengan menguasainya kita dapat menerapkan :1. Dalam kehidupan sehari-hari:

a. Toasterb. Mesin Cucic. Microwave dll.

2. Di bidang peralatan kedokter:a. Incubator babyb. Phototherapyc. Autoclave

d. Photometer dll.3. Di bidang industri

a. Pengaturan proses produksi b. Pengaturan Motor, Robotika, Telekomunikasi dll.

Page 6: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

BAGAIMANA CARANYA?

Desain ProgramAssembly(MIDE-51)

Org 0hmov A,10000000bmov P0,Aend

0001110101010101010101010101010101010101

Compile(MIDE-51)

PROGRAM

Download(ProgISP Soft.)

01000101001011110001000100101010000111101010

Test

Page 7: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

BAGAIMANA CARA MEMPELAJARINYA ?

1.Belajar sendiri (otodidak), Anda bisa mempelajari sendiri mikrokontroler dengan panduan buku dan peralatan yang diperlukan, mulailah dari contoh-contoh sederhana.

2.Melalui lembaga Pendidikan, cara kedua ini bisa Anda dapatkan baik melalui pendidikan formal seperti sekolah, perguruan tinggi, maupun pendidikan non formal (kursus, pelatihan, les dan sejenisnya).

Page 8: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Microcontroller A smaller computer On-chip RAM,

ROM, I/O ports... Example: Motorola’s

6811, Intel’s 8051, Zilog’s Z8 and PIC 16X, AVR

A single chipMicrocontroller :

Page 9: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

1. MIKROKONTROLER AT89S51 ISP ( In System Programmable )

1.1. Karakteristik Kompatibel dengan produk MCS-51 4K byte In System Programmable Flas Memory Dapat dilakukan pemrograman 1000 tulis dan hapus Range catu daya 4,0V s/d 5,0V Operasi statis: 0 Hz s/d 33 MHz Tiga Tingkat Program memory lock 128 x 8 bit RAM internal 32 Programmable Jalur I/O Dua 16 bit Timer/ Counter Enam Sumber Interupsi Full Duplex Serial Channel Low Power Idle dan Mode Power Down Watcht Dog Timer Fast Programming Time Fleksibel ISP programming

Page 10: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

1.2. Konfigurasi PIN

Page 11: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

CPU

On-chip RAM

On-chip Flash ROM

4 I/O Ports

Timer 0

Serial PortOSC

Interrupt Control

External interrupts

Timer 1

Timer/Counter

Bus Control

TxD RxDP0 P1 P2 P3

Address/Data

Counter Inputs

1.3. ARSITEKTUR

Page 12: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Comparison of the 8051 Family Members

Feature 8031 89C51 89S51

ROM (bytes) 0K 4k 4k

RAM (bytes) 128 128 128

Timers 2 2 2

I/O pins 32 32 32

Serial port 1 1 1

Interrupt sources 6 6 6

Programming ROM Ext Parallel Serial/ ISP

Page 13: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

DIRECT/INDIRECT

ADDRESSING128 RAMLOWER

DIRECTADDRESSING

128 RAMSFR

0

7F H80 H

FF HINDIRECT

ADDRESSING

128 RAMUPPER

80 H

FF H

4 K ROMINTERNAL

0000 H

0FFF H

RAM INTERNAL

P0

/EA

ALE

P2

/RD

/WR

8951

Register Nilai ( biner )

ACC 00000000

B 00000000

PSW 00000000

SP 00000111

DPTR 00000000

P0-P3 11111111

IP 00000000

IE 00000000

TMOD 00000000

TCON 00000000

THO 00000000

TL0 00000000

TH1 00000000

TL1 00000000

SCON 00000000

1.4. Memori map in 89s51 family

Page 14: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Contoh Program

LOC OBJ LINE ASSEMBLY

0000 1 org 0h0000 00 2 nop0001 E5B0 3 start: mov a,p30003 F590 4 mov p1,a0005 80FA 5 sjmp start0006 6 end

Memori Program ( ROM )

Contoh hasil kompilasi tersebut menjelaskan1. Data 00 di save ke alamat 0000H2. Data B0 di save ke alamat 0001H3. Data E5 di save ke alamat 0002h4. Data 90 di save ke alamat 0003H5. Data F5 di save ke alamat 0004H6. Data FA di save ke alamat 0005H7. Data 80 di save ke alamat 0006H

Page 15: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

CY AC FO RS1 RS0 OV - P

REGISTER PSW

Carry flag CY PSW.7Auxilarry carry flag AC PSW.6General purpose F0 PSW.5Register Bank Select RS1 PSW.4Register Bank Select RS0 PSW.3Over Flow OV PSW.2General purpose - PSW.1Parity P PSW.0

RS1 RS0 Bank Address

0 0 0 00H-07H

0 1 1 08H-0FH

1 0 2 10H-17H

1 1 3 18H-1FH

Memori Data (RAM)

RO R7R6R5R4R3R2R1

RO R7R6R5R4R3R2R1

RO R7R6R5R4R3R2R1

RO R7R6R5R4R3R2R1

OOH

12H11H1OH

OFH

O7H

O8H

18H

16H15H14H13H

OEHODHOCHOBH

O6HO5HO4HO3HO2HO1H

OAHO9H

1EH1DH1CH 1FH1AH19H 1BH

17H

20 H

2F HBIT-ADDRESSABLE SPACE

30 H

7F H

RAM SERBAGUNA

BANK 0

BANK 3

BANK 2

BANK 1

P0

P2

SCON SBUF

P1

TH1TH0TL1TL0TMODTCON

PCONDPHDPLSP

B

ACC

PSW

IP

P3

IE

80 H 87 H

88 H

90 H

98 H

A0 H

A8 H

B0 H

B8 H

D0 H

E0 H

F0 H

8F H

8951

Page 16: Microcontroller 8051

1.5. CLOCK CONNECTION

XTALL CONNECTION EXTERNAL CLOCK

Triwiyanto - Jurusan Teknik Elektromedik

Page 17: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Power-On RESET Circuit

+

RESET

Page 18: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

2. Set Instruction Assembly

MOV P0,A ;mov A to port 0 MOV A,#72H ;A=72H

MOV A, #’r’ ;A=‘r’ OR 72HMOV R4,#62H ;R4=62HMOV DPTR,#7634H ;DPTR=7634

Note 1:

MOV A,#30H ≠ MOV A,30H

Note 2:MOV A,R3 ≡ MOV A,3

2.1. Instruksi copy dataMOV dest, source ; dest = source

Page 19: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

SETB C ; C=1

SETB P0.0 ;bit 0 from Port 0 =1

SETB P3.7 ;bit 7 from port 3 =1

SETB ACC.2 ;bit 2 from ACCUMULATOR =1

Note:

CLR instruction is as same as SETB

i.e:CLR P0.0 ;P0.0=0

But following instruction is only for CLR:

CLR A ;A=0

2.2. Instruksi I/O Satu Bit

SETB bit ; bit=1CLR bit ; bit=0

Page 20: Microcontroller 8051

LED ( light emmiting diode )

Triwiyanto - Jurusan Teknik Elektromedik

Page 21: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 1.1. Menghidupkan/ Mematikan LED dengan perintah MOV

Start: mov P0,#00001111bsjmp startend

Start: mov P0,#11111110bcall delaymov P0,#11111101bcall delaysjmp start

Delay: mov R0,#255Del1: nop;

nop;nop;nop;djnz R0,Del1retend

Page 22: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 1.2. Menghidupkan/ Mematikan LED dengan perintah SETB dan CLR

Start: CLR P0.0 ; P0.0=0sjmp startend

Start: CLR P0.0; P0.0=0call delaySETB P0.0; P0.0=1call delaysjmp start

Delay: mov R0,#255Del1: nop;

nop;nop;nop;djnz R0,Del1retend

Page 23: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Instruksi Penjumlahan

2.3. Instruksi Aritmatika

Instruksi Pengurangan

ADD A, Source ;A=A+SOURCE

ADD A,#6 ;A=A+6ADD A,R6 ;A=A+R6ADD A,030H ;A=A+[0F3H]

SUBB A,source ;A=A-source-CY

SETB C ;CY=1SUBB A,R5 ;A=A-R5-1

Page 24: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Instruksi Perkalian

MUL AB ;B|A = A*B

DIV AB ;A = A/B, B = A mod B

MOV A,#25HMOV B,#65H

EX: MUL AB ;25H*65H=0E99;B=0EH, A=99H

MOV A,#25MOV B,#10

EX: DIV AB ;A=2, B=5

Instruksi Pembagian

Page 25: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

EXAMPLE:MOV R5,#89HANL R5,#08HMov A,#11000000bRR A ;[A]=01100000b

Example:INC R7 ;[R7]=[R7]+1DEC A ;[A]=[A]-1DEC 40H ; [40]=[40]-1

DEC byte ;byte=byte-1INC byte ;byte=byte+1

Instruksi Decrement dan Increment

ANL - ORL – XRL-CPLRR – RL – RRC – RLC

Instruksi Logika

Page 26: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Table Instruksi Aritmatika

MnemonicOperation

Addressing Mode Exect.

Dir Ind Reg Imm Timer uS

Add A,<byte> A=A+<byte> V V V V 1

Addc A,<byte> A=A+<byte>+C V V V V 1

Subb A,<byte> A=A-<byte>-C V V V V 1

Inc A A=A+1 Accumulator Only 1

Inc <byte> <byt>=<byt>+1 V V V 1

Inc DPTR DPTR=DPTR+1 Data Pointer Only 2

Dec A A=A-1 Accumulator Only 1

Dec <byte> <byt>=<byt>-1 V V V 1

Mul AB B:A=BxA Accumulator and B Only 4

Div ABA=Int[A/B]B=Mod[A/B]

Accumulator and B only 4

DA A Dec Adjust Accumulator Only 1

Page 27: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

2.4. Instruksi Logika

ANL - ORL – XRL-CPLEXAMPLE:

MOV R5,#89HANL R5,#08H

RR – RL – RRC – RLC EXAMPLE:

Mov A,#11000000bRR A ;[A]=01100000b

Page 28: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Example:

D7 D6 D5 D4 D3 D2 D1 D0

RL A ;rotate left A

Contoh:ORG 0H

START: MOV A,#00000001BPUTAR: RL A

SJMP PUTAREND

A = 00000010A = 00000100A = 00001000:A = 10000000A = 00000001A = dst.

CY D7 D6 D5 D4 D3 D2 D1 D0

RLC A ;rotate left and carry A

Contoh:ORG 0H

START: MOV A,#00000001BPUTAR: RLC A

SJMP PUTAREND

A = 00000010A = 00000100: :A = 10000000

C=1 A = 00000000A = 00000001dst.

RR A ;rotate right A

RRC A ;rotate right ;and carry A

Page 29: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Mnemonic OperationAddressing Mode Exect.

Dir Ind Reg Imm uS

Anl A,<byte> A=A and <byte> V V V V 1

Anl <byte>,A <byte>=<byte>anl A V V V V 1

Anl <byte>,#data <byte>=<byte>and #data V V V V 1

Orl A,<byte> A=A or <byte> Accumulator Only 1

Orl <byte>,A <byt>=<byt>orl A V V V 1

Orl <byte>,#data <byte>=<byte> or #data Data Pointer Only 2

Xrl A,<byte> A=A xor<byte> Accumulator Only 1

Xrl<byte>,A <byt>=<byt>xor A V V V 1

Xrl <byte>,#data <byte>=<byte>xor #data Accumulator and B Only 4

CLR A A=00h Accumulator only 1

CPL A A= not A Accumulator only 1

RL A Rotate A left 1 bit Accumulator only 1

RLC A Rotate A left trough Carry Accumulator only 1

RR A Rotate A right 1 bit Accumulator only 1

RRC Rotate A right trough carry Accumulator only 1

SWAP A Swap nibbles in A Accumulator only 1

Page 30: Microcontroller 8051

1. Implementasikan AND dan NOT

2. Implementasikan ORL dan ADC

3. Implementasikan NOT dan XOR

4. Sebuah A berisi 38h, lakukan geser data kekiri RL sebanyak 3x dan hasilnya di AND kan dengan 36h

5. Sebuah A berisi 78d, geser ke kanan RR 4x hasil tambahkan dg 10h

Triwiyanto - Jurusan Teknik Elektromedik

Page 31: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

2.5. LOOP and JUMP Instructions

DJNZ ( Decrement & Jump if Not Zero )

Ex.: write a program to clear ACC, then add 3 to the accumulator ten timeSolution:

MOV A,#0; MOV R2,#10

AGAIN: ADD A,#03 DJNZ R2,AGAIN ;repeat until R2=0 (10 times) MOV R5,A

CJNE (Compare & Jump if Not Equal )

Ex.: to detect, wheather the A= #8Get: Mov A, P1 Cjne A,#8, get end

Page 32: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

SJMP and LJMP:

LJMP(long jump)

Jump to any memory location from 0000 to FFFFH.

SJMP(short jump)

Jump to the relative address range of 00-FFH is divided into forward and backward jumps, that is , within -128 to +127 bytes of memory relative to the address of the current PC.

Page 33: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Other conditional jumps :Instruksi Keterangan Waktu(us)

JZ Jump if A=0 1

JNZ Jump if A/=0 1

DJNZ Decrement and jump if A/=0 2

CJNE A,#byte, label Jump if A/=byte 2

CJNE reg,#data,label Jump if byte/=#data 2

JC Jump if CY=1 1

JNC Jump if CY=0 1

JB Jump if bit=1 1

JNB Jump if bit=0 1

JBC Jump if bit=1 and clear bit 1

Page 34: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

CALL Instructions

which is used to call a subroutine.LCALL(long call)

LCALL can be used to call subroutines located anywhere within the 64K byte address space of the 8051.

ACALL(long call)ACALL can be used to call subroutines located anywhere within the 2K byte address space of the 8051.

CALL(a flexible call)ACALL can be used to call subroutines located anywhere within the address space of the 8051.

Page 35: Microcontroller 8051

SWITCH PUSH BUTTON

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 2.1. Menghidupkan LED melalui SW, dengan instruksi MOV

Start: mov A, P2mov P0, Asjmp startend

Percobaan 2.2. Menghidupkan/ mematikan LED melalui satu buah SW, dengan instruksi JB

setb P0.0Start: jb P2.0,start

nop;nop;nopcpl P0.0sjmp startend

Page 36: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 2.3. Menghidupkan dan mematikan LED melalui dua buah SW, dengan instruksi JB.

Start: JB P2.0, led_off MOV P0,#00000000b SJMP start

Led_off: JB P2.1, start MOV P0,#11111111b SJMP start END

Start: JB P2.0, led_off CLR P0.0 SJMP start

Led_off: JB P2.1, start SETB P0.0 SJMP start END

Page 37: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 2.3. Menghidupkan LED melalui SW, dengan instruksi JB. Rencanakan program untuk mendeteksi saklar P2.7, apabila ditekan maka LED P0.0 sd P0.3 Nyala dan yang lain padam, dan bila saklar P2.6 ditekan maka LED P0.4 sd P0.7 nyala dan yg lain padam.

?

Page 38: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Immediate Addressing Mode

MOV A,#65HMOV A,#’A’MOV R6,#65HMOV DPTR,#2343HMOV P1,#65H

Example :Num EQU 30…MOV R0,NumMOV DPTR,#data1…ORG 100Hdata1: db “Surabaya”

2.6. Addressing Modes

Page 39: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Register Addressing Mode

MOV Rn, A ;n=0,..,7

ADD A, Rn

MOV DPL, R6

MOV DPTR, A

MOV Rm, Rn

Page 40: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Direct Addressing Mode

Although the entire of 128 bytes of RAM can be accessed using direct addressing mode, it is most often used to access RAM loc. 30 – 7FH.

MOV R0, 40H MOV 56H, A MOV A, 4 ; ≡ MOV A, R4 MOV 6, 2 ; copy R2 to R6

; MOV R6,R2 is invalid !

SFR register and their address

MOV 0E0H, #66H ; ≡ MOV A,#66H MOV 0F0H, R2 ; ≡ MOV B, R2 MOV 80H,A ; ≡ MOV P1,A

Page 41: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Register Indirect Addressing Mode

In this mode, register is used as a pointer to the data.

MOV A,@Ri ; move content of RAM loc.Where address is held by Ri into A

MOV @R1,B ;( i=0 or 1 )

In other word, the content of register R0 or R1 is sources or target in MOV, ADD and SUBB insructions.

Example:Write a program to copy a block of 10 bytes from RAM location sterting at 30h to RAM location starting at 60h.

Solution:MOV R0,#30h ; source pointerMOV R1,#60h ; dest pointer MOV R2,#10 ; counter

L1:MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,L1

Page 42: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Indexed Addressing Mode And ROM Access

This mode is widely used in accessing data elements of look-up table entries located in the program (code) space ROM at the 8051

MOVC A,@A+DPTR

A= content of address A +DPTR from ROM Note:

Because the data elements are stored in the program (code ) space ROM of the 8051, it uses the instruction MOVC instead of MOV. The “C” means code.

Page 43: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Example:Assuming that ROM space starting at 250h contains “Hello.”, write a program to transfer the bytes into RAM locations starting at 40h.

Solution:ORG 0MOV DPTR,#MYDATAMOV R0,#40H

L1: CLR AMOVC A,@A+DPTRJZ L2MOV @R0,AINC DPTRINC R0SJMP L1

L2: SJMP L2;-------------------------------------

ORG 250HMYDATA:DB “Hello”,0

END

Notice the NULL character ,0, as end of string and how we use the JZ instruction to detect that.

Page 44: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Example:

Write a program to get the x value from P1 and send x2 to P2, continuously .

Solution:ORG 0MOV DPTR, #TAB1

L01:MOV A,P1MOVC A,@A+DPTRMOV P2,ASJMP L01

;----------------------------------------------------ORG 300H

TAB1: DB 0,1,4,9,16,25,36,49,64,81END

Page 45: Microcontroller 8051

7 SEGMEN

Triwiyanto - Jurusan Teknik Elektromedik

Page 46: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

C B A Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0

0 0 0 1 1 1 1 1 1 1 0

0 0 1 1 1 1 1 1 1 0 1

0 1 0 1 1 1 1 1 0 1 1

0 1 1 1 1 1 1 0 1 1 1

1 0 0 1 1 1 0 1 1 1 1

1 0 1 1 1 0 1 1 1 1 1

: : :

1 1 1 0 1 1 1 1 1 1 1

Tabel Kebenaran 74LS138

Percobaan 3.1. Display Huruf ADisplay huruf A pada 7 segmen ke 8

Start: MOV P0,#10001000b CLR P3.5 CLR P3.6 CLR P3.7 SJMP Start END

Percobaan 3.2. Display Huruf AbDisplay huruf Ab pada 7 segmen ke 8 & 7

Start: mov P0, #10001000bclr P3.5clr P3.6clr P3.7call delaymov P0, #10000011bsetb P3.5clr P3.6clr P3.7call delaysjmp Start

Delay: ----------------------------------------------retend

Page 47: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Interaksi 7 segmen dengan SW

Percobaan 3.3.Apabila 8 buah SW terhubung ke P2.0 sd P2.7 rencanakan program untuk mencetak karakter A bila P2.0 ditekan, dan mencetak karakter b bila P2.1 ditekan.

karA: JB P2.0,karB mov P0, #10001000b clr P3.5 clr P3.6 clr P3.7karB: JB P2.1, karA mov P0, #10000011b clr P3.5 clr P3.6 clr P3.7 sjmp karA end

Page 48: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Liquid Crystal Display

PIN Name Function Discription

1,16 VSS Ground

2 VCC Power Supply

3 VEE Contras

4 RS Register Select 0: D7..D0, interpreted as commands

1: D7..D0, interpreted as data 5 R/W Read/ Write 0: write data, 1: read data

6 E Enable 1 to 0: data/command are transferred to lcd

14..7 D7..D0 Data

15 BPL Back Pane Light cahaya background

Page 49: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

4.1. LCD Screen

1. LCD Screen terdiri dari 2 baris dan 16 kolom karakter

2. Setiap karakter terdiri 5x8 dot matrix3. Kontras dapat menggunakan pembagi

tegangan atau menggunakan potensio

Page 50: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

4.2. DDRAMDDRAM memory is used for storing characters that should be displayed. The size of this memory is sufficient for storing 80 characters. One part of these locations is directly connected to the characters on display.

Page 51: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

4.3. Basic CommandCommand RS RW D7 D6 D5 D4 D3 D2 D1 D0 Exec

Time(us)

Clear display 0 0 0 0 0 0 0 0 0 1 1.64 ms

Cursor home 0 0 0 0 0 0 0 0 1 X 1.64 ms

Entry mode set 0 0 0 0 0 0 0 1 I/D S 40 us

Display on/off 0 0 0 0 0 0 1 D U B 40 us

Cursor/display shift 0 0 0 0 0 1 D/C R/L X X 40 us

Function set 0 0 0 0 1 DL N F X X 40 us

Set DDRAM address 0 0 1 X X X X X X X 40 us

Set CGRAM address 0 0 0 1 X X X X X X 40 us

Write to CG/DDRAM 1 0 X X X X X X X X 40 us

Read fr. CG/DDRAM 1 1 X X X X X X X X 40 us

Page 52: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

3.4. Inisialisasi LCD Karakter

0 0 0 0 1 DL N F X X

Function Set

DL : Set Data Length (1= data length 8 bit, 0= data length 4 bit )

N : Set jumlah baris ( 1= 2 line display, 0=1 line display)

F : Set Character font (1= 5 x 10 dots; 0= 5 x 7 dots )

0 0 0 0 0 0 0 1 I/D S

Entry Mode Set

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

I/D : Set increment/ decrement ( 1= increment, 0= decrement )

S : Display Sift ( 1=on, 0=off )

Display On/ Off ControlRS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 0 0 1 D C B

B : Cursor blink ( 1= blink on,0=blink off )C : Cursor display (1=cursor on, 0=cursor off)

D : display On ( 1= display on)

Page 53: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Cursor or Display SiftShifts the cursor position or display to the right or left without writing or reading display data. This function is used to corect or search for the display

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 0 1 D/C R/L X X

Note : x = Dont care

D/C R/L Note

0 0 Shift cursor position to the left

0 1 Shift cursor position to the right

1 0 Shift the entire display to the left

1 1 Shift the entire display to the right

Page 54: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

0 0 1 A A A A A A A

Clear DisplayRS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

Dengan menuliskan instruksi tersebut maka semua tamplan akan reset

0 0 0 0 0 0 0 0 0 1

A : Lokasi memori display0000000 – 1111111 ( 00 h – 7F h )

Instruksi Pemilihan RAM

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ….

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F ….

Ram Display Address ( in Hexa )

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

Baris 1

Baris 2

Page 55: Microcontroller 8051

Percobaan 4.1.

Rencanakan program untuk mencetak sebuah karakter A pada baris 1 kolom 1

Triwiyanto - Jurusan Teknik Elektromedik

org 0hcall init_LCD

start: mov R1,#80h call write_inst mov R1,#'A' call write_datastop: sjmp stopInit_lcd: mov r1,#00000001b; Disp clear call write_inst mov r1,#00111000b; Function Set call write_inst mov r1,#00001100b; Disp.on call write_inst mov r1,#00000110b ;Entry mode call write_inst retWrite_inst: clr P3.6 ; RS =0 mov P0,R1 setb P3.7 ; EN=1 call delay clr P3.7 ; EN =0

ret

Write_data: setb P3.6 mov P0,R1 setb P3.7

call delay clr p3.7 ret;delay: mov R0,#0delay1: mov R7,#0fh djnz R7,$ djnz R0,delay1 ret

end

Page 56: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 4.2. Rencanakan program untuk mencetak kalimat “Selamat Datang “ pada baris 1

org 0h call init_LCDStart: call write_charStop: sjmp stop;write_char: mov dptr,#word1 mov r3,#16 mov r1,#80h call write_inst;write1: clr a movc a, @a+dptr mov r1,A inc dptr call write_data; djnz r3,write1 ret

Write_inst: …( lihat percb. Sebelumnya) ret

;Write_data: …( lihat percb. Sebelumnya)

ret;Init_LCD: …( lihat percb. Sebelumnya)

ret;Delay: …( lihat percb. Sebelumnya) retword1: DB ' Selamat Datang'; end

Page 57: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

5. Analog to Digital Converter 0804V C C

D1

3V

G 74LS 244

P 3.2

10k

P 3.3

P 3.4

V C C

10

10k

V C C

V C C

150p

13

2

13

2

10k

8

R6

220

A DC080467

9

1 11 21 31 41 51 61 71 8

1 94

5

123

+ I N-I N

V R E F / 2

D B 7D B 6D B 5D B 4D B 3D B 2D B 1D B 0

C L K RC L K I N

I N TR

C SR D

W R

20P 1.7..P 1.0

P ROG

RUN/ E N A DC

65

4

32

1

maksVV INREF 21

255

MAKSVV INRESOLUSI

Pin ADC 0804 Fungsi/INTR End of conversion, active low/WR Start conversion, pulse transition/RD Read data

D0 s/d D7 Data/CS Chip Select, active low

CLK IN/ CLK R Clock OscilatorVref Tegangan referensiVin Tegangan input

Page 58: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 5.1. Rencanakan program untuk menampilkan data ADC0804 ke LCD karakter 2x16, seperti yang ditunjukkan pada gambar.

ratusan equ 30hpuluhan equ 31hsatuan equ 32h org 0h call init_LCD call write_charstart: call ADC call Bin2Dec call Write2LCD sjmp start;ADC: clr P3.3

nopsetb P3.3

eoc: jb P3.2,eocclr P3.4mov A,P1setb P3.4ret

Write2LCD: mov r1,#089h call write_inst mov a,ratusan add a,#30h mov r1,a call write_data; mov r1,#08ah call write_inst mov a,puluhan add a,#30h mov r1,a call write_data; mov r1,#08bh call write_inst mov a,satuan add a,#30h mov r1,a call write_data ret

Bin2Dec: mov b,#100d div ab mov ratusan,a mov a,b mov b,#10d div ab mov puluhan,a mov satuan,b ret ;write_char: mov dptr,#word1 mov r3,#16 mov r1,#80h acall write_inst;write1:clr a movc a,@a+dptr mov r1,A inc dptr acall write_data djnz r3,write1 ret

Init_lcd: …ret

;Write_data: …

ret;Write_inst: ….

ret;Delay: ....

ret

word1: DB ‘Data : 'end

Page 59: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Page 60: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Watch out !, you maymiss my overflow every 10s. Ifyou get sleep

COUNTER UP/DOWNUP 4 BIT Co

74193 D3 D2 D1 D0

What a number to be loaded to my register, soI can get pulse out every 10 s on Co

My heart beatperiode is 1 Hznow Think smart, you must load data

: 16-10 = 6 or 0110 b on me

COUNTER UPClock 16 BIT TF1

TH1(D15..D8) TL1(D7..D0)

I just finishedMy work out.So, my heartBeat is 1 MHz,Now

If you loaded, TL1 =00 TH1 =00, then you, need 65536 pulse. To Get overflow on my TF1

If my periode input clock is 1 uSThen I wil interupt you, after1 uS x 65536 = 0.065536 s

Load

Page 61: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

COUNTER UPClock 16 BIT TF1

TH1(D15..D8) TL1(D7..D0)

Clock = 1 Mhz

0E0h0B1h

Over flow, after 20000 us = 0.02 s

To get over flow after 20000 uS or 0.02 s : 65536 – 20000 = 45536 or 0B1E0 h

To get over flow after 10000 uS or 0.01 s : 65536 – 10000 = 55536 or 0D8F0 h

Data to be loaded toTL1 and TH1 Register

9. Basic Timer/ Counter

Page 62: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

MODE COUNTER OR TIMER

XTALL/12

G C/T M1 M0 G C/T M1 M0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TL1 TH1

TMOD

TCON

0 = S1 keatas1 = S1 kebawah

S1

0 = S2 buka1 = S2 tutup

S2

Limpahan Timer/ Counter

T1/ P3.5

INT1/ P3.3

89C51

Timer1 Timer 0

Pemilihan Mode: Counter or Timer Mulai mencacah

Overflow on TFx

Page 63: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

M1 M0 OPERATING0 0 Mode 0: 13 bit Timer/ Counter

0 1 Mode 1: 16 bit Timer/ Counter

1 0 Mode 2: 8 bit auto reload Timer/ Counter. THx menerima data yang akan direload ke TLx setiap kali TLx overflow

1 1 Mode 3: 8 bit Timer/ Counter by TL0. TH0 merupakan 8 bit Timer yang dikontrol dari Timer 1

Gate C/T M1 M0 Gate C/T M1 M0

TIMER 1 TIMER 0

TMOD REGISTER

Page 64: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TCON REGISTER ( BIT ADDRESSABLE REGISTER)

TIMER 1 TIMER 0 TIMER 1 TIMER 0BIT SYMBOL FUNCTION

TCON.7 TF1 Timer 1 overflow flag. Set by harware on timer/counter overflow. Clear by hardware when processor vectors to interupt routine, or clearing by software

TCON.6 TR1 Timer 1 run control bit. Set/cleared by software to turn timer/counter on/off

TCON.5 TF0 Idem timer 0

TCON.4 TR0 Idem timer 0

TCON.3 IE1 Interupt 1 Edge flag, set by harware when external interrupt edge detected. Cleared when interupt processed

TCON.2 IT1 Interrupt 1 type control bit. Set/ Cleared by software to specify falling edge/ low level triggered external interupt

TCON.1 IE0 Idem timer 0

TCON.0 IT0 Idem timer 0

Page 65: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

MODE 1 : TIMER 16 BIT ON TIMER 1

XTALL/12

0 0 0 1 0 0 0 0

TF1TR1

TL1

TMOD

TCON

0 = S1 keatas1 = S1 kebawah

S1

0 = S2 buka1 = S2 tutup

S2

T1/ P3.5

INT1/ P3.3

89C51

COUNTER 16 BIT

TH1 P1.0

OSCILOSCOPE

Please load a number to my register ( TL1, TH1)tobe counted, byMOV TH1,#0D8hMOV TL1,#0EFh

Page 66: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

XTALL/12

0 0 1 0 0 0 0 0

TF1TR1

TL1( 8 BIT )

TMOD

TCON

0 = S1 keatas1 = S1 kebawah

S1

0 = S2 buka1 = S2 tutup

S2

T1/ P3.5

INT1/ P3.3

89C51

COUNTER 16 BIT

TH1 (8 BIT)

P0.0

OSCILOSCOPE

LATCH

MODE 2 : 8 BIT AUTO-RELOAD

Reload data 8 bit on TH1

RUN as TIMER

SETB TR1 to Start RUN

Page 67: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

XTALL/12

0 1 1 1 0 0 0 0

TF1

TR1

TL1

TMOD

TCON

0 = S1 keatas1 = S1 kebawah

S1

0 = S2 buka1 = S2 tutup

S2

T1/ P3.5

INT1/ P3.3

89C51

COUNTER 8 BIT

‘1’

MODE 3 : COUNTER 8 BIT ON TIMER1

Page 68: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 6.1. Rencanakan program untuk menghitung clock eksternal dengan menggunakan fungsi Counter pada TIMER 0, tampilkan pada display 7 segmen dengan nilai desimal : 000 sd. 255.

Hubungkan pin T0/P3.4/ pin 14 pada IC 89s51 ke clock generator

Page 69: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

hundreds equ 30hTens equ 31hUnits equ 32h Org 0h Mov TMOD,#00000100b Setb TR0 Get: Mov A, TL0 Call Bin2Dec Call Display7Segmen Sjmp Get ;Bin2Dec: mov b,#100d div ab mov hundreds,a mov a,b mov b,#10d div ab mov tens,a mov units,b ret

Display7Segmen: clr P3.5 clr P3.6 clr P3.7 mov A, Hundreds mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay ; setb P3.5 clr P3.6 clr P3.7 mov A, Tens mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay clr P3.5 ; setb P3.6 clr P3.7 mov A, units mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay ret

delay: mov R1,#25del1: mov R2,#25del2: djnz R2,del2 djnz R1,del1 ret;Data7segmen: db 11000000b,11111001b,10100100b,10110000b,10011001b db 10010010b,10000010b,11111000b,10000000b,10010000b ; end

Page 70: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

05.00BANGUN PAGI

06.00SARAPAN

07.00KULIAH

15.00KERJAKAN TGS.

18.00 MAIN

19.00BELAJAR

?

21.00TIDUR

RUTINITAS dan PRIORITAS KARENA INTERUPSI

Page 71: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Page 72: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Page 73: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

EA X X ES ET1 EX1 ET0 EX0

LSBMSB INTERRUPT ENABLE REGISTER ( IE )

BIT SYMBOL FUNCTION

IE.7 EA Disables all interrupts.If EA=0, no interrupt will be acknoledged. If EA=1,each interrupt source is individually enabled/ dis.by software

IE.6 - Reserved

IE.5 - Reserved

IE.4 ES Enables or dis. the serial port interrupt, if ES=0, -> disabled

IE.3 ET1 Enables or dis. the timer 1 overflow interrupt, if ET1=0 -> disabled

IE.2 EX1 Enables or dis. External interrupt 1.If EX1=0 -> disabled

IE.1 ET0 Enables or dis. the timer 0 overflow interrupt, if ET0=0 -> disabled

IE.0 EX0 Enables or dis. External interrupt 0.If EX0=0 -> disabled

Page 74: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

X X X PS PT1 PX1 PT0 PX0

LSBMSB

INTERRUPT PRIORITY REGISTER ( IP )

BIT SYMBOL FUNCTION

IP.7 - Reserved

IP.6 - Reserved

IP.5 - Reserved

IP.4 PS Defines the serial port interrupt. PS=1 programs it to the higher priority

IP.3 PT1 Defines the timer 1

IP.2 PX1 Defines the external 1

IP.1 PT0 Defines the timer 0

IP.0 PX0 Defines the external 0

Page 75: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

VEKTOR INTERUPSI

Source Vector AddressIE0 0003HTF0 000BHIE1 0013HTF1 001BH

RI + TI 0023H

Page 76: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Interupsi Eksternal 0Org 0hSjmp StartOrg 03hLjmp AdaInterupsiEkst0

Start: call InitInterupsiEkst0;Forever: setb P1.0

`sjmp Forever;InitInterupsiEks0:

Setb P1.0Setb IT0; hi to lowSetb EX0; en ext int 0Setb EA; en globalret

AdaInterupsiEkst0:Clr P1.0reti

end

INT0

P1.0

Rencanakan program untuk menanggapi sebuah interupsi pada INT0 transisi hi-lo, sehingga bila ada interupsi maka P1.0 = 0 dan kembali lagi P1.0=1.

Page 77: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Interupsi TF0Org 0hSjmp StartOrg 0BhLjmp AdaInterupsiTF0

Start: call InitInterupsiTF0;Forever: sjmp Forever;InitInterupsiTF0:

Setb P1.0Setb ET0Setb EAcall LoadDataret

LoadData: Mov TMOD,#....... Mov TL0,#.... Mov TH0,#.... Setb TR0 ret

AdaInterupsiTF0:Clr P1.0call Loaddatareti

end

TF0

P1.0

Rencanakan program untuk menanggapi sebuah interupsi yang dibangkitkan oleh Timer0,Mode 1 melalui bit TF0, sehingga bila tidak ada interupsi P1.0 = 1, dan ada interupsi P1.0 =0. Interupsi akan dibangkitkan setiap 50.000 us.

Page 78: Microcontroller 8051

Latihan

Triwiyanto - Jurusan Teknik Elektromedik

1. Rencanakan program untuk menanggapi interupsi pada INT0 level, sehingga bila:1. Ada interupsi: buzer bunyi2. Tidak ada interupsi : Display ATentukan: a. subrutin InitIntExt0 b. Subrutine Display A, c. Keseluruhan

2. Rencanakan program untuk menanggapi interupsi pada INT Transisi, sehingga bila:1. Ada interupsi: buzer bunyi2. Tidak ada interupsi : Display OTentukan: a. subrutin InitIntExt1 b. Subrutine Display O, c. Keseluruhan

3. Rencanakan program untuk melayani interupsi dari TIMER 0 mode 2 sebagai TIMER, dan melayani interupsi setiap 250 uS, bila:1. Tidak ada interupsi : Display L2. Ada Interupsi : buzer berbunyiTentukan: a. Init Interupsi Timer b. Subrutine Display L c. Rutin Keseluruhan

Page 79: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Page 80: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

The Power of Serial Comm. RS232SINKRON KOMUNIKASI1. Dua buah divais diinisialisasi atau disinkronisasi menggunakan clock

yang sama dan secara kontinu dapat mengirimkan atau menerima karakter untuk tetap sinkron.

2. Komunikasi sinkron mempunyai kecepatan yang lebih tinggi bila dibandingkan dengan asinkron, karena tidak ada penambahan bit, untuk menandai permulaan dan akhiran byte data.

3. Port Serial pada PC adalah asinkron divais, sehingga hanya support untuk komunikasi serial asinkron

D0 D6D5D4D3D2D1 D7DATA

CLOCK

Page 81: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

ASINKRON KOMUNIKASI1. Asinkron berarti tanpa sinkronisasi, sehingga tidak diperlukan

pengiriman sinyal clock.2. Akan tetapi, pada setiap awalan dan akhiran harus ditandai dengan bit

start dan bit stop.3. Start bit menunjukkan, bahwa data akan segera dikirim atau diterima,

dan bit stop menyatakan akhiran dari sinyal.4. Keperluan penambahan pengiriman dua bit ini akan menyebabkan

komunikasi asinkron akan lebih lambat bila dibandingkan dengan komunikasi sinkron.

5. Pada jalur asinkron, kondisi idle dinyatakan sebagai nilai ‘1’ ( yang juga disebut sebagai keadaan mark )

Page 82: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

PANJANG KABEL KOM. RS2321. Standart RS232 menyarankan batasan panjang kabel 50 feet

( 1 m = 3,3 feet ) 2. Sesungguhnya kita dapat mengabaikan standard ini, karena

kabel dapat lebih panjang dari 10.000 feet pada baudrate sampai 19200 bps, jika kita menggunakan kabel yang berkualitas dan terlindungi.

BaudrateBPS

Shielded Cable Length(feet)

Unshielded Cable Length(feet)

9600 250 100

4800 500 250

2400 2000 500

1200 3000 500

300 4000 1000

110 5000 1000

Page 83: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Standart RS232RS232 LEVEL

Page 84: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Interfacing Serial Port pada Mikrokontroller

Interfacing port serial lebih sulit dibandingkan dengan port parallel. Pada beberapa peralatan telah memiliki port serial untuk berkomunikasi dengan komputer atau peralatan lain.

Apa keuntungan menggunakan serial komunikasi ?

1. Kabel serial dapat lebih panjang dibandingkan kabel parallel. Port Serial mentransmisikan logika ‘1’ dengan tegangan ~ -25V dan logika ‘0’ dengan tegangan ~ +25V. Dibandingkan parallel : 0 dan 5 V. Cable Loss bukan menjadi masalah utama pada transmisi data secara serial.

2. Anda tidak memerlukan kabel yang banyak, dibandingkan parallel. Hanya perlu 3 kabel, bandingkan dengan cara parallel, sehingga biaya lebih murah.

Page 85: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Port Serial pada Mikrokontroller

YOU CAN CONTROL YOUR DEVICEFROM REMOTE PLACE, JUST BY THREE CABLE

Start Stop

P3.0/ RXD

P3.1/ TXD

T1OUT

R1IN

GND

R1OUT

T1IN

RS232 89C51

RD(2)TD(3)

GND (5)

COMM 1,COMM 2 Etc. ( DB 9 )

My job is to convertRS232 level to TTLLogic Level

2400 bps

Page 86: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Port Serial PCPin Assignment Description

1 DCD Data carrier detect

2 RXD Receive data

3 TXD Transmit data

4 DTR Data terminal ready

5 GND Signal ground

6 DSR Data set ready

7 RTS Request to send

8 CTS Clear to send

9 RI Ring indicator

Base Address: -3F8 h-2F8 h

Page 87: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

KONVERTER RS232 TO TTL/ TTL TO RS232

V C C

M A X2321 3

81 11 0

134526

1 291 47

R 1 I NR 2 I NT1 I NT2 I N

C +C 1 -C 2 +C 2 -V +V -

R 1 O U TR 2 O U TT1 O U TT2 O U T

+ 10u

P 3.1 ( Tx )

+

10u

+

10u

P 3.0 ( Rx )

15P 1

P C DB 9 M ale

594837261

+

10u

16

V C C

Page 88: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

SERIAL PORT DAPAT DIOPERSIKAN DALAM 4 MODE

1. Mode O : Mode Sinkron, data dikirim dan diterima melalui P3.0, dan menyalurkan clock melalui P3.1

2. Mode 1 :10 bit are transmitted ( through TxD ) or receive (through RxD), a start bit (0), a 8 bit data ( LSB first ), and a stop bit (1). On receive, the stop bit goes into RB8 in SFR SCON. The baud rate is variable.

3. Mode 2 : 11 bit are transmitted ( through TxD ) or receive ( through RxD ), a start bit (0), a 8 bit data ( LSB first ), 9th bit and a stop bit (1).

4. Mode 3 : idem mode 2, baudrate dapat diatur

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 yang diterima port seri diambil dari SBUF pula

D7 D6 D5 D4 D3 D2 D1 D0

SBUF - SERIAL BUFFER REGISTER

Page 89: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

SM2 Enables the multiprocessor communication feature in Modes 2 and 3. In Mode 2 or 3, if SM2 is set

to 1, then Rl will not be activated if the received 9th data bit (RB8) is 0. In Mode 1, if SM2=1 then RI will not be activated if a valid stop bit was not received. In Mode 0, SM2 should be 0.

REN Enables serial reception. Set by software to enable reception. Clear by software to disable reception.

TB8 The 9th data bit that will be transmitted in Modes 2 and 3. Set or clear by software as desired.

RB8 In Modes 2 and 3, is the 9th data bit that was received. In Mode 1, it SM2=0, RB8 is the stop bit that was received. In Mode 0,RB8 is not used

TITransmit interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or at the

beginning of the stop bit in the other modes, in any serial transmission. Must be cleared by software.

RIReceive interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or halfway

through the stop bit time in the other modes, in any serial reception (except see SM2). Must be cleared by software.

SM0 SM1 SM2 REN TB8 RB8 TI RI

SCON - SERIAL PORT CONTROL REGISTER

SM0 SM1 MODE Keterangan Baudrate

0 0 0

0

0

1

1

1 1

1

2

3

Sinkron

UART 8 BIT

UART 9 BIT

UART 9 BIT

TETAP (fosc/12)

VARIABEL

TETAP (fosc/32 danfosc/64)

VARIABEL

Page 90: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Menggunakan Timer 1 untuk membangkitkan Baud RateKetika timer 1 digunakan untuk membangkitkan clock baud rate, baud rate pada mode 1 dan 3 adalah ditentukan oleh laju overflow timer 1 dan nilai dari SMOD. Penentuan baud rate untuk mode 1 dan 3 adalah sebagai berikut:

Interupsi timer 1 harus disable pada aplikasi ini. Pada kebanyakan aplikasi, timer ini dioperasikan sebagai timer, dengan mode auto reload mode 2. Pada kasus ini baud rate diberikan dengan rumus sebagai berikut:

Page 91: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Baudrate untuk Timer1 sebagai generator Baudrate

Baud Rate FrekuensiKristal

SMOD Nilai Isi Ulang TH1

Baud rateAktual

9600 12 MHz 1 F9h 8923

2400 12 MHz 0 F3h 2400

1200 12 MHz 0 F6h 1202

-SMOD -- GF1 GF0 PD IDL

PCON - POWER CONTROL REGISTER

NOTE:Baudrate untuk mode 2 bergantung pada nilai bit SMOD pada register PCON.Jika SMOD=0, baudratenya 1/64 frekuensi oscilator, jika SMOD=1 maka baudratenya1/32 frekuensi oscilator

Page 92: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 7.1 Rencanakan program untuk mengendalikan LED melalui port serial communication

Bahasa pemrograman: Delphi, Visual Basic, C dll

File: *.HEX

Page 93: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

{ pemrograman Delphi }procedure TForm1.Button1Click(Sender: TObject);var data:byte; count:integer;begin data:=255-1 count:=1; comport1.write(data,count);end; ; procedure TForm1.Button2Click(Sender: TObject);var data:byte; count:integer;begin data:=255-2 count:=1; comport1.write(data,count);end;

; Program Assemblyorg 0h

nopGets: call initserial call inchar mov P0,a sjmp gets;Initserial:mov scon,#50h mov tmod,#20h mov th1,#0F3h setb tr1 retinchar:detect: jnb ri,detect ;

clr ri mov a,sbuf ret

End

Page 94: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Percobaan 7.2. Rencanakan program untuk mengirimkan Data ADC melalui komunikasi serial RS232 ke PC

{ Pemrograman Delphi }procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);var buff:string;y:integer;begin comport1.ReadStr(buff,count); y:=ord(buff[1]); edit1.text:=inttostr(y);end;

Page 95: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

Pemrograman Assembly pada Mikrokontroller:

call initserial;start: call ADC call Sendout sjmp start;ADC: clr P3.3

nopnopsetb P3.3

eoc: jb P3.2,eocclr P3.4mov A,P1setb P3.4ret

Sendout:detect: jnb ti,detect clr ti mov sbuf,a ret;initserial: mov scon,#52h mov tmod,#20h mov th1,#0F3h; 2400 bps setb tr1 ret

end

Page 96: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

1. Rencanakan program untuk komunikasi serial dengan data yang dikirim 3Bh, dalam mode 1, dengan kecepatan 4800BPS, dan bit SMOD=1, tentukan a)Gambar sinyal dalam format TTL, b) gambar sinyal dalam format RS232, c) Hitung nilai TH1 bila xtall yang dipakai 11,0592 MHz.

2. Idem dengan data yg dikirim 1Fh, kecepatan 9600, tentukan a) idem, b, idem, c) idem dengan xtall 12MHz

3. Rencanakan program untuk mengirimkan karakter 1, 2, dan 3 secara berturutan dari mikro ke PC dengan kecepatan 4800, SMOD=1, xtall 11.0592 MHz, a) Tentukan TH1, b) tentukan program untuk mengirim data2 tersebut

4. Rencanakan program untuk menjumlahkan 3+4 dan hasilnya dikirim via serial ke PC, dengan Baudrate 2400, Xtall: 11.0592 MHz a) Tentukan TH1, b) tentukan program untuk mengirim data ke PC

5. Tentukan program untuk mengambil data dari PC, yaitu karakter 1 dan 2 bila terdapat karakter 1 maka semua LED akan OFF dan bila karakter 2 maka semua LED akan ON ( LED terhubung ke P1 ), baudrate 1200, xtall: 12MHz, a) tentukan TH1, b) tentukan program untuk ambil data tersebut.

Page 97: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

1. Rencanakan sebuah sistem yang memanfaatkan TIMER, dengan menggunakan mode 2 pada TIMER0, berapakah data yang harus diloadkan ke TH0 bila diinginkan overflow setiap 100uS, a. Bagaimanakah inisialisasi sebagai fungsi TIMERb. bila terjadi overflow maka sebuah LED yang terhubung ke P0.0

akan nyala, selain itu maka akan padam.2. Rencanakan sebuah sistem yang memanfaatkan COUNTER, dengan

menggunakan mode 2, pada TIMER1, data counter dioutputkan pada P0.a. Bagaimanakah inisialisasi sebagai fungsi counter tersebutb. Bagaimana instruksi untuk mendeteksi bila TL1>10 maka LED

yang terhubung ke P0 akan padam semua3. Rencanakan sebuah interupsi yang dibangkitkan oleh timer, pada

mode 1 (13 bit), dengan kejadian interupsi setiap 5000 us.a. Bagaimanakah inisialisasi sistem interupsi tersebutb. Buatlah program bila terjadi interupsi maka akan memproses 2+3

dan dikirim ke P0

Page 98: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

1. Rencanakan program untuk mendeteksi saklar SW1 dan SW2, yang masing2 terhubung ke P2.0 dan P2.1, bila SW1 ditekan maka akan kirim karakter A via serial, bila SW2 ditekan maka akan kirim karakter B via serial, dengan BPS 4800, xtall 11,0592 MHz, SMOD=1, a) tentukan TH1, b) tentukan program untuk deteksi dan kirim data.

2. Rencanakan program idem, bila SW1 (P3.6) ditekan maka akan mengirimkan hasil perkalian 5*7 via serial dan bila SW2(P3.7) ditekan maka akan mengirimkan hasil pembagian 12/4 via serial dengan baudrate 2400, xtall 11,0592 MHZ, SMOD=1, a) tentukan TH1, b) tentukan program untuk deteksi dan kirim data

Soal Latihan

Page 99: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

3. Rencakan program untuk mendeteksi interupsi eksternal transisi, pada INT1, bila terjadi interupsi maka akan mengirim sebuah karakter ‘A’ dan ‘B’ secara berturutan, via komunikasi serial. Dengan keterangan, BPS 1200, xtall 12MHz, SMOD=1, a) tentukan program untuk inisialisasi interupsi external b) tentukan program keseluruhan ( bila sudah diketahui subrutin: sendCHAR, InitSerial)

4. Rencanakan program untuk menangkap interupsi TIMER 0 mode 16 bit, sebagai TIMER, bila terjadi OverFlow setiap 50.000 us maka program akan mengirimkan data karakter ‘A’ via serial dan sebaliknya bila tidak terjadi interupsi maka program terus menerus akan mengirimkan karakter ‘B’ via serial. (BPS: 4800, xtall 12MHz, SMOD=1) a) tentukan program inisialisasi TIMER0 mode 16 bit b) tentukan program keseluruhan ( bila sudah diketahui subrutine: sendCHAR, dan InitSerial.

Page 100: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

1. Rencanakan rangkaian power On Reset, dan jelaskan cara kerjanya v2. Rencanakan program untuk mengisi data 05h ke R0 v3. Rencanakan program untuk mengisi data 50h ke R1 bank 1 v4. Rencanakan program untuk mengisi data 11d ke alamat 30h v5. Rencanakan program untuk mengisi data 30h ke alamat R7 bank 2 dan

copykan ke R0 bank 2 v6. Rencanakan program untuk mengisi data 40h ke alamat R3 bank 3 dan

copykan ke R2 bank 37. Rencanakan program untuk mengisi data 23d ke alamat 30h dan copykan ke

alamat 40h8. Rencanakan program untuk mengisi data 45h ke akumulator, dan copykan ke

R0 bank 1

Page 101: Microcontroller 8051

Triwiyanto - Jurusan Teknik Elektromedik

TERIMAKASIH

A K H I R N Y A

Email : [email protected] messanger : [email protected] : 08155126883, 03177406013