You are on page 1of 6

Hình: Ñònh khung kyù töï “A” (maõ ASCII – 41h)

1. DCD: Taùch tín hieäu mang döõ lieäu


2. RxD: Döõ lieäu ñöôïc nhaän
3. TxD: Döõ lieäu ñöôïc göûi
4. DTR: Ñaàu cuoái döõ lieäu saün saøng
5. GND: Mass cuûa tín hieäu
6. DSR: Döõ lieäu saün saøng
7. RTS: Yeâu caàu göûi
8. CTS: Xoaù ñeå göûi
9. RL: Baùo chuoâng

4 x 10uF/25v

Hình: Keát noái modem roãng


11,14; 13,12: T1in, T1out ; R1in, R1out ;
(Null modem)
10,7; 8,9: T2in, T2out ; R2in, R2out ;

Hình: Keát noái vi ñieàu khieån vôùi


MAX232 vôùi PC (COM port – RS 232).

Ngöôøi bieân soaïn: Tröông Ngoïc Anh – Khoa Ñieän töû – Boä moân Ñieän töû Coâng nghieäp 1
Baûng: Thanh ghi ñieàu khieån coång noái tieáp SCON (ñònh ñòa chæ).
Bit Name Bit Address Explanation of Function
7 SM0 9Fh Xaùc ñònh cheá ñoä laøm vieäc : Bit 0
6 SM1 9Eh Xaùc ñònh cheá ñoä laøm vieäc : Bit 1
5 SM2 9Dh Cho pheùp truyeàn thoâng ña xöû lyù (SM2 = 0)
4 REN 9Ch Baät/xoaù baèng phaàn meàm ñeå cho pheùp/khoâng cho pheùp thu
3 TB8 9Bh Bit thöù 9 trong mode 2 vaø 3 – Khi truyeàn.
2 RB8 9Ah Bit thöù 9 trong mode 2 vaø 3 – Khi nhaän.
Côø ngaét truyeàn. Ñaët leân 1 baèng phaàn cöùng khi keát thuùc truyeàn kyù töï;
1 TI 99h
ñöôïc xoaù baèng phaàn meàm.
Côø ngaét thu. Ñaët leân 1 baèng phaàn cöùng khi keát thuùc nhaän kyù töï;
0 RI 98h
ñöôïc xoaù baèng phaàn meàm.

Baûng: Caùc cheá ñoä hoaït ñoäng cuûa coång noái tieáp.

SM0 SM1 Serial Mode Explanation Baud Rate


0 0 0 Thanh ghi dòch 8 bit Coá ñònh (Taàn soá dao ñoäng / 12)
0 1 1 8-bit UART Thay ñoåi ñöôïc (chænh baèng timer 1)
1 0 2 9-bit UART Coá ñònh (Taàn soá dao ñoäng / 32)
1 1 3 9-bit UART Thay ñoåi ñöôïc (chænh baèng timer 1)

Thanh ghi ñieàu khieån TMOD (89h) SFR


Bit Name Explanation of Function Timer
7 GATE1 Timer 1 hoaït ñoäng khi ngaét ngoaøi INT1 (P3.3) ôû möùc cao. 1
Counter: Möùc ‘1’
6 C/T1 1
Timer: Möùc ‘0’
5 T1M1 Bit choïn cheá ñoä hoaït ñoäng - Bit 1 1
4 T1M0 Bit choïn cheá ñoä hoaït ñoäng - Bit 0 1
3 GATE0 Timer 0 hoaït ñoäng khi ngaét ngoaøi INT0 (P3.4) ôû möùc cao. 0
Counter: Möùc ‘1’
2 C/T0 0
Timer: Möùc ‘0’
1 T0M1 Bit choïn cheá ñoä hoaït ñoäng - Bit 1 0
0 T0M0 Bit choïn cheá ñoä hoaït ñoäng - Bit 0 0

TxM1 TxM0 Timer Mode Description of Mode


0 0 0 13-bit Timer.
0 1 1 16-bit Timer
1 0 2 v8-bit auto-reload
1 1 3 Split timer mode

- Tính toác ñoä baud: TH1 = 256 - ((Crystal / 384) / Baud)


- Taàn soá thaïch anh: 11.059 MHz ; SMOD = 0.
+ 9600 bps: TH1 = -3 (FDh)
+ 4800 bps: TH1 = -6 (FAh)
+ 2400 bps: TH1 = -12 (F4h)
+ 1200 bps: TH1 = -24 (E8h)
+ 19200 bps: TH1 = -3 (FDh) ; SMOD = 1 (9600x2)

Ngöôøi bieân soaïn: Tröông Ngoïc Anh – Khoa Ñieän töû – Boä moân Ñieän töû Coâng nghieäp 2
Baûng maõ ASCII (American Standard Code for Infornation Interchange)

CHÖÔNG TRÌNH MINH HOAÏ

1. Chöông trình truyeàn noái tieáp lieân tuïc moät kyù töï “A” vôùi toác ñoä 4800 baud.
MOV TMOD,#20H ;Timer 1, mode 2
MOV SCON,#50H ;cheá ñoä 1, UART 8 bit, REN = 1
MOV TH1,#-3 ; 9600 baud
SETB TR1

MOV SBUF,#’A’ ; Truyeàn kyù töï A


LOOP: JNB TI,LOOP ;Kieåm tra côø truyeàn TI (= 1: Truyeàn xong)
CLR TI ; Xoaù côø TI, chuaån bò cho laàn keá

Ngöôøi bieân soaïn: Tröông Ngoïc Anh – Khoa Ñieän töû – Boä moân Ñieän töû Coâng nghieäp 3
2. Chöông trình nhaän kyù töï noái tieáp:
MOV TMOD,#20H ;Timer 1, mode 2
MOV SCON,#50H ;cheá ñoä 1, UART 8 bit, REN = 1
MOV TH1,#-3 ; 9600 baud
SETB TR1

LOOP: JNB RI,LOOP ;Kieåm tra côø truyeàn RI (= 1: Nhaän xong)


MOV A,SBUF ;Nhaän döõ lieäu
CLR RI ; Xoaù côø RI, chuaån bò cho laàn keá

3. Chöông trình giao tieáp treân maùy tính:

- Chöông trình khai baùo ban ñaàu:


Private Sub Form_Load()
MSComm1.Settings = “9600,n,8,1” ‘Thieát laäp toác ñoä baud vaø döõ lieäu (8 bit, khoâng parity,1 bit stop)
MSComm1.CommPort = 1 ‘Choïn COM 1
MSComm1.RThreshold = 1 ‘Event-driven
MSComm1.PortOpen = True ‘Môû coång COM
MSComm1.InputLen = 0 ‘Soá kyù töï nhaän

- Ñoaïn chöông trình truyeàn:


Private Sub cmdTruyen_Click()
MSComm1.Output = Chr(&H41) 'Maõ ASCII = 41h – Kyù töï ‘A’
End Sub

Chöông trình nhaän:


Private Sub MSComm1_OnComm()
If (MSComm1.CommEvent = comEvReceive) Then
txtHienthi.Text = Val(MSComm1.Input) ‘Hieån thò döõ lieäu nhaän ñöôïc.
End If
End Sub

GIAO TIEÁP NOÁI TIEÁP


I. GIÔÙI THIEÄU :
Port noái tieáp cuûa 8951 coù theå hoaït ñoäng trong caùc
mode rieâng bieät treân phaïm vi cho pheùp cuûa taàn soá. Chöùc
naêng chuû yeáu cuûa Port noái tieáp laø thöïc hieän söï chuyeån ñoåi
song song thaønh noái tieáp cho döõ lieäu ra vaø söï chuyeån ñoåi
noái tieáp thaønh song song cho döõ lieäu vaøo.

Ngöôøi bieân soaïn: Tröông Ngoïc Anh – Khoa Ñieän töû – Boä moân Ñieän töû Coâng nghieäp 4
II. THANH GHI ÑIEÀU KHIEÅN PORT NOÁI TIEÁP (SERIAL PORT CONTROL REGISTER) :

Bit Kyù hieäu Ñòa chæ Moâ taû hoaït ñoäng


SCON.7 SM0 9FH Bit 0 cuûa mode Port noái tieáp.
SCON.6 SM1 9EH Bit 1 cuûa mode Port noái tieáp.
SCON.5 SM2 9DH Bit 2 cuûa mode Port noái tieáp. Cho pheùp söï truyeàn
cuûa boä xöû lyù ña keânh ôû mode 2 vaø 3; RI seõ khoâng
tích cöïc neáu bit thöù 9 ñaõ thu vaøo laø 0.
SCON.4 REN 9CH REN = 1 seõ cho thu kí töï.
SCON.3 TB8 9BH Phaùt bit 8. Bit 9 phaùt trong mode 2 vaø 3, noù ñöôïc
set hoaëc xoùa bôûi phaàn meàm.
SCONø.2 RB8 9AH Thu bit 8, bit 9 thu.
SCONø.1 TI 99H Côø ngaét phaùt. Ñöôïc set khi keát thuùc söï truyeàn kí
töï vaø ñöôïc xoùa bôûi phaàn meàm.
SCON.0 RI 98H Côø ngaét thu. Ñöôïc set khi keát thuùc söï thu vaø ñöôïc
xoùa bôûi phaàn meàm.

III. CAÙC MODE HOAÏT ÑOÄNG (MODE OF OPERATION) :

SM0 SM1 MODE MOÂ TAÛ TOÁC ÑOÄ BAUD


0 0 0 Thanh ghi dòch Coá ñònh (taàn soá dao ñoäng f/12).
0 1 1 UART 8 bit Thay ñoåi (ñöôïc ñaët bôûiTimer).
1 0 2 UART 9 bit Coá ñònh (taàn soá dao ñoäng f/12 or f/64)
1 1 3 UART 9 bit Thay ñoåi (ñöôïc ñaët bôûi Timer).

IV. QUAÙ TRÌNH KHÔÛI ÑOÄNG VAØ TRUY XUAÁT CAÙC THANH GHI CUÛA PORT NOÁI TIEÁP :
1. Cho pheùp boä thu (Receive Enable) :
SETB REN hoaëc MOV SCON, # XXX1XXXXB
2. Côø ngaét :
Côø ngaét thu RI vaø phaùt TI trong thanh ghi SCON vaän haønh 1 rôle quan troïng trong söï truyeàn noái tieáp 8951. Caû
hai bit ñeàu ñöôïc set bôûi phaàn cöùng nhöng phaûi xoùa bôûi phaàn meàm.
Ñieån hình laø RI ñöôïc set ôû cuoái söï thu kyù töï vaø cho bieát :thanh ghi ñeäm thu ñaõ ñaày”. Ñieàu kieän naøy coù theå
kieåm tra trong phaàn meàm hoaëc coù theå ñöôïc laäp trình ñeå sinh ra söï ngaét. Neáu phaàn meàm muoán nhaäp moät kyù töï töø moät
thieát bò ñaõ ñöôïc keát noái ñeán Port noái tieáp, thì noù phaûi chôø ñeán khi RI ñöôïc set, sau khi xoùa RI vaø ñoïc kyù töï töø SBUF.
Ñieàu naøy ñöôïc laäp trình nhö sau :
WAIT :
JNB RI, WAIT : Kieåm tra RI coù set chöa.
CLR RI : Xoùa côø ngaét thu RI
MOV A, SBUF : CPU ñoïc kyù töï
TI ñöôïc set ôû cuoái söï phaùt kyù töï vaø cho bieát “thanh ghi ñeäm cuûa söï phaùt ñaõ roãng”. Neáu phaàn meàm muoán gôûi 1
kyù töï ñeán moät thieát bò ñaõ ñöôïc keát noái ñeán Port noái tieáp, tröôùc tieân noù phaûi kieåm tra xem Port noái tieáp ñaõ saün saøng
chöa. Neáu kyù töï tröôùc ñaõ ñöôïc gôûi ñi, thì noù phaûi chôø cho ñeán khi söï phaùt ñi hoaøn thaønh. Caùc leänh sau ñaây duøng ñeå
phaùt moät kyù töï trong thanh ghi A ra :
WAIT :
JNB TI, WAIT : Kieåm tra TI coù set chöa.
CLR TI : Xoùa côø ngaét thu TI
MOV SBUF,A : CPU ñoïc kyù töï

Ngöôøi bieân soaïn: Tröông Ngoïc Anh – Khoa Ñieän töû – Boä moân Ñieän töû Coâng nghieäp 5
HOAÏT ÑOÄNG INTERRUPT CUÛA 8951
I. GIÔÙI THIEÄU :
Interrupt laø moät söï coá coù ñieàu kieän maø noù gaây ra söï ngöng laïi taïm thôøi cuûa chöông trình ñeå phuïc vuï moät
chöông trình khaùc. Caùc Interrupt vaän haønh moät Relay raát quan troïng trong thieát bò vaø söï cung caáp ñaày ñuû caùc öùng
duïng vi ñieàu khieån. Chuùng cho pheùp 1 heä thoáng ñaùp öùng ñoààng boä ñeán söï kieän quan troïng vaø giaûi quyeát söï kieän ñoù
trong khi chöông trình khaùc ñang thöïc thi. Moät heä thoáng ñöôïc laùi bôûi Interrupt cho 1 kyõ xaûo laøm nhieàu coâng vieäc
cuøng môät luùc. Taát nhieân CPU khoâng theå thöïc thi nhieàu leänh taïi moät thôøi ñieåm, nhöng noù coù theå taïm thôøi treo vieäc
thöïc thi cuûa chöông trình chính ñeå thöïc thi chöông trình khaùc vaø sau ñoù quay laïi chöông trình chính.
Khi moät söï ngaét xuaát hieän vaø ñöôïc chaáp nhaän bôûi CPU thì chöông trình chính bò ngaét. Caùc hoaït ñoäng
sau ñaây xuaát hieän :
Ö Leänh hieän haønh vaø keát thuùc thöïc thi.
Ö Boä ñeám chöông trình PC ñöôïc caát giöõ vaøo Stack.
Ö Traïng thaùi ngaét hieän haønh ñöôïc caát giöõ vaøo beân trong.
Ö Nhöõng söï ngaét bò ngaên laïi taïi möùc ngaét.
Ö Boä ñeám chöông trình PC ñöôïc LOAD vôùi ñòa chæ vectô cuûa thuû tuïc phuïc vuï ngaét ISR.
Ö Thuû tuïc phuïc vuï ngaét ISR ñöôïc thöïc thi.

Caùc ñieàu kieän xaûy ra ngaét:


· Timer 0 Overflow.
· Timer 1 Overflow.
· Reception/Transmission of Serial Character.
· External Event 0.
· External Event 1.

Bit Symbol Bit Address Söï moâ taû (Enable = 1; Dissble)


IE.7 EA AFH Cho pheùp toaøn boä hoaëc caám toaøn boä.
IE.6 - AEH Khoâng ñònh nghóa.
IE.5 ET2 ADH Cho pheùp ngaét Timer 2 (8052).
IE.4 ES ACH Cho pheùp ngaét Port noái tieáp.
IE.3 ET1 ABH Cho pheùp ngaét Timer 1.
IE.2 EX1 AAH Cho pheùp ngaét ngoaøi External 1.
IE.1 ET0 A9H Cho pheùp ngaét Timer 0.
IE.0 EX0 A8H Cho pheùp ngaét ngoaøi External 0.
IE (Interrupt Enable) Register Sumary.
Interrupt Flag Vectors Address
System Reset RST 0000H
External 0 IE 0 0003H
Timer 0 TF 0 000BH
External 1 IE 1 0013H
Timer 1 TF1 001BH
Serial Port RI or TI 0023H
Timer 2 (8052) TF 2 or EXF2 002BH

INT_SERIAL: JNB RI,CHECK_TI ;If the RI flag is not set, we jump to check TI
MOV A,SBUF ;If we got to this line, its because the RI bit *was* set

CLR RI ;Clear the RI bit after weve processed it


CHECK_TI: JNB TI,EXIT_INT ;If the TI flag is not set, we jump to the exit point
CLR TI ;Clear the TI bit before we send another character

MOV SBUF,#A ;Send another character to the serial port


EXIT_INT: RETI

Ngöôøi bieân soaïn: Tröông Ngoïc Anh – Khoa Ñieän töû – Boä moân Ñieän töû Coâng nghieäp 6

You might also like