Truyền thông nối tiếp ở vi điều khiển 8051

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 168 - 174)

6.8. Lập trình điều khiển cổng nối tiếp

6.8.3. Truyền thông nối tiếp ở vi điều khiển 8051

1. Cấu trúc cổng nối tiếp của máy tính.

a. Cấu tạo và phân bố các chân tín hiệu

Các máy tính tương thức IBM đều được trang bị hai cổng giao diện tuần tự- RS232C và RS-232C ( RS là chữ viết tắt của Referent Standart ) là một chuẩn của hiệp hội công nghiệp điện tử EIA. Chuẩn châu âu của giao diện này được gọi là V.24. Chuẩn này tương tự như chuẩn IEEE 1284 của giao diện song song, quy định cấu trúc vật lý, tham số điện và tín hiệu cho ổ cắm 25 chân như giao diện song song. Hãng IBM quy định thêm ổ cắm 9 chân cho máy tính cá nhân.

Hình 6.17 Cấu tạo và phân bố các chân tín hiệu cổng COM

16 27 38 49 5

Loại 25

chân Loại 9

chân Tín hiệu Hướng

truyền ý nghĩa

1 - Tiếp đất - Bảo vệ, tiếp đất

2 3 TD Ra Dữ liệu phát

3 2 RD Vào Dữ liệu nhận

4 7 RTS Ra Yêu cầu phát

5 8 CTS Vào Sẵn sàng nhận

6 6 DSR vào Bảo vệ, tiếp đất

7 5 Tiếp đất - Phát hiện có cáp

8 1 DCD Vào dẫn Sẵn sàng

20 4 DTR Ra Báo máy chủ

được gọi

22 9 RI Vào Data signal rate

detector

2 - DSRD Vào/ ra

114 215 316 417 518 619 720 821 922 1023 1124 1225 13

T1IN 2 R1OUTT2IN 31 R2OUT 20

T1OUT 5 R1IN 4 T2OUT 18 R2IN 19 14 VS+

12 VSa-VSb- 17

C1+

8 C1-

13

C2a+ 11 C2b+ 15 C2a- 16 C2b- 10

MAX233

T1IN 11 R1OUT 12 T2IN 10 R2OUT 9 T1OUT

14 13 R1IN

T2OUT 7

8 R2IN

C2+

4 C2-

5

C1+

1 C1-

3

2 VS+

6 VS-

MAX232

ý nghĩa các tín hiệu quan trọng :

RTS: máy tính phát tín hiệu này ra thiết bị ngoại vi báo chuẩn bị truyền dữ liệu.

CTS: Tín hiệu này đến từ thiết bị ngoại vi báo đã sẵn sàng nhận dữ liệu.

nếu máy tính nhận được dữ liệu này nó bắt đầu truyền dữ liệu ra thiết bị ngoại vi. Như

vậy RTS và CTS là hai tín hiệu bắt tay giữa máy tính và thiết bị ngoại vi. Cáp nối sẽ bắt chéo hai tín hiệu này.

DCD: Trong trường hợp thiết bị ngoại vi là một Modem và nối được đường truyền, nó bảo vệ máy tính tín hiệu DCD. DCD luôn ở trạng thái tích cực khi đường dây vẫn được nèi.

DSR: Trong trường hợp thiết bị ngoại vi là một Modem nó bảo vệ máy tính tín hiệu này sau khi khởi động thành công và sẵn sàng hoạt động.

DTR: Tín hiệu này do máy tính báo ra thiết bị ngoại vi. Tín hiệu này thường được khởi

động hay đóng mạch thiết bị ngoại vi. DTR và DSR có trách nhiệm chuẩn bị kết nối.

RI: Tín hiệu báo từ thiết bị ngoại vi về máy tính. Nếu thiết bị ngoại vi là Modem, tín hiệu RI báo máy tính đang bị một máy tính khác truy cập qua đường điện thoại.

DSRD ( ổ cắm 25 chân) cho phép thay thế tốc độ truyền. Tín hiệu này đi theo hai chiều, có nghĩa là cả máy tính và thiết bị ngoại vi đều có khả năng đổi tốc độ.

Tham số điện của cổng nối tiếp:

Giao diện tuần tự RS232 cần điện thế tín hiệu cao hơn mức TTL( 0V, 5V) để truyền tín hiệu được xa.Tham số điện của RS232 đựoc quy định như sau.

Logic 0 : +3V đến +25V ( gọi là “Space”) Logic 1 : - 3V đến – 25V ( gọi là “Mark”)

Mọi tín hiệu giữa –3V và +3V đều không có ý nghĩa. Vì tín hiệu trong máy tính chỉ có 0V và 5V (TTL) hay thấp hơn lên tín hiệu từ máy tính ra giao diện RS232 và ngược lại phải qua bộ chuyển mức tín hiệu. Sử dụng vi mạch MAX232, hay MAX233 có sơ đồ ch©n nh­ sau:

Hình 6.18 Vi mạch MAX232

- Các đặc tính kỹ thuật của cổng nối tiếp

b. Địa chỉ cổng và tốc độ truyền của cổng nối tiếp.

- Địa chỉ cổng và yêu cầu ngắt.

Giao diện Địa chỉ cơ sở Yêu cầu ngắt

COM 1 3F8H IRQ4

COM 2 2F8H IRQ3

COM 3 3E8H IRQ4

COM 4 2E8H IRQ3

- Tốc độ truyền và các số chia tương ứng của giao diện tuần tự.

Tốc độ ( baud) Số chia ( D) Giá trị số chia cao ( H) Giá trị số chia thấp ( L )

50 2304 09 00

300 384 01 80

600 192 00 C0

2400 48 00 30

4800 24 00 18

9600 12 00 0C

19200 6 00 06

38400 3 00 03

57600 2 00 02

115200 1 00 01

Bảng 6.6 Tốc độ truyền của cổng nối tiếp c. Phương pháp truyền.

Phương pháp truyền từ máy tính ra thiết bị ngoại vi.

Có ba phương pháp:

Truyền một chiều ( Simplex) : dữ liệu chỉ được truyền theo một chiều :Từ máy tính ra hoặc vào máy tính. Trong trường hợp thứ nhất dữ liệu được truyền ra qua đường TD,đường RD không được nối. Thiết bị ngoại vi không sử dụng đường RTS. tín hiệu DCD luôn ở trạng thái không tích cực vì thiết bị ngoại vi chỉ nhận dữ liệu. Tín hiệu DSR luôn tích cực.

Truyền hai chiều riêng biệt ( haft duplex) : truyền hai chiều riêng biệt giữa máy tính và thiết bị ngoại vi. Trong trường hợp này chỉ TD hoặc TR làm việc trong một thời điểm.

Tín hiệu bắt tay RTS và CTS được sử dụng. Nếu máy tính muốn truyền dữ liệu, nó đưa tín hiệu RT lên trạng thái tích cực và đợi tín hiệu ngoại vi trả lời qua tín hiệu CTS. Nếu thiết bị ngoại vi muốn truyền dữ liệu, nó đưa tín hiệu DCD về máy tính. DSR không được dùng đến.

Máy tính báo sẵn sàng nhận dữ liệu qua DTR và cho phép hay cấm thiết bị ngoại vi ( Máy tính luôn đảm nhiệm vai trò chủ trong khi trao đổi dữ liệu). Hướng truyền dữ liệu được thay

đổi bằng cách thay đổi hai tín hiệu RTS và CTS. Tín hiẹu RI rất quan trọng trong biên bản truyền này, qua RI thiết bị ngoại vi báo một thiết bị khác đang tìm cách kết nối với máy tính qua thiết bị ngoại vi dang hoạt động ( Modem).

Truyền hai chiều cùng một lúc ( Full Duplex) : Dữ liệu được truyền theo cả hai chiều cùng một lúc. Trong trường hợp này, máy tính và thiết bị ngoại vi đảm nhiệm chức năng máy phát và máy nhận cùng một lúc. Tín hiệu RTS và CTS lúc này không có ý nghĩa. DTR đảm nhiệm việc chuyển mạch.

d. Khung dữ liệu nối tiếp.

- Khung của dữ liệu dạng TTL.

- Khung dữ liệu truyền đi.(Ví dụ truyền đi chữ A đã chuyển sang chuẩn RS232 ).

Hình 6.19 Khung dữ liệu truyền nối tiếp.

2. Truyền thông nối tiếp ở VĐK 8051.

a. Tốc độ baud trong 8051.

8051 truyền và nhận dữ liệu nối tiếp theo nhiều tốc độ khác nhau. Tốc độ truyền của nó có thể lập trình được. Điều này thực hiện nhờ sự trợ giúp của bộ định thời Timer1. Trước khi ta đi vào bàn cách làm điều đó như thế nào thì ta sẽ xét quan hệ giữa tần số thạch anh và tốc độ baud trong 8051.

Như ta đã nói ở chương trước đây thì 8051 chia tần số thạch anh cho 12 để lấy

SM0 SCON.7 Số xác định chế độ làm việc cổng nối tiếp SM1 SCON.6 Số xác định chế độ làm việc cổng nối tiếp

SM2 SCON.5 Dùng cho truyền thông giữa các bộ vi xử lý (SM2 = 0) REN SCON.4 Bật/xoá bằng phần mềm để cho phép/ không cho thu TB8 SCON.3 Không sử dụng rộng rãi

RB8 SCON.2 Không sử dụng rộng rãi

T1 SCON.1 Cờ ngắt truyền đặt bằng phần cứng khi bắt đầu bít Stop ở chế độ 1.

R1 SCON.0 Cờ ngắt thu. Xoá bằng phần mềm.

921.6kHz (11.0592MHz : 12 = 921.6kHz). Mạch điện UART truyền thông nối tiếp của 8051 lại chia tần số chu trình máy cho 32 một lần nữa trước khi nó được dùng bởi bộ

định thời gian Timer1 để tạo ra tốc độ baud. Do vậy, 921.6kHz : 32 = 28.800Hz. Đây là số ta sẽ dùng trong cả phần này để tìm giá trị của Timer1 để đặt tốc độ baud. Muốn Timer1 đặt tốc độ baud thì nó phải được lập trình về chế độ làm việc mode2, đó là chế

độ thanh ghi 8 bít tự động nạp lại. Để có tốc độ baud tương thích với PC ta phải nạp TH1 theo các giá trị cho trong bảngsau:

Tốc độ baud TH1 (thập phân) TH1 (số Hex) 9600

4800 2400 1200

- 3 - 6 - 12 - 24

FD FA F4 F8 Bảng 6.7 Tốc độ baud của 8051

b. Thanh ghi SBUF.

SBUF là thanh ghi 8 bít được dùng riêng cho truyền thông nối tiếp trong 8051. Đối với một byte dữ liệu cần phải được truyền qua đường TxD thì nó phải được đặt trong thanh ghi SBUF. Tương tự như vậy SBUF giữ một byte dữ liệu khi nó được nhận bở đường RxD của 8051. SBUF có thể được truy cập bởi mọi thanh ghi bất kỳ trong 8051.

Khi một byte được ghi vào thanh ghi SBUF nó được đóng khung với các bít Start và Stop và đường truyền nối tiếp quan chân TxD. Tương tự như vậy, khi các bít

được nhận nối tiếp từ RxD thì 8051 mở khung nó để loại trừ các bít Start và Stop để lấy ra một byte từ dữ liệu nhận được và đặt nó vào thanh ghi SBUF.

c. Thanh ghi ®iÒu khiÓn nèi tiÕp SCON.

- Thanh ghi SCON là thanh ghi 8 bít được dùng để lập trình việc đóng khung bít bắt đầu Start, bít dừng Stop và các bít dữ liệu cùng với việc khác.

- Dưới đây là mô tả các bít khác nhau của SCON:

Bảng 6.8 Bảng mô tả các bit của thanh ghi SCON

SM0 SM1 SM2 REN TB8 RB8 Ti Ri

- Chức năng các bit.

Các bít SM0, SM1.

Đây là các bít D7 và D6 của thanh ghi SCON. Chúng được dùng để xác định chế độ đóng khung dữ liệu bằng cách xác định số bít của một ký tự và các bít Start và Stop. Các tổ hợp của chúng là:

SM0 SM1

0 0 Chế độ nối tiếp 0

0 1 Chế độ nối tiếp 1, 8 bít dữ liệu, Start, Stop

1 0 Chế độ nối tiếp 2

1 1 Chế độ nối tiếp 3

Trong bốn chế độ ta chỉ quan tâm đến chế độ 1, các chế độ khác được giải thích ở Appendisk A3. Trong thanh ghi SCON khi chế độ 1 được chọn thì dữ liệu được đóng khung gồm 8 bít dữ liệu, 1 bít Start, 1 bít Stop để tương thích với cổng COM của IBM PC và các PC tương thích khác. Quan trọng hơn là chế độ nối tiếp 1 cho phép tốc độ baud thay đổi và được thiết lập bởi Timer1 của 8051. Trong chế độ nối tiếp 1 thì mỗi ký tự gồm có 10 bít được truyền trong đó có bít đầu là bít Start, sau đó là 8 bít dữ liệu và cuối cùng là bít Stop.

BÝt SM2.

Bít SM2 là bít D5 của thanh ghi SCON. Bít này cho phép khả năng đa xử lý của 8051 và nó nằm ngoài phạm vi trình bày của chương này. Đối với các ứng dụng của chúng ta đặt SM2 = 0 vì ta không sử dụng 8051 trong môi trường đa xử lý.

BÝt REN

Đây là bít cho phép thu (Receive Enable), bít D4 của thanh ghi SCON. Bít REN cũng

được tham chiếu như là SCON.4 vì SCON là thanh ghi có thể đánh địa chỉ theo bít. Khi bít REN cao thì nó cho phép 8051 thu dữ liệu trên chân RxD của nó. Và kết quả là nếu ta muốn 8051 vừa truyền và nhận dữ liệu thì bít REN phải được đặt lên 1. Khi đặt REN thì bộ thu bị cấm. Việc đặt REN = 1 hay REN = 0 có thể đạt được bằng lệnh “SETB SCON.4” và “CLR SCON.4” tương ứng. Lưu ý rằng các lệnh này sử dụng đặc điểm đánh địa chỉ theo bít của thanh ghi SCON. Bít này có thể được dùng để khống chế mọi việc nhận dữ liệu nối tiếp và nó là bít cực kỳ quan trọng trong thanh ghi SCON.

Bít TB8 và RB8.

Bít TB8 là bít SCON.3 hay là bít D3 của thanh ghi SCON. Nó được dùng để cho chế

độ nối tiếp 2 và 3. Ta đặt TB8 vì nó không được sử dụng trong các ứng dụng của mình.

Bít RB8 (bít thu 8) là bít D2 của thanh ghi SCON. Trong chế độ nối tiếp 1 thì

bít này nhận một bản sao của bít Stop khi một dữ liệu 8 bít được nhận. Bít này cũng như bít TB8 rất hiếm khi được sử dụng. Trong các ứng dụng của mình ta đặt RB8 = 0

Các bít TI và RI.

Các bít ngắt truyền TI và ngắt thu RI là các bít D1 và D0 của thanh ghi SCON. Các bít này là cực kỳ quan trọng của thanh ghi SCON. Khi 8051 kết thúc truyền một ký tự 8 bít thì nó bật TI để báo rằng nó sẵn sàng truyền một byte khác. Bít TI được bật lên trước bít Stop. Còn khi 8051 nhận được dữ liệu nối tiếp qua chân RxD và nó tách các bít Start và Stop để lấy ra 8 bít dữ liệu để đặt vào SBUF, sau khi hoàn tất nó bật cờ RI để báo rằng nó

đã nhận xong một byte và cần phải lấy đi kẻo nó bị mất cờ RI được bật khi đang tách bít Stop. Trong các ví dụ dưới đây sẽ nói về vai trò của các bít TI và RI.

Một phần của tài liệu Bài giảng Vi xử lý 1 - ĐH Sư Phạm Kỹ Thuật Nam Định (Trang 168 - 174)

Tải bản đầy đủ (PDF)

(210 trang)