Post on 07-Mar-2016
description
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