introduction to uart

Upload: rr1155001100

Post on 07-Mar-2016

224 views

Category:

Documents


0 download

DESCRIPTION

介紹UART的傳輸原理和應用

TRANSCRIPT

  • 7-1 UART 7-2 7-2 UART 7-2 7-3 7-3 7-4 UART 7-3 7-5 UART 7-5 7-6 UART 0 7-6 7-7 UART 1 7-11 7-8 UART 2 7-13 7-9 UART 3 7-15 7-10 7-15 7-11 UART 7-17

  • 7-2

    MCS-51 " "Universal Asynchronous Receiver Transmitter UART MCS-51 UART

    7-1 UART

    8 7-1 8 bits

    7-1 10100010

    7-2 UART bit bit

    UART

    UART 8 (Start bit) 8 (Stop bit) "0" "1" 7-1 10100010 UART Byte 7-2

  • 7-3

    7-2 UART 10100010

    7-2 UART Byte 10 bit 8 2

    Byte"1" (MARK) Byte "0" "1" "0" Byte bit Byte 10 bit

    7-3 bit "0" "1"

    bit bit bit/sec (bit rate) (Baudrate) 1920096004800 24001200

    7-4 UART UART

    UART (Buffer) UART Byte Byte Byte 2 Byte Byte CPU Byte

  • 7-4

    Byte Byte

    UART CPU MCS-51 SCON 8 MCS-51 UART Byte Byte SBUF UART Byte 8 Bits TxD UART RxD UART Buffer Byte SBUF CPU 7-3

    7-3 MCS-51

    MCS-51 UART SBUF SBUF SBUF MCS-51 CPU (Read) (Write) "MOV SBUF, A"CPU SBUF "MOV A, SBUF"CPU SBUF

  • 7-5

    7-5 UART MCS-51 UART

    1. 0 (Mode 0)I/O 2. 1 (Mode 1)10 (Baudrate) 3. 2 (Mode 2)11 (Baudrate) 4. 3 (Mode 3)11 (Baudrate)

    SCON(Serial Port Control Register)

    SERIAL PORT CONTROL REGISTER SCON SM0 SM1 SM2 REN TB8 RB8 TI RI SM0 0 SM1 1

    SM0 SM1 0 0 0 Fosc/12 0 1 1 8 UART 1 0 2 9 UART Fosc/64 Fosc/32 1 1 3 9 UART

    Fosc SM2 1. 0 SM2 0 2. 1 SM2=1

    RI=1 3. 2 3 SM2=1 9

    RB8=1 RI=1

    REN 1. REN=1 REN=0 2.

  • 7-6

    TB8 2 3 9 RB8 1. 0 2. 1 SM2=1"" RB8 3. 2 3 " 9 " RB8 TI 1. 0 8 TI=1 2. 123 TI=1 RI 1. 0 (bit 7) RI=1 2. 123 RI=1

    7-6 UART 0

    1. 0 Mode 0 "RxD"

    TxD 8 D0(LSB) D7(MSB)12 12MHz (Baud rate) TxD 1MHz

    2. 0 7-4 UART Mode 0 8 bit

    UART Mode 0 8 Bit SBUFUART Byte 7-4 UART 0 (1) UART 0 SCON TI 0 (2) SBUF

  • 7-7

    (3) TI 1 TI =1 CPU CPU TI 1 1 SBUF CPU Byte SBUF

    7-4 Mode 0

    3. 0 UART Mode 0 RxD 8 SBUF

    REN=1RI=0UART 7-5 8 UART RxD 8 RI 1 CPU RI RI=1 8 SBUF

    7-5 Mode 0

    4. UART Mode 0

    7-6 TxD 8 SIPO

    IC Clock RxD SIPO IC UART RxD SIPOSIPO TTL IC 74LS164

  • 7-8

    UART 0 (1) UART 0 SCON RI 0 (2) SCON REN 0 (3) 1Byte RI 1 RI=1 CPU

    CPU RI 1 1 SBUF 1Byte

    7-6 Mode 0

  • 7-9

    7-7 TTL 74LS164

    8 IC(PISO) TxD

    PISO IC Clock RxD PISO IC QH UART 8 bit SBUFPISO TTL IC 74LS16574LS165 1 SH/LD

  • 7-10

    7-8 Mode 0

    7-9 TTL 74LS165

  • 7-11

    7-7 UART 1 MCS-51 Mode 1 1

    TxD RxD 10 bit 1 ("0")8 (D7D0) D0 ("1") 7-10 Mode 1

    7-10 Mode 1

    1. 1 UART Mode 1 Byte

    UART Byte SBUF UART Byte 7-10 TxD

    2. 1 UART RxD RxD

    10 (Start bit) 8 bit RxD (Sample) 16 789 789 110 101 1 010 000 0 7-11

  • 7-12

    7-11 Mode 1

    UART Mode 1 SCON RB8 8 SBUF Byte SCON RI 1 CPU CPU RI SBUF

    (1) RI=0 0 (2) SM2=1=1

    SM2=0

    3. 1 1 1 ( Timer 1 )

  • 7-13

    7-12 Mode 1

    7-8 UART 2 2 TxD RxD 11

    "0"8 D0 1 1 0 9 TB8 1 "1" 7-13

    7-13 Mode 2

  • 7-14

    1. 2 2 1 2 /

    TB8 RB8 9 SCON TB8

    1 0TB8 MCS-51 UART CPU D0D7 TB8 (Parity) PSW P TB8 TB8 SCON RB8

    2. 2 2 1/32 1/64

    7-14 Mode 2

  • 7-15

    7-9 UART 3 3 "TxD" "RxD" 11

    1 8 1 "TB8" 1 3 2 2 3 1 Timer 1

    7-10

    1. Mode 0 Mode 0 12MCS-51

    12MHz Mode 0 12MHz12=1M bit/sec 106 bit

    0 fosc/12 fosc

    2. Mode 2 Mode 2 PCON "SMOD"

    Mode 2 2SMOD/64(fosc) fosc

  • 7-16

    12MHzSMOD1 Mode 2 212/64(12MHz)375K(bit/sec)

    3. Mode 1 Mode 3 1 3 1

    1 "SMOD"

    Mode 1 3 2SMOD/32( 1 )

    Mode 1 Mode 3 Timer 1 Timer 1 Mode 012 Mode 2 UART Mode 1 3

    Mode 1 3 =)]1TH(256[12

    fosc32

    2SMOD

    fosc

    TH1 TH 1 Timer 1 TH1 TH1

    TH1 =

    384fosc2256

    SMOD

    11.0592MHz 2400

    TH1 =02 11.0592 10256

    384 2400 SMOD=0

    =25612 = 244 = F4H

  • 7-17

    foscTimer 1 TH1 "SMOD"

    7-1 1(Timer 1)

    Timer 1 (Baud Rate)

    Fosc SMOD C/ T

    (TH1)

    Mode 0 1MHz Mode 2 375K Mode 1 362.5K

    19.2K 9.6K 4.8K 2.4K 1.2K 137.5

    110 110

    12 MHz 12 MHz 12 MHz

    11.059 MHz 11.059 MHz 11.059 MHz 11.059 MHz 11.059 MHz 11.059 MHz

    6 MHz 12 MHz

    X 1 1 1 0 0 0 0 0 0 0

    X X 0 0 0 0 0 0 0 0 0

    X X 2 2 2 2 2 2 2 2 1

    X X

    FFH(255) FDH(253) FDH(253) FAH(250) F4H(244) E8H(232) 1DH(29) 72H(114) FFEBH

    7-11 UART MCS-51 UART

    1. UART SCON 2. UART

    1. UART MCS-51 UART SCON SM0 SM1

    SM1 SM0

    0 0 Mode 0 0 1 Mode 1 1 0 Mode 2 1 1 Mode 3

  • 7-18

    UART Mode 1 REN=1 UART RxD

    MOV SCON, #01010000B

    2. UART / UART UART /

    UART Mode 0 Mode 2 Mode 1 Mode 3 Timer 1 TH1 Timer 1 2 UART Mode 1 9600bit/sec 12MHz 7-1 Timer 1 TH1 253(FDH)

    Initial_UART:

    MOV SCON, #01000000B UARTMode 1 MOV TMOD, #00100000B Timer 1 2 MOV TL0 , #253 MOV TH1 , #253 9600 bit/sec SETB TR1 Timer 1

    RET

    Initial_UART UART MCS-51 UART ACC SBUF UART Mode 1 10bit 1 Start bit8 data bit 1 Stop bit TxD UART 10 bit SCON TI 1 MCS-51 CPU

    MOV SBUF,A SBUF

  • 7-19

    MCS-51 UART RxD RxD 10 (Start bit) RxD 8 bit SBUF SCON RI 1 CPUUART Byte SBUF CPU SBUF SBUF SBUF CPU RI UART

    MOV A,SBUF RxD ACC

    UART Mode 0 1. UART Mode 0 8 2. TTL 74LS164 MCS-51 UART Mode 0 8

    P2 UART Mode 0 RxD 74LS164 AB TxD 74LS164 CLOCK QAQH LED

  • 7-20

    3.

    7-15 UART Mode 0

  • 7-21

    4.

    7-16 P07-1

    5. P07-1.asm

    org 0

    jmp Start Start: mov sp,#6fh

    mov scon,#00000000B UARTMode 0 clr p3.2 IC 74LS164

  • 7-22

    setb p3.2

    mov r3,#0ffh FFH

    Loop:

    mov a,p2 A

    xrl a,r3 jz Loop (r3A)(r3=A) Loop

    mov r3,p2 r3 mov a,p2 cpl a P0 LEDLED 0LED

    1 mov sbuf,a A SBUF TxD

    UART_Wait:

    jbc ti,UART_Ok UART SBUF 8 Bit

    TI=0 (TI=1) TI 0 UART_Ok

    jmp UART_Wait

    UART_Ok:

    jmp Loop Loop

    .end

    6. UART 8 TI 1 CPU

    TI=1 UART 8 TI=1 TI TI 0

  • 7-23

    UART Mode 0 1. UART Mode 0 8

    2. TTL 74LS165 MCS-51 UART Mode 0 8

    74LS165 8 P0 LED

    (PISO) 74LS165 8 (1) "" Low 74LS165 SH/ LD P3.2

    74LS165 (2) UART TxD 74LS165 CLOCK

    CLK 74LS165 QH UART RxD

  • 7-24

    3.

    7-17 UART Mode 0

    4. P07-2.asm

    org 0

    jmp Start

    Start:

    mov sp,#6fh

    mov scon,#00010000B UARTMode 0!

    REN=1

  • 7-25

    clr ri UART

    74LS165

    Loop:

    clr p3.2 74LS165

    SH/LD setb p3.2 74LS165 (Shift)

    Receive_Wait:

    Jbc ri,Receive_Ok UART 8 Bit

    RI=0(RI=1) Receive_Ok RI 0

    jmp Receive_Wait

    Receive_Ok:

    mov a,sbuf P0 cpl a LEDLED 0LED

    1

    mov p0,a

    mov r7,#5

    call Delay jmp Loop Loop

    Delay:

    mov r6,#250

    djnz r6,$

    djnz r6,Delay

    ret

    .end

  • 7-26

    UART Mode 1 MCS-51

    1. UART Mode 1 2. AT89C51

    P1 TxD P0 LED

    3.

    7-18 MCS-51

  • 7-27

    4.

    7-19 P07-3T/3R

    5. P07-3R.asm

    org 0

    jmp Start

  • 7-28

    Start:

    mov sp,#6fh

    mov tmod,#00100000b Timer 1Mode 2 UART

    anl pcon,#01111111b SMOD=0 mov th1,#253 =9600 bit/sec(@fosc

    =11.059MHz) setb tr1 Timer 1 mov scon,#01010000b UARTMode 1

    REN=1 clr ri

    Receive_Wait:

    jbc ri,Receive_Ok UART 8 bit (RI=0) SBUF

    (RI=1) Receive_Ok RI=0 jmp Receive_Wait Receive_Wait RI

    Receive_Ok:

    mov a,sbuf (SBUF cpl a ) A P0

    mov p0,a LED jmp Receive_Wait Receive_Wait

    .end

  • 7-29

    P07-3T.asm Buffer equ 30h Buffer

    org 0

    jmp Start

    Start:

    mov sp,#6fh

    mov tmod,#00100000b Timer 1Mode 2 UART anl pcon,#01111111b SMOD=0

    mov th1,#253 =9600 bit/sec(@fosc =11.059MHz)

    setb tr1 Timer 1 mov scon,#01000000b UARTMode 1 mov Buffer,#0ffh Buffer

    ffh

    TransmitLoop:

    mov a,p1

    cjne a,Buffer,Transmit Transmit jmp TransmitLoop

    TransmitLoop

    Transmit:

    mov Buffer,a

    Buffer mov sbuf,a UART TxD

  • 7-30

    Transmit_Wait:

    jbc ti,Transmit_Ok UART Buffer(8 bit) (TI=1) TI 0

    Transmit_Ok jmp Transmit_Wait TI

    Transmit_Ok:

    jmp TransmitLoop TransmitLoop

    .end

    6. CPU CPU UART

    MCS-51 UART Mode 1 Timer 1 TxD RxD 10 8 SBUF MCS-51 UART Mode 1

  • 7-31

    ( ) 1. MCS-51

    (A) (B) (C) (D) ( ) 2. (A)11010001b

    (B)00100010b (C)01000100b (D)10100010b

    ( ) 3. MCS-51 UART (A)I/O (B)10 (C)11 (D)12

    ( ) 4. MSC-51 UART RxD 3 3 (A)0 (B)1 (C)dont care (D)

    ( ) 5. MCS-51 UART Mode1 fosc=6MHzSMOD=1 rate= (A)93.7K (B)187.5K (C)375K (D)750K bit/sec

  • 7-32

    ( ) 6. UART mode1 fosc=11.0592MHz

    SMOD=0 rate=4800 Bit/sec TH1 (A)253 (B)250 (C)244 (D)232

    (1)Mode 1 3 =)]1TH(256[12

    fosc32

    2SMOD

    fosc

    (2)TH1 =

    384fosc2256

    SMOD

    ( ) 7. UART MODE1 rate=9600 Bit/sec (A) mov scon,#01000000b

    mov tmod,#00100000b

    anl pcon,#01111111b

    mov tl0,#253

    mov th1,#253

    setb tr1

    (B) mov scon,#01000000b

    mov tmod,#00100000b

    anl pcon,#01111111b

    mov tl0,#244

    mov th1,#244

    setb tr1

    (C) mov scon,#01000000b

    mov tmod,#00100000b

    anl pcon,#01111111b

  • 7-33

    mov tl0,#253

    mov th1,#253

    setb tr0

    (D) mov scon,#10000000b

    mov tmod,#00100000b

    anl pcon,#01111111b

    mov tl0,#253

    mov th1,#253

    setb tr1

    7 6 5 4 3 2 1 0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TMOD GATE C/T M1 M0 GATE C/T M1 M0 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI PCON SMOD GF1 GF0 PD IDC

    IE EA ET2 ES ET1 EX1 ET0 EX0 IP PT2 PS PT1 PX1 PT0 PX0

    1. 7-18 1

    LED 2 LED 3 LED

  • 7-34