GIAO TIẾP NỐI TIẾP VI ĐIỀU KHIỂN 8051

download GIAO TIẾP NỐI TIẾP VI ĐIỀU KHIỂN 8051

of 44

description

GIAO TIẾP NỐI TIẾP VI ĐIỀU KHIỂN 8051

Transcript of GIAO TIẾP NỐI TIẾP VI ĐIỀU KHIỂN 8051

  • I HC QUC GIA TP.H CH MINHTRNG I HC BCH KHOA

    KHOA IN-IN T B MN K THUT IN T

    11

    CHNG 3

    H VI IU KHIN 8051

  • B mn K Thut in T - HBK

    3.6 Cng ni tip (Serial Port)

    2

  • B mn K Thut in T - HBK

    Ni dung

    Gii thiu

    Chun EIA(Electronic Industries Association)-232E hoc RS232

    Giao tip cng ni tip MCS-51/52

    ng dng ca ch 0

    ng dng ca ch 1

    ng dng ca ch 2 & 3

    Cc th d.

    3

  • B mn K Thut in T - HBK

    Truyn d liu ni tip

    Truyn d liu khong cch xa Tc truyn d liu thp Truyn d liu ni tip ng b

    Dng tn hiu clock ring ng b ha mch thu v pht.

    Thng dng khung d liu ln hn v nhanh hn.

    Truyn d liu ni tip bt ng b Khng cn tn hiu clock ring ng b ho chuyn

    d liu. Da trn k{ t. Mi k{ t c ng khung bng start

    bit v stop bit. Bn thu cn nhn dng start bit v stop bit nhn

    ng k{ t d liu.

    4

  • B mn K Thut in T - HBK

    Truyn d liu ni tip ng b (synchronous) v bt ng b (asynchronous) vi 8051

    5

  • B mn K Thut in T - HBK

    ng truyn d liu c bn

    Ngi ta c th s dng ng in thoi cng cng hoc dnh ring lm mi trng truyn d liu ni tip bt ng b.

    Modem c dng chuyn i d liu s thnh dng sng analog thch hp cho vic truyn trn ng dy in thoi v ngc li.

    C 2 kiu ng truyn: im n im v a im.

    6

    DTE DCE DCE DTE

    Computer or

    terminal

    Modem Modem Computer or

    terminal

    Communication linkDTE: Data Terminal EquipmentDCE: Data Communications Equipmnent

  • B mn K Thut in T - HBK

    ng truyn im n im v a im

    7

    Master

    Slave 1 Slave 2 Slave n

    Address 1 Address 2 Address n

    Station Station

    Peer Peer

    Tx

    TxRx

    Rx

  • B mn K Thut in T - HBK

    C bn v cc ng truyn

    H thng 2 dy v 4 dy:

    2 dy: tn hiu v t.

    4 dy: 2 b 2 dy.

    Cc kiu ng truyn:

    n cng (Simplex link): ng dy dnh ring cho thu hoc pht ch khng c hai.

    Bn song cng (Half-duplex link): ng dy c th dng cho pht hoc thu nhng mi ln ch c 1 chiu.

    Song cng (Full-duplex link): Pht v thu c th tin hnh ng thi. ng truyn cn 4 dy.

    8

  • B mn K Thut in T - HBK

    C bn v cc ng truyn

    9

    5V

    0V

    >+3V

  • B mn K Thut in T - HBK

    EIA-232-E or RS-232

    EIA-232-E or RS-232 can apply to the following data communication schemes:

    Serial communications

    Synchronous and asynchronous

    Dedicated leased or private lines

    Switched service

    Two wire or four wire

    Point to point or multipoint

    4 aspects in EIA-232-E interface: mechanical, functional, procedural, and electrical.

    10

  • B mn K Thut in T - HBK

    EIA-232-E Mechanical Characteristics

    25-pin DB25 /9-pin DB9 plug connector.

    11

  • B mn K Thut in T - HBK

    DB-9 Signals

    12

  • B mn K Thut in T - HBK

    Cng ni tip ca 8051

    Cng ni tip ca 8051 c th hot ng trn mt di rng tn s

    Chc nng:

    Chuyn i song song ni tip khi xut

    Chuyn i ni tip song song khi nhn

    13

  • B mn K Thut in T - HBK

    S khi cng ni tip ca 8051

    14

  • B mn K Thut in T - HBK

    Cc c tnh ca cng ni tip 8051

    Song cng (ful-duplex)

    C m khi thu (b m 1 byte): nu CPU c k t th nht trckhi k t th 2 c nhn y th d liu s khng b mt

    C 4 ch lm vic (0 - 3)

    Lp trnh d dng :

    Chn tc (c nh (on-chip OSC/12 hoc OSC/64), hoc thay i c (T1))

    Chn ch lm vic

    Cho chy (SCON)

    D s dng

    Truyn d liu: MOV SBUF, A

    Nhn d liu: MOV A, SBUF

    15

  • B mn K Thut in T - HBK

    Thanh ghi iu khin cng ni tip SCON

    16

  • B mn K Thut in T - HBK

    Cc ch hot ng ca cng ni tip

    17

    Trc khi s dng cng ni tip, SCON c khi to tr vi ch ng, v v.v... Th d, cc lnh sau

    MOV SCON, #01010010B

    khi to tr cho cng ni tip ch 1 (SM0/SM1=0/1), cho php b thu (REN=1) v t c ngt pht (T1=1) ch b pht sn sng hot ng.

  • B mn K Thut in T - HBK

    Ch 0:Thanh ghi dch 8 bit (1/3)

    RXD l chn xut/nhp d liu

    TXD l ng ra xung nhp dch

    Tm bit c pht ra hay thu vo vi LSB i trc.

    Tc baud c nh l 1/12 tn s mch dao ng trn chip

    18

  • B mn K Thut in T - HBK

    Ch 0:Thanh ghi dch 8 bit (2/3)

    19

    Pht: c khi ng bng lnh ghi vo SBUF

  • B mn K Thut in T - HBK

    Ch 0:Thanh ghi dch 8 bit (3/3)

    20

    Vic thu: c khi ng khi bit cho php b thu REN = 1 v RI = 0

  • B mn K Thut in T - HBK

    Ch 1: UART 8 bit c tc baud thayi c (1/3)

    ch 1, 10 bit c pht i trn TXD hoc c thu vo RXD. Cc bit ny bao gm 1 bit bt u (lun lun l 0), 8 bit d liu (LSB i trc), v 1 bit dng (lun lun l 1).

    hot ng b thu, bit dng i vo RB8 trong SCON. Trong 8051, tc baud c t bng tc trn ca Timer 1.

    21

  • B mn K Thut in T - HBK

    Ch 1: UART 8 bit c tc baud thayi c (2/3)

    Vic pht c khi ng bng cch ghi vo SBUF, nhng khng tht s bt u cho n khi cnh xung k ca b m chia 16 cung cp tc baud cng ni tip. D liu c dch ra trn ng TXD bt u bng bit bt u (start bit), theo sau l 8 bit d liu, v k n l bit dng. Chu kz ca mi bit l nghch o ca tc baud c lp trnh trong timer. C ngt pht (TI) c t ln 1 ngay khi bit dng xut hin trn TXD .

    22

    s kin ng b ha

  • B mn K Thut in T - HBK

    Ch 1: UART 8 bit c tc baud thay i c (3/3)

    Vic thu c khi ng bi chuyn tip 1 sang 0 RXD. B m chia 16 creset tc thi ng chnh cc s m vi chui bit n. Chui bit n cly mu gia 16 ln m.

    Gi s b thu pht hin bit bt u hp l th tip tc nhn k t. Bit bt uc b qua v 8 bit d liu c nhp vo thanh ghi dch cng ni tip. Khi ttc 8 bit c nhp vo th xy ra:

    Bit th 9 (bit dng) c nhp vo RB8 trong SCON.

    SBUF c np vi 8 bit d liu, v

    C ngt ca b thu (RI) c t ln 1.

    Tuy nhin cc iu trn ch xy ra nu c cc iu kin sau:

    RI = 0, v

    SM2 = 1, v bit dng nhn c = 1, hoc SM2=0.

    Yu cu RI = 0 bo m rng phn mm c k t trc (v xa RI).iu kin th 2 th hi phc tp, nhng ch p dng trong ch truyn thnga x l. N hm { Khng c t RI ln 1 trong ch truyn thng a x lkhi bit d liu th chn l 0.

    23

  • B mn K Thut in T - HBK

    Ch 2: UART 9 bit c tc baud c nh

    Khi SM1 =0 v SM0 = 1, cng ni tip hot ng ch 2 nh UART 9 bit vi tc baud c nh. Mi mt bit c pht hoc thu: 1 bit bt u, 8 bit

    d liu, 1 bit d liu th 9 lp trnh c, v 1 bit dng. Khi pht, bit th 9 l ni dung ca bit TB8 trong

    SCON. Khi thu, bit th 9 thu c c t trong RB8. Tc baud ch 2 l 1/32 hay 1/64 tn s mch

    dao ng trn chip (xem thm mc tc baud cngni tip).

    24

  • B mn K Thut in T - HBK

    Ch 3: UART 9 bit c tc baud thay i c

    Ch 3 ging vi ch 2 ngoi tr tc baud c lp trnh v c cung cp bi timer.

    Tht ra cc ch 1, 2, v 3 rt ging nhau. Skhc bit l tc baud (c nh trong ch 2, thay i c trong ch 1 v 3) v s bit dliu (8 trong ch 1, 9 trong ch 2 v 3)

    25

  • B mn K Thut in T - HBK

    Khi to tr v truy cp cc thanh ghi cng ni tip

    Cc tc v vi cng ni tip

    Cho php b thu

    Truyn (thu/pht) d liu ni tip

    Thm bit kim tra chn l

    Cc c ngt

    t tc baud cho cng ni tip

    Truyn thng a x l

    26

  • B mn K Thut in T - HBK

    S dng cc bit trong thanh ghi SCON

    Cho php b thu (REN bit 4)

    SETB REN Hoc

    MOV SCON, #xxx1xxxxB ; vi x=0/1

    Cc c ngt RI, TI: Cc c ny c bt ln bi phn cng nhng phi c xa bng phn mm.

    RI = 1: B m nhn y; TI = 1: B m pht rng

    27

    Cho php b thu Truyn d liu ni tip

    1. Thu ni tip:

    NHAN: JNB RI, $

    CLR RI

    MOV A, SBUF

    RET

    2. Pht ni tip:

    PHAT: JNB TI, $

    CLR TI

    MOV SBUF,A

    RET

  • B mn K Thut in T - HBK

    bit kim tra chn l - TB8 kim tra chn/l (nu khng c dng (*) l chn)

    ; qua bit nh C

    MOV C, P

    CPL C ; kim tra l (*)

    MOV TB8, C

    MOV SBUF, A

    ; ch 1: 7-bit + 1 parity-bit

    CLR ACC.7

    MOV C, P

    MOV ACC.7, C

    MOV SBUF, A

    Nu Parity lun lun bng 1 c 2 bit dng

    28

    Thm bit kim tra chn l

  • B mn K Thut in T - HBK

    t tc baud cho cng ni tip

    29

    Cch t SMOD ln 1MOV A,PCON

    SETB ACC.7

    MOV PCON,A

  • B mn K Thut in T - HBK

    S dng Timer 1 lm xung nhp tc baud

    Khi to tr TMOD ch timer 8 bit t ng np li tr u (ch 2 ca timer) v t gi tr np li vo TH1 cho tc trn bng tc baud. TMOD c khi to tr nh sau:

    MOVTMOD, #0010xxxxB

    vi x c gi tr 0 hay 1 cn cho Timer 0.

    t tc baud rt thp bng cch dng Timer 1 ch 16 bit , vi TMOD = #0001xxxxB. Tuy nhin phi khi to tr li cc thanh ghi TL1/TH1 sau mi ln trn. Vic ny s c thc hin trong chng trnh phc v ngt.

    Mt la chn khc l cung cp xung nhp Timer1 bng xung nhp bn ngoi qua chn T1 (P3.5). Tc baud l 1/32 tc trn ca Timer 1.

    Do cng thc xc nh tc baud trong cc ch 1 v 3 l

    Tc baud = 1/32 Tc trn ca Timer 1

    Th d: hot ng 1200 baud cn tc trn nh sau

    1200 = 1/32 Tc trn ca Timer 1

    Tc trn ca Timer 1 = 32 x 1200 = 38400 = 38.4 KHz -> Toverflow = 1/38.4 kHz = 26.04 s

    Vi XTAL=12 MHz -> TCLK = 1 s. Overflow cn Toverflow/TCLK 26 clocks

    Gi tr np cho timer 1 l -26

    30

  • B mn K Thut in T - HBK

    Tm tt tc baud

    31

  • B mn K Thut in T - HBK

    Th d 1: Khi to tr cho cng ni tip

    Vit chui lnh khi to tr cng ni tip hot ng nh UART 8 bit vi tc 2400 baud. S dng Timer 1 cung cp xung nhp tc baud.

    Bi gii.

    Vi th d ny, c 4 thanh ghi phi c khi to tr l: SCON, TMOD, TCON, v TH1. Gi tr cn khi to tr cho cc thanh ghi nh sau

    32

    ORG 8100H

    INIT: MOV SCON, #52H

    MOV TMOD, #20H

    MOV TH1, #-13

    SETB TR1

    END

  • B mn K Thut in T - HBK

    Th d 2: Gi s 10 byte chui d liu c lu trong RAM ni t a ch 30H. Vit

    chng trnh gi chui d liu ny n cng ni tip ca 8051 (1200 baud, crystal 11.0592 MHz)

    33

    ORG 0000H

    MOV SCON,#01010010B ;Serial port mode 1

    MOV TMOD,#00100000B ;Timer 1 mode 2

    MOV TH1,#-24 ;reload count for 1200 baud

    SETB TR1 ;start Timer 1

    MOV R2,#10 ;number of loops

    MOV R0,#30H ;starting address

    LOOP: MOV A,@R0 ;get data

    ACALL SEND ;send data

    INC R0 ;increase pointer

    DJNZ R2,LOOP ;loop 10 times

    SJMP DONE

    SEND: JNB TI,$ ;transmit buffer empty? No:check again

    CLR TI ;yes: clear flag and

    MOV SBUF,A ; send data

    RET ;return

    DONE: NOP

    END

  • B mn K Thut in T - HBK

    Th d 3

    Gi s chui d liu c lu trong RAM ni t a ch 30H n 50H. Vit chng trnh gi chui d liu ny ra cng ni tip 8051 dng UART 8-bit, 2400 baud, 11.059-MHz crystal

    34

    ORG 0000H

    MOV SCON,#01010010B

    MOV TMOD,#00100000B

    MOV TH1,#-12

    SETB TR1

    MOV R0,#30H

    LOOP: MOV A,@R0

    ACALL SEND

    INC R0

    CJNE R0,#51H,LOOP

    SJMP DONE

    SEND: JNB TI,$

    CLR TI

    MOV SBUF,A

    RET

    DONE: NOP

    END

  • B mn K Thut in T - HBK

    Th d 4 Vit chng trnh nhn 20-byte chui d liu t cng ni tip dng UART 8-

    bit, 2400 baud, 11.059-MHz crystal v ghi vo RAM ni bt u t a ch 40H

    35

    ORG 0000H

    MOV SCON,#01010010B ;Serial port mode 1

    MOV TMOD,#00100000B ;Timer 1 mode 2

    MOV TH1,#-12 ;reload count for 2400 baud

    SETB TR1 ;start Timer 1

    MOV R2,#20 ;number of loops

    MOV R0,#40H ;starting address

    LOOP: ACALL RECEIVE ;receive data

    MOV @R0,A ;store data

    INC R0 ;increase pointer

    DJNZ R2,LOOP ;loop 20 times

    SJMP DONE

    RECEIVE:

    JNB RI,$ ;receive buffer full? No: check again

    CLR RI ;yes: clear flag and

    MOV A,SBUF ; receive data

    RET ;return

    DONE: NOP

    END

  • B mn K Thut in T - HBK

    Th d 5 Vit chng trnh nhn 40-byte chui d liu t cng ni tip dng UART 8-

    bit, 4800 baud, 11.059-MHz crystal v ghi vo RAM ni bt u t a ch 40H

    36

    ORG 0000H

    MOV SCON,#01010010B ;Serial port mode 1

    MOV TMOD,#00100000B ;Timer 1 mode 2

    MOV TH1,#-6 ;reload count for 4800 baud

    SETB TR1 ;start Timer 1

    MOV R2,#40 ;number of loops

    MOV R0,#40H ;starting address

    LOOP: ACALL RECEIVE ;receive data

    MOV @R0,A ;store data

    INC R0 ;increase pointer

    DJNZ R2,LOOP ;loop 20 times

    SJMP DONE

    RECEIVE:

    JNB RI,$ ;receive buffer full? No: check again

    CLR RI ;yes: clear flag and

    MOV A,SBUF ; receive data

    RET ;return

    DONE: NOP

    END

  • B mn K Thut in T - HBK

    Th d 6: Chng trnh xut k t

    Vit chng trnh con OUTCHR pht m ASCII 7 bit trong thanh ghi tch ly A ra cng nitip ca 8051 vi bit kim tra l c thm vo nh bit th 8. Tr v t chng trnh con khng lm thay i tr ca thanh ghi tch ly trc khi gi chng trnh con.

    Bi gii.

    Th d ny v th d k minh ha 2 trong s cc chng trnh con thng dng nht trn cc h vi tnh c gn thit b u cui RS232: xut k{ t (OUTCHR) v nhp k{ t (INCHAR).

    OUTCHR: MOV C, P ; t bit kim ra chn vo c C

    CPL C ; i sang kim tra l

    MOV ACC.7, C ; thm vo m k{ t

    AGAIN: JNB TI, AGAIN ; TX c rnh ? Khng : kim tra li

    CLR TI ; Truyn c xa c TI v

    MOV SBUF, A ; gi k{ t

    CLR ACC.7 ; b bit kim tra l v

    RET ; quay v

    37

  • B mn K Thut in T - HBK

    Th d, cc lnh sau pht m ASCII cho ch Z n thit b ni tip gn vo cng ni tip ca 8051:

    MOV A, # Z

    CALL OUTCHR

    (tip tc)

    38

  • B mn K Thut in T - HBK

    Th d 7: Chng trnh con nhp k t

    Vit chng trnh con INCHAR nhp 1 k t t cng ni tip ca8051 v tr v vi m ASCII 7 bit trong thanh ghi tch ly. Bit kimtra l c t trong bit th 8 nhn c v t c nh ln 1 nuc sai v kim tra chn l.

    INCHAR: JNB RI, $ ; i k t

    CLR RI ; xa c

    MOV A, SBUF ; c k t vo A

    MOV C, P ; vi kim tra l trong A, P s = 1

    CPL C ; b ch c li

    CLR ACC.7 ; b bit kim tra chn l

    RET

    39

  • B mn K Thut in T - HBK

    Th d 8

    Gi s 10-byte chui d liu ASCII 8-bit c lu trong RAM ni t a ch 30H. Vit chng trnh pht chui d liu ny ra cng ni tip (4800 baud, crystal 11.0592 MHz) vi c kim tra l c truyn nh bit th 9.

    40

  • B mn K Thut in T - HBK

    Th d 8

    41

    ORG 0000H

    MOV SCON,#11010010B ;Serial port mode 3 (9-bit)

    MOV TMOD,#00100000B ;Timer 1 mode 2

    MOV TH1,#-6 ;reload count for 4800 baud

    SETB TR1 ;start Timer 1

    MOV R2,#10 ;number of loops

    MOV R0,#30H ;starting address

    LOOP: MOV A,@R0 ;get data

    MOV C,P ;put even parity bit in C flag

    CPL C ;convert to odd parity

    MOV TB8,C ;and move to the 9th data bit

    ACALL SEND ;send data

    INC R0 ;increase pointer

    DJNZ R2,LOOP ;loop 10 times

    SJMP DONE

    SEND: JNB TI,$ ;check TI empty? No: check again

    CLR TI ;yes: clear flag and

    MOV SBUF,A ; send data

    RET ;return

    DONE: NOP

    END

  • B mn K Thut in T - HBK

    Th d 9 Vit chng trnh nhn 40-byte chui d liu t cng ni tip dng UART 8-bit, 4800

    baud, 11.059-MHz crystal v ghi ra RAM ngoi bt u t a ch 5000H

    42

    ORG 0000H

    MOV SCON,#01010010B ;Serial port mode 1

    MOV TMOD,#00100000B ;Timer 1 mode 2

    MOV TH1,#-6 ;reload count for 4800 baud

    SETB TR1 ;start Timer 1

    MOV R2,#40 ;number of loops

    MOV DPTR,#5000H ;starting address

    LOOP: ACALL RECEIVE ;receive data

    MOVX @DPTR,A ;store data

    INC DPTR ;increase pointer

    DJNZ R2,LOOP ;loop 20 times

    SJMP DONE

    RECEIVE:

    JNB RI,$ ;receive buffer full? No: check again

    CLR RI ;yes: clear flag and

    MOV A,SBUF ;receive data

    RET ;return

    DONE: NOP

    END

  • B mn K Thut in T - HBK

    Exercise

    Vit chng trnh nhn 50-byte chui d liu t cng ni tip dng UART 8-bit, 2400 bps, 11.059 MHz v kim tra: Nu byte d liu l s chn th ghi vo RAM ni bt u t a ch 40H

    Nu byte d liu l s l th ghi ra RAM ngoi bt u t a ch 2000H

    43

  • B mn K Thut in T - HBK

    Ti liu tham kho

    H Trung M, Vi x l{, Nh xut bn i hc Quc Gia Tp. HCM - 2003

    I. Scott MacKenzie , The 8051 Microcontroller, 2nd Edition, Prentice-Hall, 1995

    Slide bi ging thy H Trung M

    Slide bi ging thy L Ch Thng.

    44