1. Trang chủ
  2. » Luận Văn - Báo Cáo

on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử

13 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 245 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

V PHAÀN D TRAÏM NOÁI TIEÁP (SERIAL PORT) Boä vi xöû lyù 8051 chöùa traïm noái tieáp coù nhieàu kieåu hoaït ñoäng vôùi khoaûng taàn soá roäng Chöùc naêng cuûa traïm noái tieáp laø thöïc hieän bieán ñoåi maõ song song thaønh noái tieáp cho taøi lieäu loái ra (truyeàn) vaø bieán ñoåi maõ noái tieáp thaønh song song cho taøi lieäu loái vaøo (nhaän) Phaàn cöùng truy caäp vaøo traïm noái tieáp qua caùc chaân TXD (quy ñònh cho traïm P3/ chaân P3 1) vaø RXD (/chaân P3 0) Traïm noái tieáp coù ñaëc ñieåm[.]

Trang 1

PHẦN D: TRẠM NỐI TIẾP (SERIAL PORT)

Bộ vi xử lý 8051 chứa trạm nối tiếp có nhiều kiểu hoạt động với khoảng tần số rộng Chức năng của trạm nối tiếp là thực hiện biến đổi mã song song thành nối tiếp cho tài liệu lối ra (truyền) và biến đổi mã nối tiếp thành song song cho tài liệu lối vào (nhận)

Phần cứng truy cập vào trạm nối tiếp qua các chân TXD (quy định cho trạm P3/ chân P3.1) và RXD (/chân P3.0)

Trạm nối tiếp có đặc điểm hoạt động hai chiều (truyền và nhận đồng thời), và có bộ đệm (Buffer) nhận tài liệu Ký tự nhận có thể tạm giữ trong bộ đệm để đọc vào CPU, khi trạm nối tiếp đang tiến hành nhận ký tự tiếp theo Như vậy thông tin không bị mất

Hai thanh ghi chức năng đặc biệt cung cấp phần mềm truy cập trạm nối tiếp là SBUF và SCON Bộ đệm cho trạm nối tiếp (SBUF) ở địa chỉ 99H thực tế là 2 bộ đệm Tài liệu được viết vào bộ đệm chỉ viết phục vụ truyền số liệu và bộ đệm chỉ đọc phục vụ nhận số liệu (xem hình D-1)

Hình D-1 Sơ đồ khối trạm nối tiếp

Thanh ghi điều khiển trạm nối tiếp (SCON) ở địa chỉ 98H là thanh ghi có thể địa chỉ theo bit, chứa các bit trạng thái và các bit điều khiển Các bit điều khiển xác lập kiểu hoạt động cho trạm nối tiếp còn các bit trạng thái chỉ thị kết thúc truyền hoặc nhận ký tự Các bit trạng thái được phần mềm kiểm tra hoặc sử dụng điều khiển interrupt

Tần số hoạt động của trạm nối tiếp, hay tốc độ baud (baud rate), có thể xác lập (khi chia

tần tín hiệu từ bộ dao động 8051) hoặc biến đổi Khi sử dụng tốc độ baud biến đổi, Timer 1 cung cấp tín hiệu nhịp tốc độ baud và cần được lập trình tương ứng Ở vi mạch 8032/8052, Timer 2 làm việc này

1 Thanh ghi điều khiển trạm nối tiếp SCON ( Serial Port Control Register)

Khi viết vào thanh ghi SCON ở địa chỉ 99H cho phép định kiểu làm việc cho trạm nối tiếp của 8051 (xem bảng D-1, D-2)

Trước khi sử dụng trạm nối tiếp, SCON được xác lập trạng thái ban đầu cho kiểu làm việc lựa chọn Ví dụ :

S B U F ( r e a d - o n l y )

S h i f t r e g i s te r

C L K D

B a u d r a t e c l o c k ( r e c e i v e )

( P 3 1 )T X D ( P 3 0 )R X D

( w r it e - o n l y )S B U F

B a u d r a t e c l o c k

( t r a n s m i t )

8 0 5 1 I n t e r n a l b u s

Trang 2

Lệnh trên sẽ xác lập trạng thái ban đầu cho trạm nối tiếp ở Mode 1 (SM0/SM1=0/1), cho phép nhận (REN = 1) và xác lập cờ interrupt truyền (TI = 1) để báo bộ truyền đã sẵn sàng hoạt động

2 Kiểu hoạt động

Bộ 8051 có 4 kiểu làm việc trạm nối tiếp, xác lập bằng cách viết 0 hoặc 1 vào bit SM0 và SM1 trong thanh ghi SCON Trong đó, 3 kiểu có khả năng truyền đồng bộ với mỗi ký tự nhận hoặc truyền được định khổ bằng start bit và stop bit Kiểu thứ 4, trạm nối tiếp hoạt động như một bộ ghi dịch đơn giản

Thanh ghi SCON (Serial Port Control) tổng quát Bảng D-1

HIỆU

BIT ADDRESS

MÔ TẢ

SCON.7 SM0 9FH Bit 0 chọn kiểu trạm nối tiếp (xem bảng D-2)

SCON.6 SM1 9EH Bit 1 chọn kiểu trạm nối tiếp (xem bảng D-2)

SCON.5 SM2 9DH Bit 2 chọn kiểu trạm nối tiếp Cho phép truyền tin

nhiều processor ở mode 2 & 3; RI sẽ không hoạt động nếu bit thứ 9 nhận được = 0

SCON.4 REN 9CH Cho phép nhận Cần được xác lập để nhận ký tự

SCON.3 TB8 9BH Truyền bit 8 Bit thứ 9 đã truyền trong mode 2 & 3 Xác

lập/xoá bằng phần mềm SCON.2 RB8 9AH Nhận bit 8 Bit thứ 9 đã nhận được

SCON.1 TI 99H Cờ interrupt truyền Xác lập ở cuối việc truyền ký tự;

xoá bằng phần mềm

SCON.0 RI 98H Cờ interrupt nhận Xác lập ở cuối việc nhận ký tự; xoá

bằng phần mềm

Chọn Kiểu trạm nối tiếp Bảng D-2

0 0 0 Shift Register Cố định (=1/12 tần số CPU)

0 1 1 8-bit UART Biến đổi (xác lập bằng timer)

1 0 2 9-bit UART Cố định (=1/12 hoặc 1/64 tần số CPU)

1 1 3 9-bit UART Biến đổi (xác lập bằng timer)

a) Thanh ghi dịch 8 -bit (Mode 0)

Mode 0 – kiểu ghi dịch 8-bit – được chọn khi viết 0 vào bit SM1 và SM0 của thanh ghi SCON Tài liệu nối tiếp đưa vào và lấy ra qua RXD, và TXD xuất ra nhịp dịch 8 bit được truyền hoặc nhận trước tiên với bit nhỏ nhất (LSB) Tốc độ baud được xác định ở 1/12 tần số dao động CPU Thuật ngữ “RXD” và “TXD” trong Mode 0 không đúng với nghĩa viết tắt mà chỉ có nghĩa là ký hiệu cho đường dây, vì đường RXD dùng cho cả tài liệu lối vào và lối

ra, còn TXD là đường cung cấp xung đồng hồ

Trang 3

Việc truyền tài liệu được khởi tạo bằng lệnh bất kỳ viết tài liệu vào SBUF Tài liệu được chuyển dịch ra trên đường RXD (P3.0) với xung nhịp gửi ra từ TXD (P3.1) Mỗi bit truyền được xác nhận trên chân RXD cho 1 chu trình máy Trong khoảng thời gian mỗi chu trình máy, tín hiệu đồng hồ xuống mức thấp ở S3P1 và lên cao trở lại ở S6P1 Giản đồ thời gian cho tài liệu ra trình bày trên hình D-2

Hình D-2 Giản đồ thời gian cổng nối tiếp truyền tài liệu ở Mode 0

Việc nhận tài liệu được khởi tạo khi bit cho phép nhận (REN) là 1 và bit interrupt nhận (RI) là 0 Quy tắc cơ bản là xác lập REN ở đầu chương trình để khởi tạo cổng nối tiếp, sau đó xoá RI để bắt đầu nhập tài liệu Khi RI được xoá, xung nhịp được viết ra đường TXD, bắt đầu chu trình máy tiếp theo, và tài liệu được bắt nhịp trên đường RXD Rõ ràng, đó là sơ đồ cung cấp tài liệu trên đường RXD đồng bộ với tín hiệu nhịp trên đường TXD Điểm bắt nhịp đồng bộ là mặt dương của TXD (hình D-3)

Hình D-3 Giản đồ thời gian cổng nối tiếp nhận tài liệu ở Mode 0

Một ứng dụng khả dĩ của bộ ghi dịch là mở rộng khả năng lối ra của 8051 Bộ ghi dịch ngoài có thể nối với đường RXD và TXD của 8051, thực hiện biến đổi mã nối tiếp thành

O s c

A L E

S h i f t

C L O C K

D a ta o u t

1 C h u t r ìn h m a ùy

V a l id d a t a b it

( T X D )

A L E

D a t a o u t

( R X D )

S h i f t

C L O C K

W R I T E to

S B U F

M ơ û r o än g q u a n s a ùt

1 C h u tr ì n h m a ùy

D 1 ( T X D )

D a t a o u t

S h i f t

C L O C K

D 2

D 0

A L E

1 C h u t r ì n h m a ùy

Trang 4

song song để tạo thêm 8-bit lối ra (hình D-4) Bộ ghi dịch thứ 2 có thể mắc thêm vào hệ thống để tạo các lối ra song song bổ sung,v.v…

Hình D-4 Mở rộng khả năng lối ra của 8051 khi sử dụng cổng nối tiếp ở Mode 0

b) UART 8-bit với tốc độ baud biến đổi (Mode 1)

Ở Mode 1, cổng nối tiếp của 8051 hoạt động như một UART 8-bit với tốc độ baud biến đổi Bộ truyền nhận không đồng bộ vạn năng UART (Universal Asynchronous Receiver/ Transmitter) là thiết bị thực hiện nhận và truyền tài liệu nối tiếp với mỗi ký tự tài liệu có start bit (mức thấp) đi trước và stop bit theo sau (mức cao) Bit chẵn lẻ đôi khi được lồng vào giữa bit tài liệu cuối và stop bit UART thực hiện biến đổi song song – nối tiếp cho tài liệu lối ra và biến đổi nối tiếp - song song cho tài liệu nhận

Ở mode 1, 10 bit được truyền trên TXD hoặc nhận trên RXD bao gồm start bit (luôn là 0), 8 bit tài liệu (LSB đi đầu tiên) và stop bit (luôn là 1) Để nhận tài liệu, stop bit đi vào RB8 của SCON Trong 8051, tốc độ baud được xác lập bằng vận tốc tràn Timer 1 còn trong 8052- bằng Timer 1 hoặc Timer 2, hoặc liên hợp 2 Timer này (1 để truyền và 1 để nhận) Lấy nhịp và đồng bộ bộ ghi dịch cổng nối tiếp ở kiểu 1, 2 và 3 được sắp đặt bằng bộ đếm 4 bit (chia 16), có lối ra là nhịp tốc độ baud (xem hình D-5) Lối vào bộ đếm này được chọn bằng phần mềm

Hình D-5 Tạo nhịp tín hiệu truyền

Việc truyền tài liệu được khởi tạo bằng lệnh viết tài liệu vào SBUF, song chờ cho đến khi vòng quay tiếp theo của bộ đếm chia 16 cung cấp tốc độ baud trạm nối tiếp Tài liệu được chuyển dịch ra trên đường TXD bắt đầu với start bit, tiếp theo là 8 bit tài liệu, cuối cùng là

T X D ( P 3 1 )

8 0 5 1

R X D ( P 3 0 )

C L O C K

D a t a S h i f t r e g is t e r

8 E x tr a O u t p u t s

S e r i a l p o r t s h if t r e g i s t e rB a u d r a t e c l o c k

: 1 2

1 6 x b a u d r a t e

Trang 5

stop bit Khoảng thời gian cho mỗi bit là tương ứng với tốc độ baud như lập trình trong timer Cờ interrupt truyền (TI) được xác lập ngay khi stop bit xuất hiện trên TXD (xem hình D-6)

Hình D-6 Xác lập cờ TI trạm nối tiếp

Việc nhận tài liệu được khởi tạo bằng sự chuyển mức 1-> 0 trên RXD Bộ đếm chia 16 ngay lập tức được xoá để sắp xếp số đếm với dòng bit tới (bit tiếp sau tới vào vòng quay sau của bộ đếm chia 16) Dòng bit tới được lấy mẫu trong khoảng giữa của 16 số đếm Bộ thu nhận cho phép xác định “start bit giả” Sau khi nhận chuyển mức 1-> 0 đầu tiên, cần phải có 8 số đếm trạng thái 0 Nếu nó không xuất hiện, được xem là bộ thu được điều khiển bởi tạp nhiễu chứ không phải bởi ký tự xác định Bộ thu được xoá và trở về trạng thái chạy không, chờ chuyển mức 1-> 0 tiếp theo

Giả thiết start bit có giá trị được thu, việc nhận ký tự được tiếp tục Start bit được bỏ qua và

8 bit tài liệu được đếm vào bộ ghi dịch trạm nối tiếp Khi cả 8 bit đã được đếm, thực hiện tiếp sau :

1 Bit thứ 9 (stop bit) được đếm vào RD8 trong SCON

2 SBUF được nạp 8 bit tài liệu

3 Cờ interrupt nhận (RI) được xác lập

Các điều trên chỉ xảy ra khi tồn tại các điều kiện sau :

1 RI = 0 và

2 SM2 = 1 và stop bit nhận được = 1, hoặc SM2 = 0

Đòi hỏi RI = 0 đảm bảo là phần mềm đã đọc ký tự trước (và xoá RI) Điều kiện thứ 2 chỉ áp dụng trong kiểu truyền tin đa xử lý (multiprocessor) Điều đó ngụ ý là “ không xác lập RI trong kiểu truyền tin đa xử lý khi bit tài liệu thứ 9 là 0”

c) UART 9-bit với tốc độ baud xác định (Mode 2)

Khi SM1 = 1 và SM0 = 0 trạm nối tiếp hoạt động ở Mode 2 như UART 9-bit với tốc độ baud cố định 11 bit được truyền hoặc nhận gồm start bit, 8 bit tài liệu, bit tài liệu khả trình thứ 9 và stop bit Trong quá trình truyền, bit thứ 9 được đặt vào TB8 của SCON (có thể là bit chẵn lẻ) Trong quá trình nhận, bit thứ 9 nhận được được đặt vào RB8 Tốc độ baud ở Mode 2 là 1/32 hoặc 1/64 tần số dao động cho CPU

d) UART 9-bit với tốc độ baud biến đổi (Mode 3)

Mode 3 là kiểu hoạt động UART 9-bit giống như Mode 2, ngoại trừ tốc độ baud là biến đổi bằng lập trình trên timer Thực tế, Mode 1, 2 và 3 rất giống nhau Sự khác nhau chỉ ở tốc độ baud

3 Xác lập trạng thái ban đầu và truy cập các bộ ghi trạm nối tiếp

a) Bit cho phép nhận - REN (Receiver Enable Bit)

D 2

D 0

( S C O N 1 )

D 3

R X D

T I

S t a r t b it

1 / b a u d r a t e

T r a n s m i t i n te r r u p t ( r e a d y f o r m o r e d a t a )

Trang 6

Bit cho phép nhận (REN) trong thanh ghi SCON phải được xác lập bằng phần mềm để cho phép nhận ký tự Điều này được thực hiện khi bắt đầu chương trình xác lập trạng thái ban đầu cho trạm nối tiếp, timer, v.v… Có thể làm theo 2 cách :

- Sử dụng lệnh :

SETB REN

- Hoặc :

MOV SCON,#xxx1xxxxB là lệnh xác lập REN và xác lập hoặc xoá các bit khác của SCON theo yêu cầu (x=0 hoặc 1)

b) Bit tài liệu thứ 9

Bit tài liệu truyền thứ 9 ở Mode 2 và 3 cần được nạp vào TB8 bằng phần mềm Bit tài liệu nhận thứ 9 được đặt vào RB8 Phần mềm có thể hoặc không đòi hỏi bit tài liệu thứ 9, tuỳ thuộc vào đặc tính của thiết bị nối tiếp ở đầu kia đường truyền (bit tài liệu thứ 9 cũng đóng vai trò quan trọng trong truyền tin đa xử lý)

c) Bổ sung bit chẵn lẻ

Bit tài liệu thứ 9 thường dùng để bổ sung bit chẵn lẻ vào ký tự Trong phần các thanh ghi của 8051, bit P của thanh ghi lời trạng thái chương trình (PSW) được xác lập hoặc xoá ở mỗi chu trình máy để thiết lập chẵn lẻ chẵn với 8 bit trong accumulator Ví dụ, nếu truyền tin đòi hỏi 8 bit tài liệu cộng với bit chẵn lẻ chẵn, các lệnh sau có thể sử dụng để truyền 8 bit vào accumulator với bit chẵn lẻ chẵn bổ sung vào vị trí bit thứ 9 :

MOV C,P ; PUT EVEN PARITY BIT IN IN TB8 MOV TB8,C ; THIS BECOMES THE 9TH DATA BIT MOV SBUF,A ; MOVE 8 BITS FROM ACC TO SUBFN Nếu đòi hỏi bit chẵn lẻ lẻ, các lệnh có thể thay đổi như sau:

MOV C,P ; PUT EVEN PARITY BIT IN C FLAG CPL C ; CONVERT TO ODD PARITY

MOV TB8,C MOV SBUF,A Tất nhiên, việc sử dụng chẵn lẻ không chỉ giới hạn cho Mode 2 & 3 Ở Mode 1, tài liệu truyền có thể gồm 7 bit tài liệu và 1 bit chẵn lẻ Để truyền mã ASCII 7 bit với bit chẵn lẻ ở bit 8, có thể sử dụng các lệnh sau:

MOV ACC.7 ; ENSURE MSB IS CLEAR

; EVEN PARITY IS IN P MOV C,P ; COPY TO C

MOV ACC.7,C ; PUT EVEN PARITY INTO MSB MOV SBUF,A ; SEND CHARACTER

; 7 DATA BITS + EVEN PARITY

d) Cờ interrupt

Cờ Interrupt truyền (TI) và cờ interrupt nhận (RI) trong thanh ghi SCON đóng vai trò quan trọng trong truyền tin nối tiếp của 8051 Cả 2 bit được xác lập bằng phần cứng, nhưng được xoá bằng phần mềm

Điển hình, RI được xác lập ở cuối việc nhận ký tự và chỉ thị “bộ đệm nhận đầy” Điều kiện này được kiểm tra bằng phần mềm hoặc được lập trình cho interrupt Nếu phần mềm muốn đưa ký tự vào từ thiết bị đầu cuối trạm nối tiếp (có thể là video display terminal), nó cần

Trang 7

phải đợi cho đến khi RI được xác lập, sau đó xoá RI và đọc ký tự từ SBUF Thực hiện như sau :

CLR RI ; CLEAR RI MOV A,SBUF ; READ CHARACTER

TI được xác lập ở cuối việc truyền ký tự và chỉ thị “bộ đệm truyền trống rỗng” Nếu phần mềm muốn gửi ký tự ra thiết bị đầu cuối trạm nối tiếp, nó đầu tiên cần phải kiểm tra là trạm nối tiếp đã sẵn sàng Nói khác đi, nếu ký tự trước đã gửi đi, đợi cho việc truyền kết thúc trước khi gửi ký tự mới Thực hiện các lệnh sau để truyền ký tự trong accumulator:

CLR TI ; CLEAR TI MOV SBUF,A ; SEND CHARACTER Chuỗi các lệnh nhận và truyền nêu trên thường là một phần của chương trình nhập xuất chuẩn các ký tự

4 Truyền thông tin đa vi xử lý (Multiprocessor Communications)ù

Kiểu 2 & 3 có điểm đặc biệt cho truyền tin đa xử lý Ở kiểu này, 9 bit tài liệu được nhận và bit thứ 9 đi vào RB8 Trạm có thể được lập trình sao cho khi nhận được stop bit, interrupt trạm nối tiếp chỉ tác động nếu RB8 = 1 Điều này có thể thực hiện bằng xác lập bit SM2 trong SCON Aùp dụng tính chất này, hệ thống mạng 8051 kiểu chủ / phụ thuộc (Master/Slave) được giới thiệu trên hình D-7

Hình D-7 Truyền tin đa xử lý

Khi bộ xử lý chủ muốn truyền khối tài liệu tới một trong các bộ xử lý phụ thuộc, trước hết gửi byte địa chỉ để chỉ ra đích đến Byte địa chỉ có bit thứ 9 là 1, khác với byte tài liệu có bit thứ 9 là 0 Byte địa chỉ, do đó, ngắt tất cả các bộ xử lý phụ thuộc, sao cho mỗi bộ sẽ kiểm tra xem có đúng địa chỉ của nó Bộ xử lý phụ thuộc được định địa chỉ sẽ xoá SM2 của nó và chuẩn bị nhận byte tài liệu tiếp sau Các bộ xử lý không được địa chỉ sẽ giữ SM2 ở 1 và thực hiện công việc của mình và không nhận tài liệu chuyển đến Chúng sẽ lại được ngắt khi có byte địa chỉ từ máy chủ chuyển đến

5 Tốc độ baud trạm nối tiếp

M a s t e r 8 0 5 1

T X D

8 0 5 1 S l a v e # 1

8 0 5 1 S l a v e # 2

Trang 8

Như đã thấy trong bảng D-2, tốc độ baud cố định trong Mode 0 và 2 Ở Mode 0, tốc độ baud bằng 1/12 tần số đồng hồ CPU Khi dùng thạch anh 12MHz, tốc độ baud ở Mode 0 bằng 1MHz

Ở Mode 2, giá trị tốc độ baud mặc định sau khi xoá hệ thống là 1/64 tần số đồng hồ CPU Tốc độ baud cũng chịu tác động của bit 7 (SMOD) trong thanh ghi điều khiển nguồn PCON Xác lập SMOD bit sẽ làm tăng gấp đôi tốc độ baud trong Mode 1, 2 và 3 Ở Mode 2, khi SMOD = 0, tốc độ baud =1/64 tần số đồng hồ, còn khi SMOD = 1, tốc độ baud =1/32 tần số đồng hồ (xem hình D-8)

Hình D-8 Nguồn xung đồng hồ cho trạm nối tiếp

Bởi vì PCON không địa chỉ theo bit, xác lập SMOD mà không thay đổi các bit còn lại của PCON đòi hỏi thuật toán “đọc- thay đổi-viết lại”, chẳng hạn :

MOV A,PCON ; GET CURENT VALUE OF PCON SETB ACC,7 ; SET BIT 7 (SMOD)

MOV PCON,A ; WRITE VALUE BACK TO PCON Tốc độ baud trong Mode 1 và 3 được xác định bằng tốc độ tràn của Timer 1 Bởi vì timer hoạt động ở tần số tương đối cao, sự tràn được chia 32 (16 nếu SMOD-1) trước khi cung cấp nhịp tốc độ baud cho trạm nối tiếp Ở 8052, tốc độ baud trong Mode 1 và 3 được xác định bởi tốc độ tràn của Timer 1 hoặc Timer 2, hoặc cả hai

Sử dụng Timer 1 như đồng hồ tốc độ baud

Giả sử ta sử dụng Timer của 8051 ở Mode 2 (kiểu nạp lại tự động 8-bit) và đặt giá trị nạp lại trong TH1 sao cho có tốc độ tràn (tốc độ baud) chính xác TMOD được xác lập ban đầu như sau :

MOV TMOD.#0010xxxxB

Ở đây x = 0 hoặc 1, là giá trị cần xác lập cho Timer 0

Tốc độ baud rất thấp có thể thực hiện bằng việc sử dụng kiểu 16-bit, Mode 2 cho timer với TMOD = 0001xxxxB Có sự lệch chút ít về thời gian do chạy phần mềm, bởi vì TH1/TL1 cần phải xác lập lại sau mỗi lần tràn Điều này có thể thực hiện trong chương trình phục vụ interrupt Lựa chọn khác là cho Timer 1 đếm xung ngoài từ lối T1(P3.5)

O n - c h ip

B a u d r a t e c l o c k

O n - c h i p

o s c i l l a t o r

: 6 4 : 6 4

S M O D = 0

S M O D = 1

: 1 6

T im e r 1

o v e r f l o w

: 3 2

S M O D = 1

S M O D = 0

B a u d r a t e c l o c k

a ) M o d e 0

a ) M o d e 2

a ) M o d e 1 & 3

Trang 9

Tốc độ baud là tốc độ tràn Timer 1 chia cho 32 (hoặc chia 16, nếu SMOD=1).

Công thức để xác định tốc độ baud trong Mode 1 và 3 là :

Tốc độ baud = Tốc độ tràn Timer 1 : 32

Ví dụ, để có tốc độ baud là 1200 cần tính tốc độ tràn Timer 1 như sau :

1200 = Tốc độ tràn Timer 1 : 32

Tốc độ tràn Timer 1 = 38.4kHz

Nếu dao động thạch anh là 12MHz, timer được đếm ở tốc độ 1MHz hoặc 1000kHz Bởi vì timer cần có tốc độ tràn ở 38.4kHz, nên mỗi lần tràn đòi hỏi 1000:38.4 = 26.04 xung (đếm vòng 26) Bởi vì timer đếm lên và tràn khi có chuyển mức FFH-> 00H nên số nạp vào TH1 phải là –26 Cách dễ nhất để nạp lại vào TH1 là :

MOV TH1.#-26 Assembler sẽ thực hiện các biến đổi cần thiết Trong trường hợp này –26 được biến đổi thành 0E6H; do đó lệnh trên được chuyển thành :

MOV TH1.#0E6H D0 sử dụng vòng quay, giá trị tốc độ baud có sai lệch nhỏ Tổng quát, sai số 5% là chấp nhận được trong truyền tin không đồng bộ (với start/stop) Tốc độ baud chính xác có thể nhận khi dùng crystal 11.059MHz Trong bảng D-3 cho các giá trị nạp lại cho TH1 với các tốc độ baud thông dụng nhất, khi tần số dao động là 12MHz và 11.059MHz

Tốc độ baud Bảng D-3 Tốc độ baud Crystal freq SMOD Giá trị nạp lại cho

TH1

Tốc độ Baud thực

Sai số

Ví dụ 1 : Xác lập trạng thái ban đầu trạm nối tiếp

Viết chuỗi lệnh để xác lập trạng thái ban đầu cho trạm nối tiếp để làm việc kiểu UART 8-bit ở 2400 baud Sử dụng Timer 1 để cung cấp xung tốc độ baud

Đối với ví dụ này, 4 thanh ghi cần được xáclập ban đầu là SMOD, TMOD, TCON và TH1 Các giá trị đòi hỏi như sau :

Xác lập SM0 = 0 và SM1 = 1 đưa trạm nối tiếp vào kiểu UART 8-bit

Đặt REN = 1 cho phép trạm nối tiếp nhận ký tự

Xác lập TI = 1 cho phép truyền ký tự đầu tiên nhờ chỉ thị tầng đệm truyền đang trống rỗng

Trang 10

TMOD GATE C/T M1 M0 GATE C/T M1 M0

Xác lập M1 =1 và M0 = 0 đưa Timer 1 vào kiểu nạp lại tự động 8-bit

Xác lập TR1=1 nối mạch cho Timer 1 Các bit còn lại là 0 cho ví dụ này,

Giá trị TH1 đòi hỏi để tràn ở tốc độ 2400 x 32 = 76.8kHz

Giả sử đồng hồ CPU là 12MHz, Timer 1 đếm ở tần số 1000kHz, số đếm cho mỗi lần tràn là

1000 : 76.8 = 13.02 (đếm vòng D-1) Giá trị nạp lại là –13 hoặc 0F3H

Các lệnh được viết như sau :

8100 759852 6 INIT: MOV SCON,#52H ;serial port, mode 1

8103 758920 7 MOV TMOD,#20 ;timer 1, mode 2

8106 758DF3 8 MOV TH1,#-13 ;reload count for 2400 baud

8109 D28E 9 SETB TR1 ;start timer 1

10 END

Ví dụ 2 : Chương trình con xuất ký tự

Viết chương trình con có tên là OUTCHR để truyền mã ASCII 7-bit chứa trong accumulator

ra trạm nối tiếp, với bit chẵn lẻ lẻ là bit thứ 8 Từ chương trình con quay trở về với accumulator giữ nguyên nội dung, ví dụ, chứa giá trị trước khi gọi chương trình con

Ví dụ này là chương trình con thông thường nhất cho hệ vi xử lý khi nối với trạm RS-232: xuất ký tự (OUTCHR) và nhập ký tự (INCHAR)

8100 A2D0 6 OUTCHR: MOV C,P ;put parity bit in C flag

8102 B3 7 CPL C ;Change to odd parity

8103 92E7 8 MOV ACC.7,C ;add to character code

8105 3099FD 9 AGAIN: JNB TI,AGAIN ;Tx empty? no:check again

8108 C299 10 CLR TI ;yes: clear flag and

810A F599 11 MOV SBUF,A ; send character 810C C2E7 12 CLR ACC.7 ;strip off parity bit and 810E 22 13 RET ;return

14 END

3 lệnh đầu đặt chẵn lẻ lẻ vào bit 7 của accumulator Bởi vì bit P trong PSW thiết lập chẵn lẻ chẵn với accumulator, nó được tạo mã bổ sung trước khi đặt vào ACC.7

Lệnh JNB tạo “vòng đợi “, lặp lại kiểm tra cho đến khi xác lập cờ interrupt truyền TI (bởi

vì khi TI = 1 mới kết thúc truyền ký tự trước) Cờ TI được xoá và ký tự trong accumulator được xuất ra tầng đệm của trạm nối tiếp SBUF Việc truyền bắt đầu ở vòng tiếp theo của

Ngày đăng: 29/05/2022, 18:32

HÌNH ẢNH LIÊN QUAN

Hình D-1. Sơ đồ khối trạm nối tiếp - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
nh D-1. Sơ đồ khối trạm nối tiếp (Trang 1)
SCON.7 SM0 9FH Bit chọn kiểu trạm nối tiếp (xem bảng D-2) - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
7 SM0 9FH Bit chọn kiểu trạm nối tiếp (xem bảng D-2) (Trang 2)
Hình D-2. Giản đồ thời gian cổng nối tiếp truyền tài liệu ở Mode 0. - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
nh D-2. Giản đồ thời gian cổng nối tiếp truyền tài liệu ở Mode 0 (Trang 3)
Hình D-4. Mở rộng khả năng lối ra của 8051 khi sử dụng cổng nối tiếp ở Mode 0. - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
nh D-4. Mở rộng khả năng lối ra của 8051 khi sử dụng cổng nối tiếp ở Mode 0 (Trang 4)
Hình D-3. Giản đồ thời gian cổng nối tiếp nhận tài liệu ở Mode 0. Một ứng dụng khả dĩ của bộ ghi dịch là mở rộng khả năng lối ra của 8051 - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
nh D-3. Giản đồ thời gian cổng nối tiếp nhận tài liệu ở Mode 0. Một ứng dụng khả dĩ của bộ ghi dịch là mở rộng khả năng lối ra của 8051 (Trang 4)
độ baud (xem hình D-5). Lối vào bộ đếm này được chọn bằng phần mềm. - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
baud (xem hình D-5). Lối vào bộ đếm này được chọn bằng phần mềm (Trang 5)
Hình D-7. Truyền tin đa xử lý - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
nh D-7. Truyền tin đa xử lý (Trang 8)
Như đã thấy trong bảng D-2, tốc độ baud cố định trong Mode và 2. Ở Mode 0, tốc độ baud bằng 1/12 tần số đồng hồ CPU - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
h ư đã thấy trong bảng D-2, tốc độ baud cố định trong Mode và 2. Ở Mode 0, tốc độ baud bằng 1/12 tần số đồng hồ CPU (Trang 8)
Bảng D-3 Tốc độ - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
ng D-3 Tốc độ (Trang 10)
Các vấn đề nêu sau đây là chương trình phần mềm điển hình để giao diện terminal (hoặc thiết bị khác) với bộ vi xử lý - on ap - Công nghệ thông tin - Trần Tuấn Kiệt - Thư viện Bài giảng điện tử
c vấn đề nêu sau đây là chương trình phần mềm điển hình để giao diện terminal (hoặc thiết bị khác) với bộ vi xử lý (Trang 12)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w