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

giao tiếp pc và vi xử lý trong hệ thống scada

80 476 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Giao tiếp PC Và Vi Xử Lý Trong Hệ Thống SCADA
Trường học Trường Đại học Công Nghệ Thông Tin - Đại Học Quốc Gia Hà Nội
Chuyên ngành Hệ thống điều khiển tự động / SCADA
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 80
Dung lượng 875 KB

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

Nội dung

- Lớp quản lý truyền tin: lớp này có nhiệm vụ quản lý dữ liệughi nhận và truy xuất dữ liệu từ các vùng địa chỉ của các tín hiệu vào ratheo định nghĩa của tập lệnh, phần giới thiệu tập lệ

Trang 1

MỤC LỤC:

Giới thiệu chung 01

CHƯƠNG 1: GIAO THỨC TRUYỀN THÔNG 03

I Giới thiệu 03

II Protocol 05

1 Khái niệm 05

2 Xây dựng Protocol 06

a) Cấu trúc frame dữ liệu 06

b) Xây dựng Protocol 08

III Truyền thông nối tiếp 09

1 Thanh ghi diều khiển đường truyền 10

2 Thanh ghi điều khiển MODEM 11

3 Thanh ghi trạng thái đường dây 12

4 Chuẩn giao tiếp RS-232 13

5 Giới thiệu IC Max_232 15

CHƯƠNG 2: CƠ LƯỢC AT89C51 17

I Khái quát về họ IC MCS-51 17

II Giới thiệu AT89C52 18

1 Những đặc trưng cơ bản 20

2 Cấu hình chân 20

III Tổ chức bộ nhớ 25

1 RAM đa dụng 25

2 RAM địa chỉ hoá từng bit 27

3 Các bank thanh ghi 27

IV Các thanh ghi chức năng đặc biệt 29

1 Từ trạng thái chương trình 30

2 Thanh ghi B 32

3 Con trỏ ngăn xếp 32

4 Con trỏ dữ liệu 33

5 Các thanh ghi port xuất nhập 33

6 Các thanh ghi timer 34

7 Các thanh ghi port nối tiếp 35

8 Các thanh ghi ngắt 36

9 Thanh ghi điều khiển công suất 36

V Bảo vệ bộ nhớ 36

Trang 2

VI Hoạt động của port nối tiếp 37

1 Giới thiệu 37

2 Thanh ghi điều khiển port nối tiếp 38

3 Các chế độ hoạt động 40

4 Khởi động và truy xuất các thanh ghi cổng nối tiếp 44

5 Tốc độ baud port nối tiếp 47

CHƯƠNG 3: RTX51 TINY 50

Giới thiệu chung 50

1 Giới thiệu phần mềm KEIl 50

2 Chương trình tuần hoàn thời gian biểu của RTX51 51

3 Các yêu cầu và định nghĩa 55

4 Các hàm thư viện của RTX51 56

CHƯƠNG 4: BOARD DEMO-KIT 59

I Khối hiển thị 60

II Khối giao tiếp A/D - D/A 62

III Khối RS-232 68

IV Khối output (rơle) 70

V Khối input 71

CHƯƠNG 5: Phần 1: TẬP LỆNH 72

I Giới thiệu tập lệnh 72

II Nội dung tập lệnh 73

Phần 2: MÔ TẢ CHƯƠNG TRÌNH 76

Chương trình nhận chuỗi 78

Chương trình kiểmtra 80

Chương trình xử lý tập lệnh 81

Chương trình đóng gói dữ liệu 83

Chương trình Demo-Kit 85

Phần 3: Chương trình 88

Báo cáo kết quả 146

Trang 3

Giới thiệu chung :

Như chúng ta đã biết trong điều kiện khoa học kỹ thuật và kinh tế phát triển như hiện nay thì qui trình tự động hóa trong công nghiệp và sản xuất hầu như không thể thiếu được Nó đóng một vai tró hết sức quan trọng trong việc giúp tăng năng suất , tăng độ chính xác và do đó tăng hiệu quả sản xuất Trong đó một vai trò không thể không nhắc đến của qui trình tự động hóa là thu thập dữ liệu và điều khiển từ xa

Để kiểm tra tình hình sản xuất cũng như trạng thái hoạt động của từng phân xưởng ta không thể cứ cho người đến tận nơi , kiểm soát từng hoạt động và quay về báo cáo nếu có sự cố xảy ra mà nhất thiết phải có một hệ thống thu thập dữ liệu từ xa Khi đó, người kỹ sư vận hành chỉ cần ngồi tại bàn điều khiển và quan sát những trạng thái được cập nhật về liên tục để có thể xử lý kịp thời những tình huống xảy ra thông qua quá trình liên kết dữ liệu, mà không phải mất thời gian đi đến nơi có xảy ra sự cố

Không dừng ở đó , việc thu thập dữ liệu và điều khiển từ xa còn là một nhân tố quản lý, một yếu tố tất yếu cho sự phát triển của tất cả các ngành nghề , các lĩnh vực khác như giao thông vận tải ( theo dõi các trạm giao thông đường bộ, hàng hải , hàng không … ) , điện lực , y tế

Biết được ý nghĩa và tầm quan trọng của nó nên chúng em quyết định nghiên cứu và hy vọng có cơ hội mở rộng đề tài này

Tổng quan về công việc thực hiện như sau :

- Xây dựng một tập lệnh trong giao tiếp giữa Máy tính và controller.

micro Xây dựng một giao thức truyền nhận thông tin (Protocol).

- Sử dụng tập lệnh theo yêu cầu mong muốn

Trang 4

- Xây dựng một chương trình demo như một ứng dụng cụ thể của đề tài

Trang 5

Tập lệnh Frame dữ liệu RS-232

Chương trình người sử dụng

Xử lý giao tiếp thiết bị

Trang 6

Demo-Kit thực hiện trong phần cuối chương trình ) không phải là trọng tâm

mà chỉ là một ứng dụng cụ thể của đề tài Vì thế, nó chỉ xây dựng các dạngsóng vào ra một cách đơn giản, mang ý nghĩa mô phỏng cho những gì thựchiện được trong việc xây dựng chương trình

Kết quả mong muốn của luận văn là xây dựng được một môi trườngthuận lợi cho quá trình trao đổi thông tin giữa hai đối tượng sử dụng Haynói khác hơn, đây là một tầng đệm về ngôn ngữ giao tiếp, một quá trìnhtrung gian giúp cho việc liên kết dữ liệu được diễn ra một cách trôi chảytheo mong muốn của người sử dụng Các lớp cơ bản được xây dựng trong hệthống này là: lớp vật lý, lớp liên kết dữ liệu (datalink ), lớp quản lý truyền tin

- Lớp liên kết dữ liệu: lớp này quan tâm đến các dạng truyền dữliệu (đồng bộ hay bất đồng bộ), tốc độ sử dụng, kiểm tra và sửa lỗi, chế độphát lại (echo)… đây là phần trọng tâm của một chương trình liên kết dữliệu, xây dựng Protocol cho phần này là thiết lập các thủ tục liên kết và truyxuất dữ liệu

- Lớp quản lý truyền tin: lớp này có nhiệm vụ quản lý dữ liệu(ghi nhận và truy xuất dữ liệu từ các vùng địa chỉ của các tín hiệu vào ratheo định nghĩa của tập lệnh), phần giới thiệu tập lệnh được thực hiện trongchương 5

- Lớp dữ liệu: lớp này đảm nhận vai trò ghi nhận các giá trị dữliệu tại đầu mỗi user, bao gồm các dạng tín hiệu điều khiển như dạng xung,dạng mức và tín hiệu dạng A/D

Vấn đề cần quan tâm chính của chúng ta là xây dựng một chuẩn cho tầngliên kết dữ liệu (các thủ tục protocol)

1 Khái niệm:

Protocol cho tầng liên kết dữ liệu là một phương thức hay thủ tục truyềnthông được đặt ra mà một qui trình truyền nhận thông tin phải tuân theo Nó

Trang 7

bao gồm tập hợp đồng nhất các qui tắc điều hành nhằm đảm bảo sự chínhxác của một hệ thống hoặc mạng trong quá trình trao đổi thông tin

Trước khi tìm hiểu về protocol của tầng liên kết dữ liệu một cách chi tiết,chúng ta xem qua một số kỹ thuật sử dụng để thực thi hoặc mô tả mộtprotocol Theo lý thuyết, kiểm tra giá trị của một quá trình hoạt động nhằmchắc rằng trong quá trình hoạt động của hệ thống sẽ không có một điều kiệnkhông mong muốn nào hoặc các trạng thái bất thường xảy ra khi protocolhoạt động “break down” (ví dụ như khi rơi vào một vòng lặp vô tận hoặcgặp phải một trường hợp mà tất cả các hoạt động đều bị dừng và hệ thống bịkhóa “locks up” )

Với mục đích minh họa những kỹ thuật kiểm tra và mô tả khác nhau này,chúng ta xét một tầng liên kết dữ liệu đơn giản bán song công: stop–and–wait và tự động lặp lại yêu cầu như một ví dụ.Về cơ bản protocol này quản

lý hoạt động của hai trạm ( được xem là đồng nhất ) tại mỗi đầu của một liênkết dữ liệu Protocol này bao gồm một trạm ( đầu “1” ) gởi một frame dữliệu mang một dãy số đến một trạm khác ( đầu “2” ) Frame dữ liệu này sẽchứa thêm vào một gói thông tin khác của dữ liệu thực tại Kết thúc việctruyền có một vùng đệm nhận, nơi mà các gói dữ liệu này được chứa từcomputer chủ cục bộ hoặc cuối cùng là lưu trữ theo ưu tiên trong một frame

dữ liệu và bắt đầu truyền qua datalink Kể cả sau khi truyền dữ liệu trongvùng đệm vào “1” , các dữ liệu giống nhau cũng được giữ trong vùng đệmcho đến khi có thông báo đã nhận được từ một đầu khác ( đầu “2” ) màkhung dữ liệu chứa gói dữ liệu này đã nhận được thành công

Điều kiện sau cùng (nhận thành công 1 frame dữ liệu) được cho biết bởiđầu trạm 2,đầu này gởi frame dãy số của một frame hợp lệ được nhận saucùng trở về từ trạm 1 như một phần của frame dữ liệu kế bắt đầu gởi từ “2”sang “1”

Ví dụ : Nếu đầu 1 vừa gởi một frame đến đầu 2 nó sẽ không được phépgởi frame kế ( chứa một gói dữ liệu mới ) cho đến khi nó nhận được mộtframe từ đầu 2 mang theo thông tin trả lời đã nhận tốt Nếu đầu 1 khôngnhận được thông báo này trở về từ đầu 2 trong vòng một khoảng thời giannghỉ (timeout) được định trước , nó sẽ truyền lại frame gởi đến đầu 2 và hyvọng trong thời gian này nó nhận được thông báo đã nhận đúng từ đầu 2 Vànếu không thì sau vài lần lặp lại (được định trước ) mà đầu “1” vẫn khôngnhận được thông báo nhận đúng từ đầu “2” nó xem như đường truyền bị lỗi

và thông báo ra ngoài

2 Xây dựng Protocol:

Trang 8

Xây dựng một protocol cho quá trình trao đổi dữ liệu trong trường hợpmạch vi xử lý đóng vai trò slave và máy tính (PC) đóng vai trò master trongquá trình truyền nhận thông tin.

a) Cấu trúc frame dữ liệu:

Trong chế độ hoạt động này khối vi xử lý không có yêu cầu gởi cho PC

mà chỉ trả lời kết quả theo yêu cầu nhận được từ PC tuân theo qui tắc của tậplệnh được xây dựng trong luận văn này Một Protocol được đặt ra cho liênkết dữ liệu với một frame truyền được chứa các byte qui định như sau :

Header Mã ID Control fiel Length Các byte DATABốn byte đầu của frame truyền được gọi chung là các byte control fielsbao gồm :

- Một byte đầu tiên là byte header : là ký tự qui định nhằm đánh dấucho đầu mỗi frame truyền

- Một byte mã ID là mã số thứ tự của frame truyền mỗi khi có một yêucầu mới cho vi xử lý (mã ID được đánh số liên tục từ 0-99 và trở về 0) Mã

ID này sẽ mang một ý nghĩa quan trọng cho việc mở rộng đề tài luận văn saunày (kết nối nhiều frame truyền liên tiếp)

- Một byte control fiel : đây là byte chức năng để kiểm tra thông tincho mỗi frame truyền Byte control fiel được định nghĩa như sau :

+ 5bit đầu có giá trị tùy định (có thể được sử dụng khi mở rộng đề tàinày nhằm dùng vào việc tăng biến điều khiển )

+ bit b0 : kiểm tra nội dung frame truyền

b0=0 : frame truyền có dữ liệu kèm theo (số byte data >0 )

b0=1 : frame truyền không có dữ liệu Trường hợp này xảy rakhiframe được gởi nhằm mục đích nhắc lại nội dung frame gởi vừa rồi

+ bit b1 : kiểm tra lần gởi của một yêu cầu từ PC

b1=0 : frame được gởi lần đầu (gởi 1 yêu cầu mới cho vi xử lý)

b1=1 : frame gởi lại (mang cùng một nội dung với chuỗi DATAtrước đó)

Trang 9

+ bit b2 : bit này chỉ được gởi đi từ vi xử lý để báo với PC kết quả củalần truyền vừa rồi

b2=0 : dữ liệu gởi từ PC đến vi xử lý nhận đúng

b2=1 : dữ liệu gởi từ PC đến vi xử lý bị lỗi

- 1 byte length : chỉ số byte của chuỗi data cộng một byte “↵” kết thúcframe truyền

- Các byte data : mang thông tin yêu cầu của master (PC) đối với slave(vi xử lý) dựa trên qui tắc tập lệnh Chuỗi data bao gồm :

PC mà chỉ có các byte control fiels với mục đích thông báo kết qua vừa nhậnđược từ PC là đúng hay sai (nhờ vào bit b2 của byte control fiel)

- Nếu trong một khoảng thời định trước mà PC chưa nhận được tínhiệu trả lời từ vi xử lý, nó sẽ gởi tiếp một frame khác Frame này chỉ gồmcác byte control fiels mà không mang theo yêu cầu mới cho vi xử lý nhằmmục đích nhắc lại frame vừa truyền Khi nhận được frame này, khối vi xử lýkiểm tra quá trình xử lý trước đó thực hiện xong chưa và trả lời lại cho PC

- Nếu sau vài lần gởi mà PC vẫn không nhận được trả lời từ vi xử lýthì xem như đường truyền bị lỗi Nếu đường truyền bị lỗi hoặc có thông báo

Trang 10

lỗi từ vi xử lý gởi về thì PC sẽ gởi một frame truyền mới mang đầy đủthông tin ban đầu.

Mã ID của frame truyền được đặt ra nhằm mục đích để mở rộngchương trình sau này Nếu trong trường hợp truyền nhận chuỗi dữ liệu có độdài quá lớn hoặc truyền nhận file, ta không thể truyền một lần trên mộtframe mà phải cắt ra thành nhiều frame truyền Khi đó, việc đánh mã IDchính xác sẽ giúp cho việc kết chuỗi dữ liệu nhận về không bị xáo trộn Quitắc đánh mã ID là nó chỉ được tăng dần sau mỗi lần trao đổi dữ liệu thànhcông, tức PC phải nhận được trả lời từ vi xử lý theo đúng yêu cầu mà nó gởiđến và kết thúc một chu trình liên kết dữ liệu

III TRUYỀN THÔNG NỐI TIẾP:

Ta có thể thực hiện truyền dữ liệu giữa máy tính và vi xử lý theonhiều chuẩn khác nhau Vì trong luận văn này sử dụng đến việc thu phát dữliệu theo kiểu nối tiếp nên cần phải khái quát vài nét về các chuẩn truyềnthông

Truyền thông nối tiếp là việc thu phát dữ liệu ở dạng chuỗi các xungđiện – gọi là các bit Hiệp hội điện tử công nghiệp (EIA) đưa ra các chuẩntruyền thông khác nhau như : RS 232-C, RS-422, RS-423, RS-485, RS-449,v.v Ký hiệu RS là viết tắt của Recommended Standard, nghĩa là tiêuchuẩn khuyến cáo

Việc truyền dữ liệu nối tiếp theo chuẩn RS-232 có ưu điểm hơn truyềnsong song là mức điện áp hoạt động là +12V và –12V, khoảng cách truyền

xa hơn, ít nhiễu hơn

Việc trao đổi dữ liệu diễn ra trên hai đường dẫn TxD và RxD, mức tín hiệutrên chân ra RxD tùy thuộc vào đường dẫn TxD và thường nằm trongkhoảng –12V đến +12V, các bit dữ liệu được đảo ngược lại Mức cao nằmgiữa –3V và –12V, mức thấp nằm giữa +3V và +12V Ở trạng thái tĩnh, trênđường dây có điện áp là –12V

Một chuỗi dữ liệu truyền đi được bắt đầu bằng một bit khởi đầu, tiếptheo đó là các bit dữ liệu, bit thấp đi trước Số bit dữ liệu nằm trong khoảng

5 đến 8 bit, tiếp đó là bit kiểm tra chẳn lẻ và cuối cùng là bit kết thúc (stopbit) Tốc độ truyền được thiết lập bằng tham số Baudrate, là số bit truyền đitrong 1 giây, thông thường là 300, 600, 1200, 2400, 4800, 9600 và 19200

Việc thiết lập các thông số truyền nối tiếp được thực hiện bằng cáchthay đổi các giá trị trong các thanh ghi phục vụ truyền nối tiếp

Trang 11

Bản đồ thanh ghi nội của bộ thu phát nối tiếp 8250 (không đồng bộ).

Transmitter holding

register

1 Thanh ghi điều khiển đường truyền (Line Control Register):

Bit cao của thanh ghi này gọi là bit chốt truy xuất hệ số chia Nếu bitnày được đặt lên 1 thì giá trị ở thanh ghi cơ sở được truy xuất làm byte thấpcủa thanh ghi hệ số chia chọn tốc độ truyền, và giá trị ở thanh ghi cơ sở +1

sẽ được truy xuất làm byte cao của thanh ghi hệ số chia chọn tốc độ truyền.Nếu bit này được xóa về 0 thì thanh ghi cơ sở sẽ thành thanh ghi đệm thuphát

7 6 5 4 3 2 1 0

Bit 0 Bit1

00 : 5 bit data ; 01 : 6 bit data

10 : 7 bit data ; 11 : 8 bit dataBit 2 0 : 1 bit stop

1 : 1,5 hay 2 bit stopBit 3 0 : không kiểm tra parity

1 : kiểm tra parity

Trang 12

Bit 4 1 : kiểm tra parity chẵn

0 : kiểm tra parity lẻBit 5 1 : nếu bit 4 = 1; 0 : nếu bit 4 = 0Bit 6 Cho phép cấm đường truyền nối

tiếp

1 : ngõ ra bị xoá trắng ; 0 : cấmBit 7 1 : chọn hệ số chia;

0 : bộ đệm thu, phát

2 Thanh ghi điều khiển MODEM:

Thanh ghi điều khiển MODEM dùng để đặt giao thức bắt tay khi sựtruyền thông sử dụng MODEM

7 6 5 4 3 2 1 0

Bit 0 Data terminal ready

1 : DTR active; 0 : DTR inactiveBit 1 Request to send;

1 : RTS active; 0 : RTS inactiveBit 2 Output 1 (spare signal)

1 : OUT 1 : active; 0 : OUT 1 inactiveBit 3 Output 2 (interrupt enable signal)

1 : Communication interrupt active

0 : Communication interrupt inactiveBit 4 Loopback feature

1 : Transmitter output looped back to receiver register

0 : Normal operationBit

5,6,7

000

3 Thanh ghi trạng thái đường dây (Line Status Register):

Báo cho máy tính biết thông tin, trạng thái của dữ liệu truyền đi

Bit:

Trang 13

7 6 5 4 3 2 1 0

Bit Nội dungBit 0 1 : Có dữ liệu trong bộ đệm nhậnBit 1 1 : Overrun error : dữ liệu bị chồngBit 2 1 : sai parity

Bit 3 1 : Framing error ( bit stop không hợp lệ)Bit 4 1 : Báo ngắt (đường truyền trống )

Bit 5 1 : Thanh ghi phát trốngBit 6 1 : Thanh ghi dịch và thanh ghi phát

trống

0 : Thanh ghi dịch còn chứa dữ liệuBit 7 0

4 Chuẩn RS-232:

Chuẩn RS-232 lần đầu tiên được giới thiệu vào năm 1962 do hiệp hội

kỹ thuật điện tử EIA (Electronics Industries Association) như là chuẩn giaotiếp truyền thông giữa máy tính và một thiết bị ngoại vi (modem, máy vẽ,mouse, máy tính khác,……)

Cổng giao tiếp RS-232 là giao diện phổ biến rộng rãi nhất Ngườidùng máy tính PC còn gọi cổng này là COM 1, còn COM 2 để tự do cho cácứng dụng khác Giống như cổng máy in, cổng nối tiếp RS-232 được sử dụngmột cách rất thuận tiện cho mục đích đo lường và điều khiển

Việc truyền dữ liệu qua RS-232 được tiến hành theo cách nối tiếp,nghĩa là các bit dữ liệu được gửi đi nối tiếp nhau trên một đường truyền dẫn.Trước hết, loại truyền này có thể dùng cho những khoảng cách lớn hơn, bởi

vì các khả năng gây nhiễu nhỏ đáng kể hơn là dùng cổng song song Việcdùng cổng song song có một nhược điểm đáng kể là cáp truyền dùng quánhiều sợi, và vì vậy rất đắt tiền Hơn nữa tín hiệu nằm trong khoảng 0 - 5V

tỏ ra không thích ứng với khoảng cách lớn

Cổng nối tiếp RS không phải là một hệ thống Bus, nó cho phép dễdàng tạo ra liên kết dưới hình thức điểm nối điểm giữa hai máy cần trao đổithông tin với nhau Một thành phần thứ ba không thể tham gia vào cuộc traođổi thông tin này

Bit:

Trang 14

Cổng Com 9 chân

Bảng sắp xếp chân của cổng nối tiếp ở máy tính:

9 chân 25 chân Chức năng

DCD _ Data Carrier Detect (Lối vào)RxD _ Receive Data (Lối vào)

TxD _ Transmit Data (Lối ra)DTR _ Data Terminal Ready (Lối ra)GND _ Ground (Nối đất)

DSR _ Data Set Ready (Lối vào)RTS _ Request to Send (Lối ra)CTS _ Clear to Send (Lối vào)

RI _ Ring Indicator (Lối ra)

Việc truyền dữ liệu xảy ra trên hai đường dẫn Qua chân cắm ra TxD,máy tính gởi dữ liệu của nó đến các thiết bị khác Trong khi đó dữ liệu màmáy tính nhận được, lại được dẫn đến chân nối RxD Các tín hiệu khác đóngvai trò như là tín hiệu hỗ trợ khi trao đổi thông tin và vì vậy không phảitrong mọi ứng dụng đều dùng đến

Các bit dữ liệu được gởi đi theo kiểu đảo ngược, nghĩa là các bit có giátrị “1” sẽ có mức điện áp LOW, các bit có giá trị “0” sẽ có mức điện ápHIGH Mức tín hiệu nhận và truyền qua chân RxD và TxD thông thườngnằm trong khoảng –12V đến +12V Mức điện áp đối với mức HIGH nằmgiữa +3V đến +12V

Ở trạng thái tĩnh trên đường dây vẫn có điện áp –12V Một bit khởi động(Start bit) sẽ mở đầu việc truyền dữ liệu Tiếp sau đó là các bit riêng lẻ đến,trong đó các bit có giá trị thấp được gửi trước tiên Con số của các bit dữ liệuthay đổi giữa năm và tám Ở cuối dòng dữ liệu còn có một bit dừng (Stopbit) để đặt lại trạng thái lối ra (-12V)

Trang 15

Tốc độ Baud có giá trị thông thường là : 300; 600; 1200; 4800; 9600;

19200 Baud Ký hiệu Baud tương ứng với số bit truyền trong 1 giây (bit persecond _ bps) Chẳng hạn như khi tốc độ Baud bằng 9600 có nghĩa là có

9600 bit dữ liệu được truyền trong 1 giây Vì mỗi byte dữ liệu có một bit bắtđầu và một bit được dùng gởi kèm theo, do đó khi truyền một byte dữ liệu đã

có 10 bit được gửi đi Với tốc độ Baud thông thường, mỗi giây cho phéptruyền nhiều nhất từ 30 đến 1920 byte dữ liệu, vì vậy nhược điểm lớn nhấtcủa cổng truyền nối tiếp là tốc độ truyền dữ liệu bị hạn chế

So sánh giữa TTL và RS-232, ta thấy TTL sử dụng mức logic dương và0,4V chống nhiễu Trong khi đó RS-232 sử dụng mức điện áp 12V để đảmbảo truyền được trên đường dây dài Với khoảng chống nhiễu 12V cho phéptín hiệu đi qua môi trường nhiễu mạnh mà đối với TTL không thể có được.Một trong những yêu cầu quan trọng của RS-232 là thời gian chuyển từmột mức logic này tới một mức logic khác không vượt quá 4% thời gian mộtbit Vì thế ở tốc độ 19200 Baud thời gian mức logic phải nhỏ hơn0,04/19200s Vấn đề này làm giới hạn chiều dài đường truyền Với tốc độtruyền 19200 Baud, ta có thể truyền xa nhất là 50 feet (15,24 m)

Một trong những vấn đề quan trọng cần chú ý khi sử dụng RS-232 làmạch thu phát không cân bằng (đơn cực) Điều này có ý nghĩa là tín hiệu vào

ra được so với đất Vì vậy nếu điện thế tại hai điểm đất của hai mạch thuphát không bằng nhau thi sẽ có dòng điện chạy trên dây nối đất Kết quả sẽ

có áp rơi trên dây nối đất (V=I.R) sẽ làm suy yếu tín hiệu logic Nếu truyềntín hiệu đi xa, R sẽ tăng dần đến áp rơi trên đất sẽ lớn dần đến lúc tín hiệulogic sẽ rơi vào vùng không xác định và mạch thu sẽ không nhận đúng dữliệu được truyền từ mạch phát Chính sự không cân bằng trên mạch thu phát

là một trong những nguyên nhân giới hạn đường truyền

Do trong luận văn này không sử dụng các chuẩn giao tiếp khác được giơi thiệu trên nên không giới thiệu chi tiết

5 Giới Thiệu IC MAX-232 :

15 14 13 12 11 10 9

C1- V- T2OUT R2IN

C2-VCC GND T1OUT R1IN R1OUT T1IN T2IN R2OUT Hình 1

Trang 16

INPUTHình 2 GND R2OTUT

R1OUT

R2IN

T1IN C2- C2+

C1-T1OUT V-

RS-232

Trang 17

Chương 2:

SƠ LƯỢC AT89C51

MCS-51 là một họ IC vi điều khiển do Intel phát triển và sản xuất.Một số nhà sản xuất được phép cung cấp các IC tương thích với các sảnphẩm MCS-51 của Intel là Siemens, Advanced Micro Devices, Fujitsu,Philips, Atmel…

Các IC của họ MCS-51 có các đặc trưng chung như sau:

• 4 port I/O 8 bit

• Giao tiếp nối tiếp

• 64K không gian bộ nhớ chương trình mở rộng

• 64K không gian bộ nhớ dữ liệu mở rộng

• Một bộ xử lý luận lý (thao tác trên các bit đơn)

• 210 bit được địa chỉ hóa

• Bộ nhân/chia 4 µs

Ngoài ra, tùy theo số hiệu sản xuất mà chúng có những khác biệt về

bộ nhớ và bộ định thời/bộ đếm như trong bảng so sánh dưới đây:

Số hiệu sản

xuất

Bộ nhớ chương trình trên chip

Bộ nhớ dữ liệu trên chip

Số bộ định thời (bộ đếm) 8031

8051

8751

8951

0K 4K ROM 4K EPROM 4K FLASH

8052

8752

8952

0K 8K ROM 8K EPROM 8K FLASH

Trang 18

II GIỚI THIỆU AT89C52 :

AT89C52 là một Microcomputer 8 bit, họ CMOS, có tốc độ cao vàcông suất thấp với bộ nhớ Flash có thể lập trình được Nó được sản xuất vớicông nghệ bộ nhớ không bay hơi mật độ cao của hãng Atmel, và tương thíchvới chuẩn công nghiệp của 80C51 và 80C52 về chân ra và bộ lệnh Vì lý do

đó, kể từ đây về sau ta sẽ dùng thuật ngữ “80C51” (hoặc "8051")

Với sự kết nối linh hoạt 8 bit CPU với flash trên chip, AT89C52 củaAtmel là một micro-computer tuyệt vời với độ linh hoạt cao và giải quyếthiệu quả nhiều chương trình điều khiển ghi vào nó

Sơ đồ khối của AT89C51

Trang 19

1 Những đặc trưng của AT89C52.

+ Tương thích với các sản phẩm MCS-51

+ 8KByte bộ nhớ Flash có thể lập trình lại với 1000 chu kỳ đọc/xoá+ Hoạt động tĩnh đầy đủ: 0Hz đến 24MHz

+ Khoá bộ nhớ chương trình ba cấp

+ 256 x 8 bit RAM nội

+ 32 đường xuất-nhập lập trình được (tương ứng 4 port)

+ Ba timer/counter 16 bit

+ Một cấu trúc ngắt 6-vector 2 mức

+ Một port nối tiếp song công lập trình được dạng full

Trang 20

+ Mạch đồng hồ và bộ dao động trên chip

2 Cấu hình chân của AT89C52 như sau:

Như vậy AT89C52 có tất cả 40 chân Mỗi chân có chức năng như cácđường I/O (xuất/nhập), trong đó 24 chân có công dụng kép: mỗi đường cóthể hoạt động như một đường I/O hoặc như một đường điều khiển hoặc như

thành phần của bus địa chỉ và bus đữ liệu

Port 0 có thể được định cấu hình để hợp kênh giữa bus địa chỉ vàbus dữ liệu (phần byte thấp) khi truy cập đến bộ nhớ dữ liệu và bộ nhớchương trình ngoài Ở chế độ này, P0 có các điện trở pullup bên trong

Port 0 cũng nhận các byte code (byte mã chương trình) khi lậptrình Flash, và xuất ra các byte code khi kiểm tra chương trình Cần có cácđiện trở pullup bên ngoài khi thực hiện việc kiểm tra chương trình

Trang 21

Port 1

Port 1 là một port xuất/nhập song hướng 8 bit có các điện trởpullup bên trong Các bộ đệm ngõ ra của port 1 có thể kéo hoặc cung cấp 4ngõ nhập TTL Khi mức 1 được viết vào các chân của port 1, chúng đượckéo lên cao bởi các điện trở pullup nội và có thể được dùng như là các ngõnhập Nếu đóng vai trò là các ngõ nhập, các chân của port 1 (được kéoxuống thấp qua các điện trở bên ngoài) sẽ cấp dòng IIL do các điện trởpullup bên trong

Port 2 là một port xuất/nhập song hướng 8 bit có các điện trở

pullup bên trong

Các bộ đệm ngõ ra của port 2 có thể kéo hoặc cung cấp 4 ngõ vàoTTL Khi các mức 1 được viết vào các chân của port 2 thì chúng được kéolên cao bởi các điện trở pullup nội và có thể được dùng như các ngõ vào.Khi được dùng như các ngõ vào, các chân của port 2 (được kéo xuống quacác điện trở bên ngoài) sẽ cấp dòng IIL do có các điện trở kéo lên bên trong

Port 2 phát ra byte cao của địa chỉ khi đọc từ bộ nhớ chương trìnhngoài và khi truy cập bộ nhớ dữ liệu ngoài dùng các địa chỉ 16 bit (MOVX

@DPTR) Trong ứng dụng này, nó dùng các điện trở pullup nội "mạnh" khiphát ra các mức 1 Khi truy cập bộ nhớ dữ liệu ngoài dùng các địa chỉ 8 bit(MOVX @RI), port 2 phát ra các nội dung của thanh ghi chức năng đặcbiệt P2

Port 2 cũng nhận các bit cao của địa chỉ và một vài tín hiệu điềukhiển khi lập trình và kiểm tra Flash

Port 3 cũng cung cấp các chức năng của các đặc trưng đặc biệtnhư được liệt kê dưới đây:

Trang 22

RXDTXD

INT0 INT1

T0T1

WR RD

Port nhập nối tiếpPort xuất nối tiếpNgắt 0 bên ngoàiNgắt 1 bên ngoàiNgõ vào Timer/Counter 0Ngõ vào Timer/Counter 1Xung ghi bộ nhớ dữ liệu ngoàiXung đọc bộ nhớ dữ liệu ngoài

Các chức năng chuyển đổi trên Port 3

Khi hoạt động bình thường, ALE được phát với một tỷ lệ khôngđổi là 1/6 tần số bộ dao động và có thể được dùng cho các mục đích timing

và clocking bên ngoài Tuy nhiên, lưu ý rằng một xung ALE sẽ bị bỏ quamỗi khi truy cập bộ nhớ dữ liệu ngoài

Nếu muốn, hoạt động ALE có thể cấm được bằng cách set bit 0của SFR tại địa chỉ 8Eh Nếu bit này được set, ALE chỉ dược hoạt độngkhi có một lệnh MOVX hoặc MOVC Ngược lại, chân này được kéo lêncao bởi các điện trở pullup "nhẹ" Việc set bit cấm-ALE không có tác dụngkhi bộ vi điều khiển đang ở chế độ thi hành ngoài

PSEN (Program Store Enable) là xung đọc bộ nhớ chương trình ngoài Khi AT89C52 đang thi hành mã (code) từ bộ nhớ chương trình ngoài, PSENđược kích hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động

PSEN sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài

EA/Vpp

Trang 23

EA (External Access Enable) phải được nối với GND để chophép thiết bị đọc code từ bộ nhớ chương trình ngoài có địa chỉ từ 0000Hđến FFFFH Tuy nhiên, lưu ý rằng nếu bit khoá 1 (lock-bit 1) được lậptrình, EA sẽ được chốt bên trong khi reset.

EA phải được nối với Vcc khi thi hành chương trình bên trong.Chân này cũng nhận điện áp cho phép lập trình Vpp=12V khi lập trìnhFlash (khi đó áp lập trình 12V được chọn)

XTAL1 và XTAL2

XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đạidao động nghịch được cấu hình để dùng như một bộ dao động trên chip

Hình Các kết nối của bộ dao động

Không có yêu cầu nào về duty cycle của tín hiệu xung ngoài,vì ngõnhập nối với mạch tạo xung nội là một flip-flop chia đôi, nhưng các chỉ định

về thời gian high và low, các mức áp tối đa và tối thiểu phải được tuân theo

Trang 24

Các đặc trưng khác sẽ được trình bày một cách chi tiết hơn ở những

phần tiếp theo sau đây

• Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ

và có thể được truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác

• Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài nhưtrong các bộ vi xử lý khác

Chi tiết về bộ nhớ RAM trên chip:

Theo hình vẽ sau, RAM bên trong 8051/8031 được phân chia giữacác bank thanh ghi (00H–1FH), RAM địa chỉ hóa từng bit (20H–2FH),RAM đa dụng (30H–7FH) và các thanh ghi chức năng đặc biệt (80H–FFH)

1 RAM đa dụng:

Mặc dù trên hình cho thấy 80 byte RAM đa dụng chiếm các địa chỉ từ30H–7FH, 32 byte dưới cùng từ 00H đến 1FH cũng có thể được dùng vớimục đích tương tự (mặc dù các địa chỉ này đã có mục đích khác)

Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùngcách đánh địa chỉ trực tiếp hoặc gián tiếp Ví dụ, để đọc nội dung ở địa chỉ5FH của RAM nội vào thanh ghi tích lũy, lệnh sau sẽ được dùng :

MOV A, 5FH

Lệnh này di chuyển 1 byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xácđịnh “địa chỉ nguồn” (5FH) Đích nhận dữ liệu được ngầm xác định trong

mã lệnh là thanh ghi tích lũy A

RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếpqua R0 hay R1 Ví dụ, hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn ở

Trang 25

Bank 2 17

10

Bank 1 0F

B

TL1 không được địa chỉ hóa bit 8

A A A9 A8

A 8

IE

– – – BC BB B

A B9 B8

B 8

IP

E7 E6 E5 E4 E3 E2 E1 E0 E

0

ACC

D 7

D 6

D 5

D 4

D 3

D 2

– D 0

D 0

PSW

B7 B6 B5 B4 B3 B2 B1 B0 B

không được địa chỉ hóa bit 8

D

TH1

F F

Tóm tắt bộ nhớ dữ liệu trên chip

Trang 26

2 RAM địa chỉ hóa từng bit :

8051/8031 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉbyte 20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặcbiệt

Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợicủa vi điều khiển nói chung Các bit có thể được đặt, xóa, AND, OR, vớimột lệnh đơn Đa số các vi xử lý đòi hỏi một chuỗi lệnh đọc-sửa-ghi để đạtđược hiệu quả tương tự Hơn nữa, các port I/O cũng được địa chỉ hóa từngbit làm đơn giản phần mềm xuất nhập từng bit

Trang 27

Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH Các địa chỉnày được truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh đượcdùng Ví dụ, để đặt bit 67H, ta dùng lệnh sau :

3 Các bank thanh ghi :

32 byte thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi Bộlệnh của 8051/8031 hỗ trợ 8 thanh ghi (R0 đến R7) và theo mặc định (saukhi reset hệ thống) các thanh ghi này ở các địa chỉ 00H–07H Lệnh sau đây

sẽ đọc nội dung ở địa chỉ 05H vào thanh ghi tích lũy :

MOV A, R5

Đây là lệnh 1 byte dùng địa chỉ thanh ghi Tất nhiên, thao tác tương tự

có thể được thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong bytethứ hai :

MOV A, 05H

Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơncác lệnh tương ứng nhưng dùng địa chỉ trực tiếp Các giá trị dữ liệu đượcdùng thường xuyên nên dùng một trong các thanh ghi này

Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bitchọn bank thanh ghi trong từ trạng thái chương trình (PSW) Giả sử rằngbank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung của thanh ghi tíchlũy vào địa chỉ 18H :

MOV R0, A

Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trìnhnhanh và hiệu quả (từng phần riêng rẽ của phần mềm sẽ có một bộ thanhghi riêng không phụ thuộc vào các phần khác)

Trang 28

IV CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT:

Một bản đồ vùng bộ nhớ trên chip được gọi là không gian thanh ghichức năng đặc biệt (SFR) như được trình bày trong bảng

Lưu ý rằng không phải tất cả các địa chỉ đều được sử dụng, và các địachỉ không được sử dụng có thể không được cung cấp trên con chip Cáchành động đọc đến các địa chỉ này nói chung sẽ trả về các dữ liệu ngẫunhiên, và các hành động viết sẽ có một hiệu ứng không xác định.Các phần mềm người dùng không nên viết các mức 1 đến những vị tríkhông được liệt kê này, vì chúng có thể được dùng trong các sản phẩmtương lai khi thêm vào các đặc trưng mới Trong trường hợp này, các giá trị

reset hoặc không tích cực của các bit mới sẽ luôn là 0

Các thanh ghi nội của 8051/8031 được truy xuất ngầm định bởi bộlệnh Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1

Tác động này được ngầm định trong mã lệnh

Các thanh ghi trong 8051/8031 được định dạng như một phần củaRAM trên chip Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghiđếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tácđộng trực tiếp, nên không lợi lộc gì khi đặt chúng vào trong RAM trên chip)

Đó là lý do để 8051/8031 có nhiều thanh ghi như vậy Cũng như R0đến R7, có 21 thanh ghi chức năng đặc biệt (SFR : Special FunctionRegister) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú ý rằng hầuhết 128 địa chỉ từ 80H đến FFH không được định nghĩa Chỉ có 21 địa chỉ

SFR là được định nghĩa

Ngoại trừ tích lũy (A) có thể được truy xuất ngầm như đã nói, đa số cácSFR được truy xuất dùng địa chỉ trực tiếp Chú ý rằng một vài SFR có thểđược địa chỉ hóa bit hoặc byte Người thiết kế phải thận trọng khi truy xuấtbit và byte Ví dụ lệnh sau : SETB 0E0H sẽ set bit 0 trong thanh ghi tíchlũy, các bit khác không đổi Ta thấy rằng E0H đồng thời là địa chỉ byte của

cả thanh ghi tích lũy và là địa chỉ bit của bit có trọng số nhỏ nhất trong thanhghi tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là có

Trang 29

Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lýthi hành trên bit Ví dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả

trở vào cờ nhớ : ANL C, 25H

* Cờ nhớ phụ

Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bitthấp trong khoảng 0AH đến 0FH Nếu các giá trị được cộng là số BCD, thìsau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi tích lũy) để

mang kết quả lớn hơn 9 vào nibble cao

* Cờ 0

Cờ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người dùng

* Các bit chọn bank thanh ghi

Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghiđược tích cực Chúng được xóa sau khi reset hệ thống và được thay đổi bằng

Trang 30

phần mềm nếu cần Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và dichuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy :SETB RS1

SETB RS0

MOV A, R7

Khi chương trình được hợp dịch, các đại chỉ bit đúng được thay thế chocác ký hiệu “RS1” và “RS0” Vậy, lệnh SETB RS1 sẽ giống như lệnh SETB0D4H

* Cờ tràn

Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có một phéptoán bị tràn Khi các số có dấu được công hoặc trừ với nhau, phần mềm cóthể kiểm tra bit này để xác định xem kết quả có nằm trong tầm xác địnhkhông Khi các số không dấu được cộng, bit OV có thể được bỏ qua Các kết

quả lớn hơn +127 hoặc nhỏ hơn -128 sẽ set bit OV

Kết quả là một số có dấu 8EH được xem như -116, không phải là kết quảđúng (142), vì vậy, bit OV được set

2 Thanh ghi B.

Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy Acho các phép toán nhân và chia Lệnh MUL AB sẽ nhân các giá trị khôngdấu 8 bit trong A và B rồi trả về kết quả 16 bit trong A (byte thấp) và B(byte cao) Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A

và phần dư trong B Thanh ghi B cũng có thể được xem như thanh ghi đệm

đa dụng Nó được địa chỉ hóa từng bit bằng các địa chi bit F0H đến F7H

3 Con trỏ ngăn xếp

Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H Nó chứađịa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp Các lệnh trênngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu rakhỏi ngăn xếp Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi

dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và giảm SP.Ngăn xếp của 8051/8031 được giữ trong RAM nội và được giới hạn các địachỉ có thể truy xuất bằng địa chỉ gián tiếp Chúng là 128 byte đầu của8051/8031

Để khởi động lại SP với ngăn xếp bắt đầu tại 60H,các lệnh sau đâyđược dùng:

MOV SP, #5FH

Trang 31

Trên 8051/8031 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất củaRAM trên chip là 7FH Sở dĩ dùng giá trị 5FH vì SP sẽ tăng lên 60H trước

khi cất byte dữ liệu đầu tiên

Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp

mà để nó lấy giá trị mặc định khi reset hệ thống Giá trị mặc định đó là 07H

và kết quả là ngăn đầu tiên để cất dữ liệu có địa chỉ là 08H Nếu phần mềmứng dụng không khởi động lại SP, bank thanh ghi 1 (có thể cả 2 và 3) sẽkhông dùng được vì vùng RAM này đã được dùng làm ngăn xếp.Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưutrữ tạm thời và lấy lại dữ liệu, hoặc được truy xuất ngầm bằng các lệnh gọichương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) để cất

và lấy lại bộ đếm chương trình

dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR

(1000H)

5 Các thanh ghi port xuất nhập :

Các port của 8051/8031 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H,Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H Tất cả các port đều được địachỉ hóa từng bit Điều đó cung cấp một khả năng giao tiếp thuận lợi Ví dụ,nếu một motor được nối qua một cuộn dây có transistor lái đến bit 7 củaPort 1, nó có thể được bật và tắt bằng một lệnh đơn :

SETB P1.7 ; bật motor

CLR P1.7 ; tắt motor

Các lệnh trên dùng dấu chấm để xác định một bit trong một byte Trìnhhợp dịch sẽ thi hành sự chuyển đổi cần thiết, vì vậy hai lệnh sau đây là nhưnhau :

Trang 32

6 Các thanh ghi timer:

8051/8031 chứa ba bộ định thời / đếm 16 bit được dùng cho việc địnhthời hoặc đếm sự kiện Timer 0 ở địa chỉ 8AH (TL0 : byte thấp) và 8CH(TH0 : byte cao) Timer 1 ở địa chỉ 8BH (TL1 : byte thấp) và 8DH (TH1 :byte cao) Timer 2 (TL2: byte thấp và TH2: byte cao) Việc vận hành timer0

và timer1 được set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H vàthanh ghi điều khiển timer (TCON) ở địa chỉ 88H Việc vận hành timer2được set bởi thanh ghi Timer2 Mode ( T2MOD) ở địa chỉ 0C9H và thanh ghiđiều khiển (T2CON) ở địa chỉ 0C8H Chỉ có TCON và T2CON được địa chỉ

hóa từng bit Được cho ở bảng sau:

 Thanh ghi TMOD (Timer Mode): dùng để xác lập chế độ hoạt động

(

/T counter timer

C

Trang 33

 C/T = : bộ timer nhận xung clock từ dao động nội.

 C/T = : bộ timer nhận xung clock từ bên ngoài ( từ ngõ T0 hay T1)

- Gate : điều khiển mở rộng

 Gate = 0 : bộ Timer hoạt động bình thường

 Gate = 1 : bộ timer chỉ hoạt động khi ngõ INTx =0

 Thanh ghi TCON ( Timer control)

(4 bit thấp không dùng cho Timer)

 Thanh ghi T2CON :

7 Các thanh ghi port nối tiếp:

8051/8031 chứa một port nối tiếp trên chip dành cho việc trao đổithông tin với các thiết bị nối tiếp như máy tính, modem hoặc cho việc giaotiếp với các IC khác có giao tiếp nối tiếp (các bộ chuyển đổi A/D, các thanhghi dịch ) Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ99H sẽ giữ cả hai dữ liệu truyền và nhận Khi truyền dữ liệu thì ghi lênSBUF, khi nhận dữ liệu thì đọc SBUF Các mode vận hành khác nhau đượclập trình qua thanh ghi điều khiển port nối tiếp (SCON) (được địa chỉ hóatừng bit) ở địa chỉ 98H

8 Các thanh ghi ngắt:

8051/8031 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấmsau khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi chophép ngắt (IE) ở địa chỉ A8H Cả hai thanh ghi được địa chỉ hóa từng bit

Trang 34

9 Thanh ghi điều khiển công suất.

Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit

điều khiển Chúng được tóm tắt trong bảng sau :

Các bit khoá bộ nhớ chương trình Vi điều khiển AT89C52 có 3 bit

khoá có thể bỏ không lập trình (U) hoặc được lập trình (P) để nhận các đặctrưng thêm vào được liệt kê trong bảng dưới đây (với LB1, LB2, LB3 là cácbit khóa tương ứng)

1 U U U Không khoá chương trình

2 P U U Các lệnh MOVC được thi hành từ bộ nhớ

chương trình ngoài bị cấm khi lấy các byte mã

từ bộ nhớ nội, /EA được lấy mẫu và được chốtlại khi reset và hơn nữa, việc lập trình bộ nhớFlash là bị cấm

3 P P UNhư chế độ 2 nhưng việc kiểm tra cũng bị cấm

4 P P P Như chế độ 3 nhưng việc thi hành ngoài cũng bị

cấm

mode giảm công suất, chỉ thoát khi reset

thoát khi có ngắt hoặc reset hệ thống.

tốc độ baud sẽ tăng gấp đôi trong các mode 1,2 và 3 của port nối tiếp.

Trang 35

Khi bit khoá 1 được lập trình, mức logic tại chân EA được lấy mẫu vàchốt lại khi reset Nếu thiết bị được bật nguồn mà không có reset, việc chốt

sẽ được khởi tạo với một giá trị ngẫu nhiên cho đến khi được reset Giá trịđược chốt của EA phải bằng với mức logic hiện tại ở chân đó để cho thiết bịlàm việc một cách chính xác

VI HOẠT ĐỘNG CỦA PORT NỐI TIẾP:

1 Giới thiệu:

8051/8031 có một port nối tiếp trong chip có thể hoạt động ở nhiềuchế độ trên một dãi tần số rộng Chức năng chủ yếu của port nối tiếp là thựchiện chuyển đổi song song sang nối tiếp đối với dữ liệu xuất, và chuyển đổinối tiếp sang song song với dữ liệu nhập

Truy xuất phần cứng đến port nối tiếp qua các chân TXD và RXD.Các chân này có các chức năng khác với hai bit của Port 3, P3.1 ở chân 11

(TXD) và P3.0 ở chân 10 (RXD)

Port nối tiếp cho hoạt động song công (full duplex : thu và phát đồngthời), và đệm lúc thu (receiver buffering) cho phép một ký tự sẽ được thu vàđược giữ trong khi ký tự thứ hai được nhận Nếu CPU đọc ký tự thứ nhấttrước khi ký tự thứ hai được thu được thu đầy đủ thì dữ liệu sẽ không bị mất

Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đếnport nối tiếp là : SBUF và SCON Bộ đệm port nối tiếp (SBUF) ở địa chỉ99H thật sự là hai bộ đệm Viết vào SBUF để nạp dữ liệu sẽ được phát, vàđọc SBUF để truy xuất dữ liệu thu được Đây là hai thanh ghi riêng biệt :thanh ghi chỉ ghi để phát và thanh ghi chỉ đọc để thu

CLK SBUF

Q (chỉ ghi)

TXD

(P3.1)

Thanh ghi dịch

D CLK

Xung nhịp

tốc độ baud

(phát)

Xung nhịp tốc độ baud (thu)

Trang 36

Thanh ghi điều khiển port nối tiếp (SCON) ở địa chỉ 98H là thanh ghi

có địa chỉ 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đặt chế độ hoạt động cho port nối tiếp, và các bit trạng thái báo kết thúc việcphát hoặc thu ký tự Các bit trạng thái có thể được kiểm tra bằng phần mềmhoặc có thể được lập trình để tạo ngắt

Tần số làm việc của port nối tiếp, còn gọi là tốc độ baud có thể cốđịnh (lấy từ bộ dao động trên chip) Nếu sử dụng tốc độ baud thay đổi,Timer 1 sẽ cung cấp xung nhịp tốc độ baud và phải được lập trình

2 Thanh ghi điều khiển port nối tiếp:

Chế độ hoạt động của port nối tiếp được đặt bằng cách ghi vào thanhghi chế độ port nối tiếp (SCON) ở địa chỉ 98H Sau đây là các bảng tóm tắt

thanh ghi SCON và các chế độ của port nối tiếp :

Tóm tắt thanh ghi chế độ port nối tiếp SCON.

thông đa xử lý trong các chế đọ 2 và 3; RI sẽ không bị tác động nếu bit thứ 9 thu được là 0.

các ký tự.

và 3; được đặt và xóa bằng phần mềm.

đượcxóa bằng phần mềm.

xóa bằng phần mềm.

Trang 37

Các chế độ port nối tiếp.

Trước khi sử dụng port nối tiếp, phải khởi động SCON cho đúng chế

độ Ví dụ, lệnh MOV SCON, #01010010B khởi động port nối tiếp chochế độ 1 (SM0/SM1 = 0/1), cho phép bộ thu (REN = 1) và đặt cờ ngắt phát(T1 = 1) để chỉ bộ phát sẵn sàng hoạt động

3 Các chế độ hoạt động:

Port nối tiếp có 4 chế độ hoat động, có thể chọn được bằng cách viết các số

1 hay 0 vào các bit SM0 và SM1 trong SCON Có ba chế độ cho phéptruyền thông bất đồng bộ, với mỗi ký tự được thu (nhận) hoặc phát đềuđược đóng khung bằng một bit start và 1 bit stop Ở chế độ thứ tư, port nốitiếp hoạt động như một thanh ghi dịch đơn giản

a) Thanh ghi dịch 8 bit (chế độ 0):

Chế độ 0 được chọn bằng cách ghi các bit 0 vào SM1 và SM0 củaSCON, đưa port nối tiếp vào chế độ thanh ghi dịch 8 bit Dữ liệu nối tiếpvào và ra qua RXD và TXD xuất xung nhịp dịch 8 bit được phát hoặc thuvới bit đầu tiên là LSB Tốc độ baud cố định ở 1/12 tần số dao động trênchip

Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vàoSBUF Dữ liệu được dịch ra ngoài trên đường RXD (P3.0) với các xungnhịp được gửi ra đường TXD (P3.1) Mỗi bit phát đi hợp lệ (trên RXD)trong một chu kỳ máy Trong mỗi chu kỳ máy, tín hiệu xung nhập xuống

thấp ở S3P1 và trở về mức cao ở S6P1

Trang 38

Giản đồ thời gian port nối tiếp phát ở chế độ 0.

Việc thu được khởi động khi bit cho phép bộ thu (REN) là 1 và bitngắt thu (RI) là 0 Qui tắc tổng quát là đặt REN khi bắt đầu chương trình đểkhởi động port nối tiếp, rồi xóa RI để bắt đầu hoạt động nhập dữ liệu Khi RI

bị xóa, các xung nhịp được đưa ra đường TXD, bắt đầu chu kỳ máy kế tiếp,

và dữ liệu theo xung nhịp ở đường RXD Lấy xung nhịp cho dữ liệu vào portnối tiếp xảy ra ở cạnh dương của TXD

Trang 39

Giản đồ thời gian port nối tiếp thu ở chế độ 0.

Một ứng dụng của chế độ thanh ghi dịch là mở rộng khả năng xuấtcủa 8051/8031 IC thanh ghi dịch nối tiếp ra song song có thể được nối vàocác đường TXD và RXD của 8051/8031 để cung cấp thêm 8 đường ra Cóthể nối xâu chuỗi thêm các thanh ghi dịch để mở rộng thêm

Chế độ thanh ghi dịch của port nối tiếp.

b) UART 8 bit với tốc độ baud thay đổi được (chế độ 1).

Ở chế độ 1, port nối tiếp của 8051/8031 làm việc như một UART 8 bitvới tốc độ baud thay đổi được Một UART (Universal AsynchronousReceiver/Transmitter : Bộ thu/phát bất đồng bộ vạn năng) là một dụng cụthu và phát dữ liệu nối tiếp với mỗi ký tự dữ liệu đi trước là bit start ở mứcthấp và theo sau là bit stop ở mức cao Đôi khi xen thêm bit kiểm tra chẵn lẻgiữa bit dữ liệu cuối cùng và bit stop Hoạt động chủ yếu của UART làchuyển đổi song song sang nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp

sang song song với dữ liệu nhập

Ở chế độ 1, 10 bit được phát trên TXD hoặc thu trên RXD Những bit

đó là : 1 bit start (luôn luôn là 0), 8 bit dữ liệu (LSB đầu tiên) và 1 bit stop(luôn luôn là 1) Với hoạt động thu, bit stop được đưa vào RB8 trongSCON Trong 8051/8031 chế dộ baud được đặt bằng tốc độ báo tràn của

8051

Thêm 8 ngõ ra

Trang 40

Tạo xung nhịp port nối tiếp.

Truyền dữ liệu (phát) được khởi động bằng cách ghi vào SBUF, nhưngvẫn chưa thật sự bắt đầu chạy cho đến khi sự thay thế kế tiếp của bộ đếmchia cho 16 cung cấp tốc độ baud cổng nối tiếp Dữ liệu được dịch ra ngoàitrên đường TXD bắt đầu bằng bit start, theo sau là 8 bit dữ liệu và sau cùng

là bit stop Độ rộng (theo thời gian của mỗi bit) là nghịch đảo của tốc độbaud được lập trình trong timer Cờ ngắt phát (TI) được đặt lên 1 khi xuấthiện bit stop trên TXD

Đặt cờ TI port nối tiếp.

Việc thu dữ liệu được khởi động bằng một chuyển trạng thái từ 1xuống 0 trên RXD Bộ đếm 16 tức thời được xóa để đồng bộ số đếm vớiluồng bit đến Luồng bit đến được lấy mẫu giữa 16 lần đếm

Bộ thu sẽ phát hiện được bit start sai bằng cách yêu cầu trạng thái 0 ở(bit start) ở lần đếm thứ 8 sau khi có chuyển trạng thái từ 1 xuống 0 đầu tiên.Nếu điều này không xảy ra, người ta giả sử là bộ thu được kích bởi nhiễuchứ không phải do một ký tự hợp lệ Bộ thu được reset và quay về trạng thái

nghỉ (idle), tìm kiếm (đợi) chuyển trạng thái từ 1 xuống 0 kế

Xung nhịp tốc độ baud Thanh ghi dịch port nối tiếp

baud

TI

(SCON.1)

Ngắt phát (chuẩn bị cho dữ liệu)

Ngày đăng: 28/04/2014, 18:50

HÌNH ẢNH LIÊN QUAN

Sơ đồ các lớp cơ bản xây dựng cho quá trình liên kết dữ liệu giữa 2  đối tượng sử dụng: - giao tiếp pc và vi xử lý trong hệ thống scada
Sơ đồ c ác lớp cơ bản xây dựng cho quá trình liên kết dữ liệu giữa 2 đối tượng sử dụng: (Trang 5)
Bảng sắp xếp chân của cổng nối tiếp ở máy tính: - giao tiếp pc và vi xử lý trong hệ thống scada
Bảng s ắp xếp chân của cổng nối tiếp ở máy tính: (Trang 14)
Sơ đồ khối của AT89C51 - giao tiếp pc và vi xử lý trong hệ thống scada
Sơ đồ kh ối của AT89C51 (Trang 18)
Bảng sự thật của thanh ghi dịch 8 bit 4094: - giao tiếp pc và vi xử lý trong hệ thống scada
Bảng s ự thật của thanh ghi dịch 8 bit 4094: (Trang 57)
Hình a: Hình b: - giao tiếp pc và vi xử lý trong hệ thống scada
Hình a Hình b: (Trang 62)
Sơ đồ sau đây cho thấy các khối bên trong MAX232 và các linh kiện mắc bên ngoài theo dạng chuẩn : - giao tiếp pc và vi xử lý trong hệ thống scada
Sơ đồ sau đây cho thấy các khối bên trong MAX232 và các linh kiện mắc bên ngoài theo dạng chuẩn : (Trang 63)
Sơ đồ bên trong IC MAX-232 - giao tiếp pc và vi xử lý trong hệ thống scada
Sơ đồ b ên trong IC MAX-232 (Trang 64)

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