Chuong 6 truyen thong noi tiep

7
Ni dung: Chương 1: Gii thiuvVi xChương 2: Gii thiuvcu trúc caHVi điu khin 8051 Chương 3: Kho sát tplnh và lp trình Vi điu khin 8051 Chương 4: Hot động cabộ định thi Chương 5: Hot động ngt Chương 6: Hot động truyn thông ni tiếp Chương 7: Thiếtkế giao tiếp 6.1. Gii thiu chung Port ni tiếp có chcnăng thc hin chuyn đổidliu song song ni tiếp khi phát và chuyn đổidliuni tiếp song song khi thu. Port ni tiếp hot động song công (có khnăng thu phát đồng thi). Sdng 2 thanh ghi chcnăng đặc bit SBUF (địa ch99H) và SCON (địa ch98H) để truy xut port ni tiếp. Tnshot động ca port ni tiếp (tc độ Baud) có thcđịnh hoc thay đổi. 6.1. Gii thiu chung Sơ đồ khica Port ni tiếp 6.2. Thanh ghi điu khin port ni tiếp (SCON) Bit Ký hiu Địa chMô tSCON.7 SM0 9FH Bit 0 chn chếđộ ca port ni tiếp. SCON.6 SM1 9EH Bit 1 chn chếđộ ca port ni tiếp. SCON.5 SM2 9DH Bit 2 chn chếđộ ca port ni tiếp. SCON.4 REN 9CH Bit cho phép thu. Bit này phi được Set để nhn ký t. SCON.3 TB8 9BH Bit phát 8. Bit th9 được phát chếđộ 2 và 3. SCON.2 RB8 9AH Bit thu 8. Bit th9 được nhn. SCON.1 TI 99H Cngt phát. Bit này được Set ngay khi kết thúc vic phát mt ký t. SCON.0 RI 98H Cngt thu. Bit này được SET ngay khi kết thúc vic thu mt ký t. SCON

description

vi điều khiển cho cơ khí động lực c6

Transcript of Chuong 6 truyen thong noi tiep

Page 1: Chuong 6 truyen thong noi tiep

Nội dung:

• Chương 1: Giới thiệu về Vi xử lý

• Chương 2: Giới thiệu về cấu trúc của Họ Vi điều

khiển 8051

• Chương 3: Khảo sát tập lệnh và lập trình Vi điều

khiển 8051

• Chương 4: Hoạt động của bộ định thời

• Chương 5: Hoạt động ngắt

• Chương 6: Hoạt động truyền thông nối tiếp

• Chương 7: Thiết kế giao tiếp

6.1. Giới thiệu chung

• Port nối tiếp có chức năng thực hiện chuyển đổi dữ liệu

song song ⇒⇒⇒⇒ nối tiếp khi phát và chuyển đổi dữ liệu nối

tiếp ⇒⇒⇒⇒ song song khi thu.

• Port nối tiếp hoạt động song công (có khả năng thu phát

đồng thời).

• Sử dụng 2 thanh ghi chức năng đặc biệt SBUF (địa chỉ

99H) và SCON (địa chỉ 98H) để truy xuất port nối tiếp.

• Tần số hoạt động của port nối tiếp (tốc độ Baud) có thể cố

định hoặc thay đổi.

6.1. Giới thiệu chung

Sơ đồ khối của Port nối tiếp

6.2. Thanh ghi điều khiển port nối tiếp (SCON)

Bit Ký hiệu Địa chỉ Mô tả

SCON.7 SM0 9FH Bit 0 chọn chế độ của port nối tiếp.

SCON.6 SM1 9EH Bit 1 chọn chế độ của port nối tiếp.

SCON.5 SM2 9DH Bit 2 chọn chế độ của port nối tiếp.

SCON.4 REN 9CHBit cho phép thu.

Bit này phải được Set để nhận ký tự.

SCON.3TB8 9BH

Bit phát 8.

Bit thứ 9 được phát ở chế độ 2 và 3.

SCON.2RB8 9AH

Bit thu 8.

Bit thứ 9 được nhận.

SCON.1 TI 99HCờ ngắt phát. Bit này được Set ngay

khi kết thúc việc phát một ký tự.

SCON.0 RI 98HCờ ngắt thu. Bit này được SET ngay

khi kết thúc việc thu một ký tự.

SCON

Page 2: Chuong 6 truyen thong noi tiep

6.3. Các chế độ hoạt động

• Các chế độ hoạt động của port nối tiếp được thiết lập bởi

thanh ghi SCON.

• Port nối tiếp của MCS-51 có 4 chế độ hoạt động. Các chế độ

được chọn bằng bit SM0 và SM1 trong thanh ghi SCON.

SM0 SM1 Chế độ Mô tả Tốc độ Baud

0 0 0 Thanh ghi dịch Cố định (f osc /12)

0 1 1 UART 8 bit Thay đổi (thiết lập bởi bộ định thời )

1 0 2 UART 9 bit Cố định (f osc /32 hoặc f osc /64 )

1 1 3 UART 9 bit Thay đổi (thiết lập bởi bộ định thời )

6.3.1. Thanh ghi dịch 8 bit (Mode 0)

• Dữ liệu được thu và phát qua chân RxD (P3.0). Chân

TxD (P3.1) dùng để xuất xung clock dịch bit.

• Khi phát và thu dữ liệu 8 bit, LSB được phát hoặc thu trước.

• Tốc độ Baud cố định bằng f OSC/12.

• Phát dữ liệu:

� Ghi vào bộ đệm SBUF.

� Dữ liệu được dịch ra ngoài chân RxD.

� Xung clock dịch bit gửi qua chân TxD.

� Mỗi bit hợp lệ truyền đi trên RxD trong 1 chu kỳ máy.

6.3.1. Thanh ghi dịch 8 bit (Mode 0)

• Thu dữ liệu:

� Chỉ được khởi động khi REN = 1 và RI = 0.

Nghĩa là, phải Set bit REN = 1 ở đầu chương

trình và xóa bit RI để bắt đầu công việc thu dữ

liệu.

� Dữ liệu được dịch vào chân RxD bởi xung

clock dịch bit (tác động sườn lên).

• UART (Universal Ansynchronous Receiver Transmiter)

là bộ thu phát dữ liệu nối tiếp với mỗi ký tự dữ liệu được

đứng trước bởi một bit start và đứng sau bởi một bit stop.

Thỉnh thoảng có một bit parity được chèn vào trước bit

stop.

6.3.2. UART 8 bit có tốc độ Baud thay đổi (Mode 1)

Page 3: Chuong 6 truyen thong noi tiep

• Hoạt động chủ yếu của UART là biến dữ liệu song song

thành nối tiếp khi phát và nối tiếp thành song song khi

thu.

• Cờ TI được set ngay khi bit stop xuất hiện trên trên TxD.

6.3.2. UART 8 bit có tốc độ Baud thay đổi (Mode 1) 6.3.2. UART 8 bit có tốc độ Baud thay đổi (Mode 1)

• Việc nhận dữ liệu được khởi động bởi một chuyển trạng

thái từ 1 xuống 0 trên đường RxD (bit start).

• Bit start sau đó được bỏ qua và 8 bit dữ liệu được nhận

tuần tự vào thanh ghi dịch của port nối tiếp. Khi cả 8 bit

được nhận, ta có:

� Bit thứ 9 (bit stop) ⇒⇒⇒⇒ RB8 của SCON.

� 8 bit dữ liệu được nạp vào SBUF.

� Cờ ngắt thu RI được Set.

6.3.3. UART 9 bit có tốc độ Baud cố định (Mode 2)

• Ở chế độ này, một ký tự phát hoặc thu bao gồm 11 bit:

� 1 bit start.

� 8 bit dữ liệu.

� Bit dữ liệu thứ 9 lập trình được.

� 1 bit stop.

• Khi phát: bit thứ 9 được đặt vào bit TB8 trong thanh ghi

SCON, là bit bất kỳ (có thể là bit Parity).

• Khi thu: bit thứ 9 nhận được sẽ được đặt vào TB8

6.3.3. UART 9 bit có tốc độ Baud thay đổi (Mode 3)

• Chế độ này tương tự chế độ 2, chỉ khác là tốc độ

Baud được lập trình và được cung cấp bởi bộ định

thời.

Page 4: Chuong 6 truyen thong noi tiep

6.4. Khởi động và truy xuất các thanh ghi

• Việc thu dữ liệu được cho phép khi bit REN được

Set bởi phần mềm.

SETB REN

Hoặc có thể dùng lệnh:

MOV SCON, #xxx1xxxxB

6.4.1. Cho phép thu

6.4. Khởi động và truy xuất các thanh ghi

• Bit P trong thanh ghi PSW được Set hoặc được xóa ở mỗi chu

kỳ máy để thiết lập việc kiểm tra chẵn cho 8 bit chứa trong

thanh chứa A.

Ví dụ:

MOV C, P ; đưa bit kiểm tra chẵn vào C

MOV TB8, C ; Bit này trở thành bit thứ 9

MOV SBUF, A ;chuyển 8 bit dữ liệu vào SBUF

6.4.2. Thêm vào bit chẵn lẻ (Parity)

6.4. Khởi động và truy xuất các thanh ghi

• RI và TI phải đươc Set bởi phần cứng (khi kết thúc việcnhận hoặc truyền 1 ký tự) nhưng phải được xóa bởi phần

mềm.

• Khi nhận ký tự:

WAIT: JNB RI, WAIT ; chờ ký tự nhận xong

CLR RI

MOV A, SBUF ; đọc ký tự

• Khi phát ký tự:

WAIT: JNB TI, WAIT ; chờ ký tự phát xong

CLR TI

MOV SBUF, A ; phát ký tự tiếp theo

6.4.3. Các cờ ngắt (RI và TI)6.5. Tốc độ Baud của Port nối tiếp

Xung clock cấp cho Port nối tiếp ở các chế độ

Page 5: Chuong 6 truyen thong noi tiep

6.5. Tốc độ Baud của Port nối tiếp

• Việc tạo tốc độ Baud thường được thực hiện bằng cách

khởi động thanh ghi TMOD ở chế độ tự nạp lại 8 bit và

đặt giá trị thích hợp vào thanh ghi TH1. Dùng lệnh:

MOV TMOD, #0010xxxx ; Timer 1 ở chế độ 2

6.5.1. Sử dụng Timer 1 làm xung clock tốc độ Baud

Tốc độ Baud = Tốc độ tràn Timer 1 / 32

6.5.1. Sử dụng Timer 1 làm xung clock tốc độ Baud

Tốc độBaud

Tần sốThach anh

(MHz)

SMODGiá trị nạp

cho TH1

Tốc độ Baud

thực tếSai số

9600 12 1 -7 (F9H) 8923 -7%

2400 12 0 -13 (F3H) 2404 0.16%

1200 12 0 -26 (E6H) 1202 0.16%

19200 11.059 0 -3 (FDH) 19200 0

9600 11.059 0 -3 (FDH) 9600 0

2400 11.059 0 -12 (F4H) 2400 0

1200 11.059 0 -24 (E8H) 1200 0

6.6. Các ứng dụng của Port nối tiếp

ORG 500H

OUTCHAR: MOV C, P ; Đặt bit chẵn lẻ vào C

CPL C ; Kiểm tra lẻ

MOV ACC.7, C ; Đưa vào bit 7 của thanh ghi A

WAIT: JNB TI, $ ; chờ bộ đệm rỗng

CLR TI

MOV SBUF, A ; Phát 1 ký tự

CLR ACC.7

RET

END

Ví dụ 1: Viết chương trình con phát mã ASCII 7 bit chứa trong thanh

ghi A ra Port nối tiếp, với bit kiểm tra lẻ là bit thứ 8. Sau khi trở về

từ chương trình con, nội dung thanh ghi A không thay đổi.

6.6. Các ứng dụng của Port nối tiếp

ORG 500H

INCHAR: JNB RI, $ ; Chờ nhận ký tự xong

CLR RI

MOV A, SBUF ; Đọc ký tự vào thanh ghi A

MOV C, P ; Kiểm tra lẻ

CPL C ; Nếu có lỗi (Cờ C = 1)

CLR ACC.7

RET

END

Ví dụ 2: Viết chương trình con thu 1 ký tự từ Port nối tiếp và trả về

mã ASCII 7 trong thanh ghi A. Sử dụng kiểm tra lẻ trong bit thứ 8

thu được và Set cờ nhớ nếu có lỗi.

Page 6: Chuong 6 truyen thong noi tiep

6.6. Các ứng dụng của Port nối tiếp

ORG 0000H

MOV SCON, #50H

MOV TMOD, #20H

MOV TH1, #-3

SETB TR1

BEGIN: MOV A, “H” ; Đưa ký tự A vào thanh ghi A

ACALL SEND

MOV A, “E” ; Đưa ký tự A vào thanh ghi A

ACALL SEND

Ví dụ 3: Viết chương trình truyền nối tiếp liên tục chữ HELLO với

tốc độ 9600 Baud. Tần số thạch anh fosc = 11.059 MHz. MOV A, “L” ; Đưa ký tự A vào thanh ghi A

ACALL SEND

MOV A, “L” ; Đưa ký tự A vào thanh ghi A

ACALL SEND

MOV A, “O” ; Đưa ký tự A vào thanh ghi A

ACALL SEND

SJMP BEGIN

;xxxxx Chương trình con truyền dữ liệu nối tiếp xxxxxx

SEND: MOV SBUF, A

JNB TI, $

CLR TI

RET

Ví dụ 3: Viết chương trình truyền nối tiếp liên tục chữ HELLO với

tốc độ 9600 Baud. Tần số thạch anh fosc = 11.059 MHz.

Tốc độ Baud = 4800 ⇒ Giá trị đếm TH1 = -6

ORG 0000H

MOV SCON, #50H

MOV TMOD, #20H

MOV TH1, #-6

SETB TR1

BEGIN: MOV A, “A” ; Đưa ký tự A vào thanh ghi A

LOOP: JNB TI, $ ; Chờ bộ đệm truyền rỗng

CLR TI

MOV SBUF, A ; Xuất ra bộ đệm

INC A ; Đến ký tự kế tiếp

CJNE A, “Z” + 1, LOOP ; Nếu đã truyền xong

SJMP BEGIN ; ký tự từ A đến Z thì lặp lại

Ví dụ 4: Viết chương trình xuất chuỗi ký từ liên tục từ “A” đến “Z”

ra cổng nối tiếp với tốc độ Baud là 4800, với fosc = 11.059 MHz

Tốc độ Baud = 19200 ⇒ Giá trị đếm TH1 = -3

ORG 0000H

MOV SCON, #50H

MOV TMOD, #20H

MOV TH1, #-3

SETB TR1

LOOP: JNB RI, $ ; Chờ ký tự nhận xong

CLR RI

MOV A, SBUF ; Đọc ký tự vào thanh chứa

SJMP LOOP ; ký tự từ A đến Z thì lặp lại

Ví dụ 5: Viết chương trình nhận ký tự từ cổng nối tiếp với tốc độ

Baud là 19200, với fosc = 11.059 MHz

Page 7: Chuong 6 truyen thong noi tiep

Cổng giao tiếp máy tínhSơ đồ chân cổng giao tiếp với máy tính

Vi mạch giao tiếp Sơ đồ mạch giao tiếp với máy tính