Top Banner

of 114

Microcontroller 8051

Oct 19, 2015

Download

Documents

Rizky Waldian

Makalah Hematologi AnalyzerMakalah Hematologi AnalyzerMakalah Hematologi AnalyzerMicrocontroller 8051Microcontroller 8051
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • A Software Oriented Device

    Triwiyanto - Jurusan Teknik Elektromedik

  • 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

    Triwiyanto - Jurusan Teknik Elektromedik

    uC

    Device

    Programmer

  • 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 dimodifikasiPencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak

    Triwiyanto - Jurusan Teknik Elektromedik

  • APA MANFAATNYA ?Dengan menguasainya kita dapat menerapkan :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 industria. Pengaturan proses produksi b. Pengaturan Motor, Robotika, Telekomunikasi dll.

    Triwiyanto - Jurusan Teknik Elektromedik

  • BAGAIMANA CARANYA?

    Triwiyanto - Jurusan Teknik Elektromedik

    Desain Program Assembly(MIDE-51)

    Org 0hmov A,10000000bmov P0,Aend

    0001110101010101010101010101010101010101

    Compile(MIDE-51)

    PROGRAM

    Download(ATMEL Soft.)

    01000101001011110001000100101010000111101010

    Test

  • BAGAIMANA CARA MEMPELAJARINYA ?Belajar sendiri (otodidak), Anda bisa mempelajari sendiri mikrokontroler dengan panduan buku dan peralatan yang diperlukan, mulailah dari contoh-contoh sederhana. 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).

    Triwiyanto - Jurusan Teknik Elektromedik

  • BELAJAR MIKROKONTROLLER ?SOFTWARE, BHS. ASSEMBLY-> 60 %HARDWARE, ARSITEKTUR -> 40 %

    Triwiyanto - Jurusan Teknik Elektromedik

  • MIKROKONTROLLER AT89S51Mikrokontroller 8 bit dengan 4K byte ISP ( In System Programmable )FITUR:Kompatibel dengan produk MCS-514K byte In System Programmable Flas MemoryDapat dilakukan pemrograman 1000 tulis dan hapusRange catu daya 4,0V s/d 5,0VOperasi statis: 0 Hz s/d 33 MHzTiga Tingkat Program memory lock128 x 8 bit RAM internal32 Programmable Jalur I/ODua 16 bit Timer/ CounterEnam Sumber InterupsiFull Duplex Serial ChannelLow Power Idle dan Mode Power DownWatcht Dog TimerFast Programming TimeFleksibel ISP programming

    Triwiyanto - Jurusan Teknik Elektromedik

  • IntroductionCPU for ComputersNo RAM, ROM, I/O on CPU chip itselfExample: Intels x86, Motorolas 680x0CPUGeneral-Purpose Micro-processorRAMROMI/O PortTimerSerial COM PortData BusAddress BusGeneral-Purpose Microprocessor SystemMany chips on mothers boardGeneral-purpose microprocessor

    Triwiyanto - Jurusan Teknik Elektromedik

  • A smaller computerOn-chip RAM, ROM, I/O ports...Example: Motorolas 6811, Intels 8051, Zilogs Z8 and PIC 16XRAMROMI/OPORTTIMERPORTSERIALMicrocontrollerCPUA single chipMicrocontroller :

    Triwiyanto - Jurusan Teknik Elektromedik

  • Microprocessor CPU is stand-alone, RAM, ROM, I/O, timer are separatedesigner can decide on the amount of ROM, RAM and I/O ports.expansiveversatility general-purpose

    MicrocontrollerCPU, RAM, ROM, I/O and timer are all on a single chipfix amount of on-chip ROM, RAM, I/O portsfor applications in which cost, power and space are criticalsingle-purposeMicroprocessor vs. Microcontroller

    Triwiyanto - Jurusan Teknik Elektromedik

  • meeting the computing needs of the task efficiently and cost effectivelyspeed, the amount of ROM and RAM, the number of I/O ports and timers, size, packaging, power consumptioneasy to upgradecost per unitavailability of software development toolsassemblers, debuggers, C compilers, emulator, simulator, technical supportwide availability and reliable sources of the microcontrollers.Tiga kriteria dalam memilih mikrokontroller

    Triwiyanto - Jurusan Teknik Elektromedik

  • 1.1. Diagram blokCPUOn-chip RAMOn-chip Flash ROM4 I/O PortsTimer 0Serial PortOSCInterrupt ControlExternal interruptsTimer 1Timer/CounterBus ControlTxD RxDP0 P1 P2 P3Address/DataCounter Inputs1. ARSITEKTUR

    Triwiyanto - Jurusan Teknik Elektromedik

  • 1.2 Comparison of the 8051 Family Members

    Triwiyanto - Jurusan Teknik Elektromedik

  • 1.3. Memory mapping in 8051

    1.3.1. ROM memory map in 8051 family4k8kfrom Atmel Corporation

    Triwiyanto - Jurusan Teknik Elektromedik

  • 1.3.2. Memory map in 89s51 family

    Triwiyanto - Jurusan Teknik Elektromedik

    DIRECT/ INDIRECTADDRESSING128 RAM LOWER

    DIRECTADDRESSING

    128 RAM SFR

    0

    7F H

    80 H

    FF H

    INDIRECT ADDRESSING

    128 RAMUPPER

    80 H

    FF H

    4 K ROMINTERNAL

    0000 H

    0FFF H

    RAM INTERNAL

    P0

    /EA

    ALE

    P2

    /RD

    /WR

    8951

  • What is a register?Register adalah memory penyimpan khusus dengan kapasitas 8 bit, yang tampak sebagai berikut:1.4. Register and PortSebuah register dapat menyimpan bilangan dari 0 s/d 255 (bilangan positif, tanpa nilai negatif), atau bilangan dari -128 s/d +127 (dengan bit tanda di bit 7), atau suatu nilai yang mewakili suatu kode karakter ASCII ( contoh A).PortWhat is a Port?Port adalah gerbang dari CPU ke internal dan ekstenal hardware. CPU berkomunikasi dengan Port ini, membaca dari atau menulis ke port.

    Port mempunyai address tertentu, untuk berkomunikasi dengan CPU, alamat-alamat dari port tidak tergantung dari tipe mikrokontroller pada keluarga MCS-51. Contoh alamat port P0 adalah selalu 80h. Anda tidak perlu mengingat alamat port ini.

    Triwiyanto - Jurusan Teknik Elektromedik

  • BASIS BILANGAN

    Triwiyanto - Jurusan Teknik Elektromedik

  • Lanjutan: KONVERSI BILANGAN

    Desimal(BASIS 10)Hexa(BASIS 16)Biner 8 BIT(BASIS 2) ASCHII(CODE)16100000 0000-17110000 0001-18120000 0010-19130000 0011-:::25190001 1001-261A0001 1010-271B0001 1011- 281C0001 1100-291D0001 1101-301E0001 1110-311F0001 1111-

    Triwiyanto - Jurusan Teknik Elektromedik

  • KUNCI BASIS BILANGANBiner 8 bit Contoh:Konversikan bilangan desimal 56 ke biner dan hexaSolusi:56 d = terdiri dari penjumlahan (32+16+8) = bilangan biner, 00111000 bUntuk konversi ke hexa, pecah bilangan tersebut menjadi 4 bit: 0011 1000bDan terjemahkan masing-masing biner 4 bit tersebut ke hexa = bilangan hexa, 38 h

    D7 MSBD6D5D4D3D2D1D0 LSB

    1286432168421

    Triwiyanto - Jurusan Teknik Elektromedik

  • REGISTER PSWCarry flagCYPSW.7Auxilarry carry flagACPSW.6General purposeF0PSW.5Register Bank SelectRS1PSW.4Register Bank SelectRS0PSW.3Over FlowOVPSW.2General purpose-PSW.1ParityPPSW.0

    1.5. Memori Data (RAM)

    Triwiyanto - Jurusan Teknik Elektromedik

    RO

    R7

    RO

    R6

    R5

    R4

    R3

    R2

    R1

    R7

    R6

    R5

    R7

    R6

    RO

    R5

    R4

    R3

    R2

    R1

    R4

    R3

    R2

    R1

    RO

    R7

    R6

    R5

    R4

    R3

    R2

    R1

    OOH

    12H

    11H

    1OH

    OFH

    O7H

    O8H

    18H

    16H

    15H

    14H

    13H

    OEH

    ODH

    OCH

    OBH

    O6H

    O5H

    O4H

    O3H

    O2H

    O1H

    OAH

    O9H

    1EH

    1DH

    1CH

    1FH

    1AH

    19H

    1BH

    17H

    20 H

    2F H

    BIT-ADDRESSABLE SPACE

    30 H

    7F H

    RAM SERBAGUNA

    BANK 0

    BANK 3

    BANK 2

    BANK 1

    P0

    P2

    SCON

    SBUF

    P1

    TH1

    TH0

    TL1

    TL0

    TMOD

    TCON

    PCON

    DPH

    DPL

    SP

    80 H

    87 H

    88 H

    90 H

    98 H

    B

    ACC

    PSW

    IP

    P3

    IE

    A0 H

    A8 H

    B0 H

    B8 H

    D0 H

    E0 H

    F0 H

    8F H

    8951

  • Contoh Program

    LOC OBJ LINE SOURCE

    0000 1 org 0h0000 00 2 nop0001 E5B0 3 start: mov a,p30003 F590 4 mov p1,a0005 80FA 5 sjmp start0006 6 endContoh hasil kompilasi tersebut menjelaskanData 00 di save ke alamat 0000HData B0 di save ke alamat 0001HData E5 di save ke alamat 0002hData 90 di save ke alamat 0003HData F5 di save ke alamat 0004HData FA di save ke alamat 0005HData 80 di save ke alamat 0006H

    1.6. Memori Program ( ROM )

    Triwiyanto - Jurusan Teknik Elektromedik

    60K ROMEKSTERNAL

    4K ROMINTERNAL

    0000 H

    0FFF H

    1000 H

    FFFF H

    D0 S/D D7

    ADDR.

    P0

    /EA

    ALE

    PSEN

    OE

    8951

    ROM EKSTERNAL

    P2

  • Pin Description of the 8051PDIP/Cerdip

    Triwiyanto - Jurusan Teknik Elektromedik

  • Pins of 805: 1/4Vcc (pin 40)Vcc provides supply voltage to the chip. The voltage source is +5V.GND (pin 20) groundXTAL1 and XTAL2 (pins 19,18)These 2 pins provide external clock.Way 1:using a quartz crystal oscillator Way 2:using a TTL oscillator Example 4-1 shows the relationship between XTAL and the machine cycle.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Pins of 8051: 2/4RST (pin 9) resetIt is an input pin and is active high (normally low).The high pulse must be high at least 2 machine cycles.It is a power-on reset.Upon applying a high pulse to RST, the microcontroller will reset and all values in registers will be lost.Reset values of some 8051 registers Way 1:Power-on reset circuit Way 2:Power-on reset with debounce

    Triwiyanto - Jurusan Teknik Elektromedik

  • Pins of 8051: 3/4/EA (pin 31) external accessThere is no on-chip ROM in 8031 and 8032 .The /EA pin is connected to GND to indicate the code is stored externally./PSEN and ALE are used for external ROM.For 8051, /EA pin is connected to Vcc./ means active low./PSEN (pin 29) program store enableThis is an output pin and is connected to the OE pin of the ROM.See Chapter 14.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Pins of 8051: 4/4ALE (pin 30), address latch enableIt is an output pin and is active high.8051 port 0 provides both address and data.The ALE pin is used for de-multiplexing the address and data by connecting to the G pin of the 74LS373 latch.I/O port pinsThe four ports P0, P1, P2, and P3.Each port uses 8 pins.All I/O pins are bi-directional.

    Triwiyanto - Jurusan Teknik Elektromedik

  • XTAL Connection to 8051Using a quartz crystal oscillatorWe can observe the frequency on the XTAL2 pin.

    Triwiyanto - Jurusan Teknik Elektromedik

  • XTAL Connection to an External Clock Source

    Using a TTL oscillatorXTAL2 is unconnected.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Power-On RESET Circuit30 pF30 pF8.2 K10 uF+Vcc11.0592 MHzEA/VPPX1X2RST3119189

    Triwiyanto - Jurusan Teknik Elektromedik

  • Power-On RESET with DebounceEA/VPPX1X2RSTVcc10 uF8.2 K30 pF931C:\WINDOWS\hinhem.scr

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2. Set InstructionMOV dest, source; dest = sourceMOV A,#72H;A=72HMOV A, #r;A=r OR 72HMOV R4,#62H;R4=62HMOV B,0F9H;B=the content of F9th byte of RAMMOV DPTR,#7634H ;DPTR=7634MOV P1,A;mov A to port 1Note 1:MOV A,#72HMOVA,72HAfter instruction MOVA,72H the content of 72th byte of RAM will replace in Accumulator. Note 2:MOV A,R3MOVA,32.1. Instruksi copy data

    Triwiyanto - Jurusan Teknik Elektromedik

  • Contoh 1 :org 0hStart: mov PSW,#00000000B ; select register bank 0mov R0,#5 ; simpan data 5 ke R0mov R1,#7 ; simpan data 7 ke R1mov R2,#8 ; simpan data 8 ke R2;mov PSW,#00001000B ;select register bank 2mov R0,#0Ah ; simpan data Ah ke R0mov R1,#9 ; simpan data 9 ke R1mov R2,#01Bh ; simpan data 1bh ke R2end

    org 0hStart: mov 00h,#5 mov 01h,#7 mov 02h,#8 ; mov 10h,#0Ah mov 11h,#9 mov 12h,#01Bh endORContoh 2:Org 0hStart: setb 20h.1 ; setting bit=1, 00000010 pada address 20hsetb 27h.7 ; setting bit=1, 10000000 pada address 27hclr 2Ah.5 ; setting bit =0, 11011111 pada address 2Ah endContoh 3:Org 0hStart: mov A,#00000001bmov P1,AendOrg 0hStart: mov 0E0h,#00000001bmov 90h,0E0hendOR

    Triwiyanto - Jurusan Teknik Elektromedik

  • SETBbit; bit=1CLRbit; bit=0

    SETBC; CY=1SETBP0.0;bit 0 from port 0 =1SETBP3.7;bit 7 from port 3 =1SETBACC.2;bit 2 from ACCUMULATOR =1SETB05;set high D5 of RAM loc. 20h

    Note:CLR instruction is as same as SETBi.e:CLRC;CY=0

    But following instruction is only for CLR:CLRA;A=0

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.1.1 Instruksi PenjumlahanADD A, Source ;A=A+SOURCEADDA,#6;A=A+6ADDA,R6;A=A+R6ADD A,6;A=A+[6] or A=A+R6 ADDA,0F3H;A=A+[0F3H]ADCA,source;A=A+source+CY SETBC;CY=1 ADCA,R5;A=A+R5+12.1. Instruksi Aritmatika2.1.2 Instruksi PenguranganSUBBA,source;A=A-source-CY SETB C;CY=1 SUBBA,R5;A=A-R5-1

    Triwiyanto - Jurusan Teknik Elektromedik

  • Example:MOVA,#38HADDA,#2FH

    38 00111000+2F+00101111 ---- -------------- 67 01100111CY=0 AC=1P=1Example:MOVA,#88HADDA,#93H

    88 10001000+93+10010011 ---- -------------- 11B 00011011CY=1 AC=0P=0Example:MOVA,#9CHADDA,#64H

    9C 10011100+64+01100100 ---- -------------- 100 00000000CY=1 AC=1P=0Note:Flag C is set if the sum exceeds FFh and cleared otherwiseFlag AC is set if there is a carry from low nibble to the high nible that is from bit 3 to bit 4, and cleared otherwiseFlag P is set if 0 or 1 bit count is odd

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.1.3 Instruksi Perkalian

    MULAB;B|A = A*BMOVA,#25HMOVB,#65HMULAB;25H*65H=0E99;B=0EH, A=99H

    2.1.4 Instruksi Pembagian

    DIVAB;A = A/B, B = A mod BMOVA,#25MOVB,#10DIVAB;A=2, B=5

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.1.5 Instruksi Decrement dan Increment

    DECbyte;byte=byte-1INCbyte;byte=byte+1Example:INCR7;[R7]=[R7]+1DECA;[A]=[A]-1DEC40H; [40]=[40]-1

    Triwiyanto - Jurusan Teknik Elektromedik

  • Table 1.3. Instruksi Aritmatika

    MnemonicOperationAddressing ModeExect.DirIndRegImmTimer uSAdd A,A=A+VVVV1Addc A,A=A++CVVVV1Subb A,A=A--CVVVV1Inc AA=A+1Accumulator Only1Inc =+1VVV1Inc DPTRDPTR=DPTR+1Data Pointer Only2Dec AA=A-1Accumulator Only1Dec =-1VVV1Mul ABB:A=BxAAccumulator and B Only4Div ABA=Int[A/B] B=Mod[A/B] Accumulator and B only4DA ADec AdjustAccumulator Only1

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.2. Instruksi Logika

    ANL - ORL XRL-CPLEXAMPLE:MOVR5,#89HANLR5,#08H

    RR RL RRC RLC EXAMPLE:Mov A,#11000000bRRA;[A]=01100000b

    Triwiyanto - Jurusan Teknik Elektromedik

  • Example:RL A;rotate left AContoh:ORG 0HSTART:MOV A,#00000001BPUTAR:RL ASJMP PUTARENDA = 00000010A = 00000100A = 00001000:A = 10000000A = 00000001A = dst.RLC A;rotate left and carry AContoh:ORG 0HSTART:MOV A,#00000001BPUTAR:RLC ASJMP PUTARENDA = 00000010A = 00000100::A = 10000000C=1A = 00000000A = 00000001dst.RR A ;rotate right A

    RRC A ;rotate right ;and carry A

    CYD7D6D5D4D3D2D1D0

    Triwiyanto - Jurusan Teknik Elektromedik

  • Triwiyanto - Jurusan Teknik Elektromedik

  • 2.3. Addressing ModesImmediateRegisterDirectRegister IndirectIndexed

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.3.1. Immediate Addressing ModeMOVA,#65HMOVA,#AMOVR6,#65HMOVDPTR,#2343HMOVP1,#65H

    Example :NumEQU30MOVR0,NumMOVDPTR,#data1ORG100Hdata1:dbIRAN

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.3.2. Register Addressing ModeMOVRn, A;n=0,..,7ADDA, RnMOVDPL, R6

    MOVDPTR, AMOVRm, Rn

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.3.3. Direct Addressing ModeAlthough 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.

    MOVR0, 40HMOV56H, AMOVA, 4; MOV A, R4MOV6, 2; copy R2 to R6; MOV R6,R2 is invalid !

    SFR register and their address

    MOV0E0H, #66H; MOV A,#66HMOV0F0H, R2; MOV B, R2MOV80H,A; MOV P1,A

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.3.4. Register Indirect Addressing ModeIn this mode, register is used as a pointer to the data.

    MOVA,@Ri; move content of RAM loc.Where address is held by Ri into A ;( i=0 or 1 )MOV@R1,B

    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; counterL1:MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,L1

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.3.5. Indexed Addressing Mode And ROM AccessThis mode is widely used in accessing data elements of look-up table entries located in the program (code) space ROM at the 8051

    MOVCA,@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.

    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:ORG0MOVDPTR,#MYDATAMOVR0,#40HL1:CLRAMOVCA,@A+DPTRJZL2MOV@R0,AINCDPTRINCR0SJMPL1L2:SJMPL2;-------------------------------------ORG250HMYDATA:DBHello,0END

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

    Triwiyanto - Jurusan Teknik Elektromedik

  • Example:

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

    Solution:ORG0MOVDPTR, #TAB1L01:MOVA,P1MOVCA,@A+DPTRMOVP2,ASJMPL01;----------------------------------------------------ORG300HTAB1:DB0,1,4,9,16,25,36,49,64,81END

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.4. LOOP and JUMP Instructions2.4.1. DJNZ ( Decrement & Jump if Not Zero )Write a program to clear ACC, then add 3 to the accumulator ten timeSolution: MOVA,#0; MOVR2,#10AGAIN:ADDA,#03 DJNZR2,AGAIN ;repeat until R2=0 (10 times) MOVR5,A2.4.2. CJNE (Compare & Jump if Not Equal )Get:Mov A, P1 Cjne A,#8, get end

    Triwiyanto - Jurusan Teknik Elektromedik

  • Contoh: Soal UASTuliskan sebuah program untuk menolkan isi Akumulator (A), dan menambah dengan konstanta 10 pada akumulator sebanyak 5 kali. Petunjuk: gunakan MOV, ADD, DJNZ.Tuliskan program untuk mengurangi nilai R0 dari 20 sampai 0, bila isi R0 tidak sama dengan 0 maka P0.0 mengeluarkan logika 0 bila isi R0 sama dengan 0 maka P0.0 mengeluarkan logika 1. Petunjuk: gunakan MOV, DEC, CJNE, CLR, SETBTuliskan program untuk menggeser data Akumulator (A) yang berisi konstanta 11111110 ke kiri sebanyak 5 kali, dan menggeser ke kanan sebanyak 3 kali. Petunjuk: gunakan MOV, RL, RR, DJNZ.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Contoh: Soal UAS 24. Tuliskan program untuk mengeluarkan logika 0 ke P0.6 sebanyak 10 kali, dilanjutkan mengeluarkan logika 1 ke P0.7 sebanyak 40 kali. Petunjuk: gunakan MOV, DJNZ.5. Rencanakan rangkaian dengan menggunakan seven segmen common katoda 1 buah, dengan driver transistor tipe NPN. Segmen terhubung ke P0 dan driver terhubung ke P3.0, dan tulis program untuk mencetak karakter H, pada seven segmen tersebut. Petunjuk: gunakan MOV, SETB, CLRTuliskan program untuk melakukan proses aritmatika berikut: R4=10d, R5=5d, R6=4d, R7=2d; a. R3 = R7 + R4 * R5 R6; b. R3= R4/R5 + R6* R7 Petunjuk: gunakan instruksi ADD A, RX; SUBB A, RX; MUL AB, DIV AB

    Triwiyanto - Jurusan Teknik Elektromedik

  • TANKS ALOTTRIMAKASIHMATUR SUWON

    ILL SEE YOU SOON, IN THE NEXT SEMESTER, TO ROCK AND ROLL AND HAVING FUNA K H I R N Y A

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.4.3. SJMP and LJMP:

    LJMP(long jump)LJMP is an unconditional jump. It is a 3-byte instruction in which the first byte is the opcode, and the second and third bytes represent the 16-bit address of the target location. The 20byte target address allows a jump to any memory location from 0000 to FFFFH.SJMP(short jump)In this 2-byte instruction. The first byte is the opcode and the second byte is the relative address of the target location. 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.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Other conditional jumps :

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2.4.4. CALL InstructionsAnother control transfer instruction is the CALL instruction, which is used to call a subroutine.

    LCALL(long call)In this 3-byte instruction, the first byte is the opcode an the second and third bytes are used for the address of target subroutine. Therefore, LCALL can be used to call subroutines located anywhere within the 64K byte address space of the 8051.

    Triwiyanto - Jurusan Teknik Elektromedik

  • ACALL (absolute call)

    ACALL is 2-byte instruction in contrast to LCALL, which is 13 bytes. Since ACALL is a 2-byte instruction, the target address of the subroutine must be within 2K bytes address because only 11 bits of the 2 bytes are used for the address. There is no difference between ACALL and LCALL in terms of saving the program counter on the stack or the function of the RET instruction. The only difference is that the target address for LCALL can be anywhere within the 64K byte address space of the 8051 while the target address of ACALL must be within a 2K-byte range.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Port 0 with Pull-Up Resistors

    Triwiyanto - Jurusan Teknik Elektromedik

  • Port 3 Alternate Functions

    Triwiyanto - Jurusan Teknik Elektromedik

  • Structure of Assembly languageLabel Opcode Operand Comment ORG 0H ;StartROMStart:Mov A,#10001000b; fill A = 10001000bMov P0,A;copy A to P0 END

    Triwiyanto - Jurusan Teknik Elektromedik

    Desain Program Assembly(MIDE-51)

    Org 0hmov A,10000000bmov P0,Aend

    0001110101010101010101010101010101010101

    Compile(MIDE-51)

    PROGRAM

    Download(ATMEL Soft.)

    01000101001011110001000100101010000111101010

    TEST

  • Percobaan 1.1. Menghidupkan/ Matikan LEDOrg 0h ;Starting ROM 0h Start:Mov P0, #00000001;Send 1 to P0.0end ;LED OFF

    Org 0hStart:Mov P0, #00000000; Send 0 to P0.0end ; LED ON

    Org 0hStart:Setb P0.0 ; Send 1 to P0.0end

    Org 0hStart:Clr P0.0 ; end

    Triwiyanto - Jurusan Teknik Elektromedik

    1

    2

    3

    40

    39

    38

    P1.0

    P1.1

    P0.0

    P0.1

    5V

    P1.2

    18

    19

    20

    XTAL2

    XTAL1

    GND

    31

    /EA

    VCC

    22

    21

    P2.0

    P2.1

  • Percobaan 1.2. LED BlinkRencanakan program untuk mengedipkan sebuah LED pada P0.0.Solusi:Org 0hStart: Setb P0.0Call DelayClr P0.0Call Delaysjmp Start

    ;======================;Subrutin untuk membangkitkan ;waktu tunda;======================Delay: Mov R0,#5dDel1: DJNZ R0, Del1 retEnd

    Triwiyanto - Jurusan Teknik Elektromedik

  • 3.1. LCD Karakter 2x16RS ( Register Select ) RS = 0 Command registerRS = 1 Data RegisterR/W ( Read/ Write )R/W= 0 WriteR/W = 1 ReadEN ( Enable )Used to latch the data present on the data pins. A high-to-low edge is needed to latch the data.D0 D7Bi-directional data/command pins. Alphanumeric characters are sent in ASCII format

    Triwiyanto - Jurusan Teknik Elektromedik

    A

    g

    1

    4

    L

    0

    7

    1

    2

    3

    16

    16

    1

    2

    D0-D7

    R/W

    EN

    RS

    P0.0 - P0.7

    P3.6

    P3.7

    LCD CHARACTER 2 X 16

    8951

  • 3.2. Pin dan Fungsi

    PinSimbol1Vss2Vcc3Vee4RS5R/W6E7-14DB015BPL16GND

    Nama SignalFungsiDB0 DB7Data - Untuk mengirimkan data karakter atau dan instruksiEEnable - Signal start untuk mulai pengiriman data atau instruksi R/WRead/ Write - Signal yang digunakan untuk memilih mode baca atau tulis0 : tulis1 : bacaRSRegister Select0: Instruction register (Write)1: Data register (Write, Read)VeeTegangan pengaturan kontras pada LCDVccTegangan Vcc VssTegangan 0V atau Ground

    Triwiyanto - Jurusan Teknik Elektromedik

  • 3.3. Inisialisasi LCD KarakterFunction SetDL : 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 )Entry Mode SetRS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0I/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 DB0B : Cursor blink ( 1= blink on,0=blink off )C : Cursor display (1=cursor on, 0=cursor off)D : display On ( 1= display on)

    00000001I/DS

    Triwiyanto - Jurusan Teknik Elektromedik

  • Cursor of Display Sift Shifts 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 displayNote : x = Dont care

    RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000001S/CR/LXX

    S/CR/LNote00Shift cursor position to the left01Shift cursor position to the right10Shift the entire display to the left11Shift the entire display to the right

    Triwiyanto - Jurusan Teknik Elektromedik

  • Clear DisplayRS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0Dengan menuliskan instruksi tersebut maka semua tamplan akan reset A : Lokasi memori display0000000 1111111 ( 00 h 7F h ) Instruksi Pemilihan RAMRam Display Address ( in Hexa )RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0Baris 1Baris 2

    000102030405060708090A0B0C0D0E0F.404142434445464748494A4B4C4D4E4F.

    Triwiyanto - Jurusan Teknik Elektromedik

  • 3.4. LCD ( Cetak sebuah karakter A) org 0h mov r1,#00000001b ;Display clear call write_inst mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7 call write_inst mov r1,#00001100b ;Display on, ;cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inststart: mov R1,#80h call write_inst mov R1,#'A' call write_datastop: sjmp stopA

    Write_inst: clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay; call delay time clr P3.7 ; P3.7 =EN = 0 ret;Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay; call delay time clr p3.7 ; P3.7 =EN = 0 retendSubrutineWrite_instWrite_dataMemanggilsubrutine

    Triwiyanto - Jurusan Teknik Elektromedik

  • Watch out !, you maymiss my overflow every 10s. Ifyou get sleepWhat a number to be loaded to my register, soI can get pulse out every 10 s on CoMy heart beatperiode is 1 HznowThink smart, you must load data: 16-10 = 6 or 0110 b on meI just finishedMy work out.So, my heartBeat is 1 MHz,NowIf you loaded, TL1 =00 TH1 =00, then you, need 65536 pulse. To Get overflow on my TF1If my periode input clock is 1 uSThen I wil interupt you, after1 uS x 65536 = 0.065536 sLoad

    Triwiyanto - Jurusan Teknik Elektromedik

    COUNTER UP/DOWN UP 4 BIT Co 74193 D3 D2 D1 D0

    COUNTER UP Clock 16 BIT TF1 TH1(D15..D8) TL1(D7..D0)

  • Clock = 1 Mhz0E0h0B1hOver flow, after 20000 us = 0.02 sTo 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 hData to be loaded toTL1 and TH1 Register9. Basic Timer/ Counter

    Triwiyanto - Jurusan Teknik Elektromedik

    COUNTER UP Clock 16 BIT TF1 TH1(D15..D8) TL1(D7..D0)

  • THE Action of 89s51 aS COUNTER OR TIMERPut me, up or down. Up = working as timerDown = working as counter, in register TMOD Close my swicth,To get run as Timer or COunterDont get sleep,If you dont want miss my overflow,test me bySoftware !

    Timer1 Timer 0

    Triwiyanto - Jurusan Teknik Elektromedik

    1

    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

  • TIMER 1TIMER 0MORE ABOUT TIMER/ COUNTER 8951TMOD REGISTER

    Triwiyanto - Jurusan Teknik Elektromedik

  • TCON REGISTER ( BIT ADDRESSABLE REGISTER)TIMER 1TIMER 0TIMER 1TIMER 0

    TF1TR1TF0TR0IE1IT1IE0IT0

    Triwiyanto - Jurusan Teknik Elektromedik

  • MODE 1 : TIMER 16 BIT ON TIMER 1Please load a number to my register ( TL1, TH1)tobe counted, byMOV TH1,#0D8hMOV TL1,#0EFhIf your xtall is 12MHzThen I wil generate 1 MhzDont moveFrom your seat keep spy on me, Maybe I get Over flow They are trying to configure my function as a timer in MODE 1,by MOV TMOD,#10HLets go, to rock and rollBy, SETB TR1Read myFrequency !

    Triwiyanto - Jurusan Teknik Elektromedik

    1

    XTALL/ 12

    0

    0

    0

    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 16 BIT

    P1.0

    TH1

    OSCILOSCOPE

  • Contoh SoalSebuah led dihubungkan pada P0.7 melalui sebuah resistor, dengan katoda terhubung ke ground.Rencanakan program assembly untuk membuat subrutine waktu tunda, agar led dapat berkedip dengan Ton=0.5 detik dan Toff=0.5 detik. Gunakan Timer1 mode 13 bit.Idem. Rencanakan program assembly untuk membuat subrutine waktu tunda, agar LED dapat berkedip dengan Ton=2 detik dan Toff=1 detik. Gunakan Timer1 mode 16 bit.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Contoh Soal 2Sebuah pin P0.7 digunakan sebagai pembangkit osilasi. Rencanakan program assembly untuk membuat subrutine waktu tunda, agar dapat dibangkitkan clock dengan Ton=0.05 detik dan Toff=0.05 detik. Gunakan Timer1 mode 2.Idem. Ton=0.02 detik dan Toff=0.04 detik. Gunakan Timer0 mode 2.

    Triwiyanto - Jurusan Teknik Elektromedik

  • MODE 2 : 8 BIT AUTO-RELOADSee, my job isvery important,to reload thedata TH1 to TL1register when overflowsAlways keepOn eye onmy TF1 bit.Never ForgetGet rock androll by SETB TR1Look, my con-fuguration astimer mode 2,now

    Triwiyanto - Jurusan Teknik Elektromedik

    1

    XTALL/ 12

    0

    0

    1

    0

    0

    0

    0

    0

    TF1

    TR1

    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)

    P1.0

    OSCILOSCOPE

    LATCH

  • Watch out !, dont get sleep till you Catch me, if In logic 1. Its Mean I am in Overflow

    Give me a numberTo configure my mode by software:MOV TMOD,#01110000bWell, to start the all system as a counter/timerSet on me by software: SETB TR1Look at to my pin, I am souseless. BecauseThe gate on TMOD= 0When do I can get action?MODE 3 : COUNTER 8 BIT ON TIMER1

    Triwiyanto - Jurusan Teknik Elektromedik

    1

    XTALL/ 12

    0

    1

    1

    1

    0

    0

    0

    0

    TF1

    TR1

    COUNTER 8 BIT

    1

    TL1

    TMOD

    TCON

    0 = S1 keatas1 = S1 kebawah

    S1

    0 = S2 buka1 = S2 tutup

    S2

    T1/ P3.5

    INT1/ P3.3

    89C51

  • POOLING OR INTERUPTING SYSTEMS05.00BANGUN PAGI06.00SARAPAN 07.00KULIAH15.00KERJAKAN TGS. 18.00 MAIN19.00BELAJAR?RUTINITAS ATAU PRIORITAS KARENA INTERUPSI22.00TIDURINTR

    Triwiyanto - Jurusan Teknik Elektromedik

  • INTERUPSI MIKROKONTROLLER

    Triwiyanto - Jurusan Teknik Elektromedik

  • LSBMSBINTERRUPT ENABLE REGISTER ( IE )

    Triwiyanto - Jurusan Teknik Elektromedik

  • TCON REGISTER ( BIT ADDRESSABLE REGISTER)TIMER 1TIMER 0

    TF1TR1TF0TR0IE1IT1IE0IT0

    Triwiyanto - Jurusan Teknik Elektromedik

  • ALAMAT INTERUPSI

    Triwiyanto - Jurusan Teknik Elektromedik

  • STRUKTUR PROGRAMOrg 0000hLjmp StartOrg 000bhLjmp Timer0InteruptStart: ; Instruksi Rutinitas A ; Instruksi Rutinitas B ; Instruksi Rutinitas CSjmp Start; { Looping Forever };Timer0Interupt: ; Instruksi ; InstruksiRetiEnd

    Triwiyanto - Jurusan Teknik Elektromedik

  • Interupsi TimerDengan memanfaatkan interupsi TF0 yang dibangkitkan setiap 10.000us, maka lakukan increment data pada Accumulator dan outputkan ke LED setiap 2 detik.Dengan memanfaatkan interupsi TF1 yang dibangkitkan setiap 20.000us, maka lakukan decrement data pada Accumulator dan outputkan ke 7 Segmen setiap 1 detik, dengan nilai awal 60.Buatlah jam digital bagian detik yang menghitung mulai dari 00 s/d 99 detik, dengan interupsi yang dibangkitkan dari TF0 dengan waktu interupsi 8.000us dengan mode 0 timer 13 bit.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Contoh: Interupsi Eksternal 0INT0Rencanakan program untuk membunyikan buzer, dengan menggunakan interupsi eksternal 0, pada saat transisi negatif dengan syarat sbb:Jika tidak ada interupsi transisi negatif, mikrokontroller memerintahkan buzer untuk berhenti berbunyi.Jika ada interupsi transisi negatif, maka mikrokontroller akan memerintahkan buzer untuk berbunyi.P0.0 Org 0h Sjmp start Org 03h ljmp AdaIntExt0Start: call InitIntExt0Forever:clr P0.0 sjmp ForeverAdaIntExt0: setb P0.0 call delay reti;InitIntExt0: setb IT0 setb EX0 setb EA retDelay: mov R7,#255Del1: mov R6,#255 djnz R6,$ djnz R7,Del1 ret

    Triwiyanto - Jurusan Teknik Elektromedik

  • INT12. Rencanakan program untuk membunyikan buzer, dengan menggunakan interupsi eksternal 1, pada saat level logika high dengan syarat sbb:Jika tidak ada interupsi transisi negatif, mikrokontroller memerintahkan buzer untuk berhenti berbunyi.Jika ada interupsi transisi negatif, maka mikrokontroller akan memerintahkan buzer untuk berbunyi.P0.7

    Triwiyanto - Jurusan Teknik Elektromedik

  • Project Interupsi EksternalRencanakan program untuk menanggapi interupsi transisi negatif dengan komentar bahaya dan okRencanakan program untuk menanggapi interupsi dengan increment data pada A dan display pada 7 segmen.

    Triwiyanto - Jurusan Teknik Elektromedik

  • ContohInterupsi Timer 0 Rencanakan program untuk menggeser data accumulator, setiap 1 detik, dengan output data ke LED yang terhubung ke P0. Gunakan timer 0 16 bit.Org 0hLjmp StartOrg 0bhLjmp InterupsiTF0Start: mov R7,#.......mov A,#00000001bcall InitInterupsicall InitTimer0;Hang:mov P0,Asjmp hang;InitTimer0:mov TMOD,#.....mov TL0,#......mov TH0,#.....setb TR0retInitInterupsi: setb ET0setb EAret;InterupsiTF0:call InitTimer0djnz R7, EndInterupsiTF0RL Amov R7,#......EndInterupsiTF0:reti;end

    Triwiyanto - Jurusan Teknik Elektromedik

  • 2. Rencanakan program untuk menghidupkan LED yang terhubung ke P0.0 selama satu detik, dan mematikan LED tersebut selama satu detik juga. Gunakan interupsi timer 1 dan counter 1 dengan mode 13 bit. 3. Rencanakan program untuk increment data output ke LED yang terhubung ke P0 ( 0 s/d 255 ) setiap 1 detik. Gunakan interupsi timer 0 dan counter 0 dengan mode 16 bit.

    Triwiyanto - Jurusan Teknik Elektromedik

  • LSBMSBINTERRUPT PRIORITY REGISTER ( IP )

    XXXPSPT1PX1PT0PX0

    BITSYMBOLFUNCTIONIP.7-ReservedIP.6-ReservedIP.5-ReservedIP.4PSDefines the serial port interrupt. PS=1 programs it to the higher priorityIP.3PT1Defines the timer 1IP.2PX1Defines the external 1IP.1PT0Defines the timer 0IP.0PX0Defines the external 0

    Triwiyanto - Jurusan Teknik Elektromedik

  • Soal-soal latihanRencanakan program untuk menghitung pulsa yang diinputkan pada T0 dan data hasil cacahan dioutputkan pada P0 dengan konfigurasi sebagai counter 8 bit.Catatan: Manfaatkan input pada INT0 untuk membekukan proses pencacahan melalui saklar push button, bila saklar ditekan pencacahan akan terjadi, bila saklar dilepas maka pencacahan tidak terjadi.Idem, sebagai counter 13 bit input pada T1, input eksternal pada INT1. dengan output pada P0 ( 8 bit ) dan P1 (5 bit)Rencanakan program untuk membangkitkan waktu tunda 0,5 detik sehingga led akan tampak berkedip ( bila led dihubungkan pada P2.0 ), bila timer yang digunakan adalah TIMER 1 13 bit dan bila interupsi yang dibangkitkan adalah setiap 8000 udetikRencanakan program untuk mendeteksi interupsi level logika pada INT1. dengan output display ke seven segmen common anoda yang terhubung ke P0.0 s/d P0.6 dan driver transistor PNP terhubung ke P2.0. Catatan, bila ada interupsi maka pada display akan keluar angka 1 dan bila tidak ada interupsi maka akan keluar angka 0.Idem pada INT0, dengan output ke Buzer yang terhubung ke P0.0 dan LED yang terhubung ke P0.1. Catatan bila ada interupsi maka Buzer akan berbunyi dan LED nyala, bila tidak ada interupsi maka Buzer akan mati dan LED off.

    Triwiyanto - Jurusan Teknik Elektromedik

  • The Power of Serial Comm. RS232SINKRON KOMUNIKASIDua buah divais diinisialisasi atau disinkronisasi menggunakan clock yang sama dan secara kontinu dapat mengirimkan atau menerima karakter untuk tetap sinkron.Komunikasi sinkron mempunyai kecepatan yang lebih tinggi bila dibandingkan dengan asinkron, karena tidak ada penambahan bit, untuk menandai permulaan dan akhiran byte data.Port Serial pada PC adalah asinkron divais, sehingga hanya support untuk komunikasi serial asinkron

    Triwiyanto - Jurusan Teknik Elektromedik

    D0

    D6

    D5

    D4

    D3

    D2

    D1

    D7

    DATA

    CLOCK

  • ASINKRON KOMUNIKASIAsinkron berarti tanpa sinkronisasi, sehingga tidak diperlukan pengiriman sinyal clock.Akan tetapi, pada setiap awalan dan akhiran harus ditandai dengan bit start dan bit stop.Start bit menunjukkan, bahwa data akan segera dikirim atau diterima, dan bit stop menyatakan akhiran dari sinyal.Keperluan penambahan pengiriman dua bit ini akan menyebabkan komunikasi asinkron akan lebih lambat bila dibandingkan dengan komunikasi sinkron. Pada jalur asinkron, kondisi idle dinyatakan sebagai nilai 1 ( yang juga disebut sebagai keadaan mark )

    Triwiyanto - Jurusan Teknik Elektromedik

  • PANJANG KABEL KOM. RS232Standart RS232 menyarankan batasan panjang kabel 50 feet ( 1 m = 3,3 feet ) 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.

    Triwiyanto - Jurusan Teknik Elektromedik

  • Standart RS232RS232 LEVEL

    Triwiyanto - Jurusan Teknik Elektromedik

  • 10. Interfacing Serial Port pada MikrokontrollerInterfacing 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 ?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.Anda tidak memerlukan kabel yang banyak, dibandingkan parallel. Hanya perlu 3 kabel, bandingkan dengan cara parallel, sehingga biaya lebih murah.

    Triwiyanto - Jurusan Teknik Elektromedik

  • SERIAL COMMUNICATION ON THE RUNYOU MAY CONTROL YOUR DEVICEFROM REMOTE PLACE, JUST BY THREE CABLEStartStopUSE MY PORT SERIAL COMM 1,COMM 2 Etc. ( DB 9 )My job is to convertRS232 level to TTLLogic Level 2400 kbps

    Triwiyanto - Jurusan Teknik Elektromedik

    P3.1/ TXD

    T1OUT

    R1IN

    GND

    R1OUT

    P3.0/ RXD

    T1IN

    RS232

    89C51

    RD(2)

    TD(3)

    GND (5)

  • Port Serial PCBase Address: -3F8 h-2F8 h

    Triwiyanto - Jurusan Teknik Elektromedik

  • KONVERTER RS232 TO TTL/ TTL TO RS232

    Triwiyanto - Jurusan Teknik Elektromedik

  • Converter RS232 to TTL

    Triwiyanto - Jurusan Teknik Elektromedik

    1

    +5V

    +5V

    C1+

    C1-

    C2+

    C2-

    V+

    V-

    T1IN

    T2IN

    R1OUT

    R2OUT

    T1OUT

    T2OUT

    R1IN

    R2IN

    VCC

    1

    3

    4

    5

    11

    10

    12

    9

    2

    6

    14

    7

    13

    8

    16

    15

    +5V

  • WHAT KIND OF SERIAL MODE DO YOU LIKE TO RUN ?THE SERIAL PORT CAN OPERATE IN 4 MODEMode O : Mode Sinkron, data dikirim dan diterima melalui P3.0, P3.1 untuk menyalurkan clockMode 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 diaturSBUF 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

    Triwiyanto - Jurusan Teknik Elektromedik

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    SBUF - SERIAL BUFFER REGISTER

  • Triwiyanto - Jurusan Teknik Elektromedik

    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 dan fosc/64)

    VARIABEL

  • 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:

    Triwiyanto - Jurusan Teknik Elektromedik

  • Baudrate untuk Timer1 sebagai generator BaudrateNOTE: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

    Triwiyanto - Jurusan Teknik Elektromedik

    -

    SMOD

    -

    -

    GF1

    GF0

    PD

    IDL

    PCON - POWER CONTROL REGISTER

  • Kirim Data ke PC

    Triwiyanto - Jurusan Teknik Elektromedik

    T1OUT

    R1IN

    GND

    R1OUT

    T1IN

    3 cables

    MAX232

    Converter S2P

    RXD

    TXD

    A

  • org 0hinitserial: mov scon,#52h ; serial mode 1 mov tmod,#20h ; Baud rate 2400 BPS mov th1,#0F3H setb tr1 ;Mov A,#ATestTi: jnb ti,TestTi; clr ti ; mov sbuf,a ; endSoftware pada Mikrokontroller:

    Triwiyanto - Jurusan Teknik Elektromedik

  • Software pada PC ( Delphi/ VB dll. ):Procedure Receive_Data_Serial;begin asm mov dx,$3F8 in al,dx mov data,al endend; Procedure Initserial; Begin asm {bla-bla-bla} {baud rate, 8 bit data, no parity} {buka catatan masalalu } end;End;procedure TForm1.Timer1Timer(Sender: TObject); begin {bla-bla-bla} {buka catatan masa lalu} Receive_Data_Serial; edit1.text:=inttostr(data); end; procedure TForm1.Button1Click(Sender: TObject); begin initserial; timer1.enabled:=true; end;

    Triwiyanto - Jurusan Teknik Elektromedik

  • Kirim Data ke Mikrokontroller

    Triwiyanto - Jurusan Teknik Elektromedik

    T1OUT

    R1IN

    GND

    R1OUT

    T1IN

    3 cables

    MAX232

    RXD

    TXD

    P0.0

    +5V

    P0.1

    P0.2

    P0.3

    P0.4

    P0.5

    P0.6

    P0.7

  • Software pada PC ( Delphi/ VB dll. ):Procedure Send_Data_Serial; begin asm mov dx,base mov al,data out dx,al end end; Procedure Initserial; Begin asm {bla-bla-bla} {baud rate, 8 bit data, no parity} {buka catatan masalalu } end;End;procedure TForm1.FormCreate(Sender: TObject); begin Initserial; end; procedure TForm1.Button1Click(Sender: TObject); begin {bla-bla-bla} {baud rate, 8 bit data, no parity} {buka catatan masalalu } data:=1; Send_Data_Serial; end;

    Triwiyanto - Jurusan Teknik Elektromedik

  • Software pada Mikrokontroller:org 0h call initserial gets: call inchar mov P0,a sjmp gets initserial: mov scon,#52h ; mov tmod,#20h ; mov th1,#0F3H setb tr1 retinchar: detect: jnb ri,detect ; clr ri mov a,sbuf ret

    Triwiyanto - Jurusan Teknik Elektromedik

  • OS anda WINXPTambahkan komponen ComPort !.Download saja!

    Triwiyanto - Jurusan Teknik Elektromedik

  • WHAT DO YOU THINK ABOUT INTERRUPTSWhat do you like ?pooling by waitingthe sequence,or interupting asyou like Look, my job is veryImportant, to decideUsing the interupt or notChoose by soft.What kind interuptDo you likeTo detect transition,or logic level

    Triwiyanto - Jurusan Teknik Elektromedik

    1

    TF1

    TR1

    TF0

    TR0

    IE1

    IT1

    IE0

    IT0

    TIMER 0

    TIMER 1

    EX0

    ES

    ET1

    ET0

    EX1

    EA

    UART

    HIGH PRIORITY INTERRUPT

    POLLING SEQUENCE

    PX0

    PX1

    PT0

    PT1

    PS

    0 = SW LEFT 1 = SW RIGHT

    0 = SW LEFT 1 = SW RIGHT

    1 = SW LEFT 0 = SW RIGHT

    0 = SW UP1 = SW DOWN

    89C51

    INT0/ P3.2

    INT1/ P3.3

    RxD/ P3.0

    TxD/ P3.1

    TCON

    IE

    IP

    Intels x86: 8086,8088,80386,80486, PentiumMotorolas 680x0: 68000, 68010, 68020,68030,6040versatility : any number of applications for PC