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

4 4 2 giao tiếp pc vxl trong hệ thống scada

84 1 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

Tiêu đề Giao Thức Truyền Thông
Tác giả Châu Thị Bích Nga
Người hướng dẫn Thầy Huỳnh Hữu Phương
Trường học Đại Học Bách Khoa
Chuyên ngành Điện - Điện Tử
Thể loại luận văn tốt nghiệp
Năm xuất bản 2002
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 84
Dung lượng 1,01 MB

Cấu trúc

  • CHƯƠNG 1: GIAO THỨC TRUYỀN THÔNG (9)
    • I. Giới thiệu (9)
    • II. Protocol (10)
      • 1. Khái niệm (10)
      • 2. Xây dựng Protocol (11)
    • III. Truyền thông nối tiếp (14)
  • CHƯƠNG 2: CƠ LƯỢC AT89C51 (21)
    • I. Khái quát về họ IC MCS-51 (0)
    • II. Giới thiệu AT89C52 (22)
      • 1. Những đặc trưng cơ bản (0)
      • 2. Cấu hình chân (24)
    • III. Tổ chức bộ nhớ (28)
      • 1. RAM đa dụng (28)
      • 2. RAM địa chỉ hoá từng bit (0)
      • 3. Các bank thanh ghi (31)
    • IV. Các thanh ghi chức năng đặc biệt (31)
    • V. Bảo vệ bộ nhớ (38)
    • VI. Hoạt động của port nối tiếp (39)
  • CHƯƠNG 3: RTX51 TINY (51)
    • 1. Giới thiệu phần mềm KEIl (39)
    • 2. Chương trình tuần hoàn thời gian biểu của RTX51 (0)
    • 3. Các yêu cầu và định nghĩa (0)
    • 4. Các hàm thư viện của RTX51 (56)
  • CHƯƠNG 4: BOARD DEMO-KIT (71)
    • I. Khối hiển thị (60)
    • II. Khối giao tiếp A/D - D/A (61)
    • III. Khối RS-232 (67)
    • IV. Khối output (rơle) (0)
    • V. Khối input (69)
  • CHƯƠNG 5: Phần 1: TẬP LỆNH (0)
    • I. Giới thiệu tập lệnh (71)
    • II. Nội dung tập lệnh (71)
  • Phần 2: MÔ TẢ CHƯƠNG TRÌNH (73)
  • Phần 3: Chương trình (0)

Nội dung

GIAO THỨC TRUYỀN THÔNG

Giới thiệu

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:

Mục đích chính của luận văn này không nhằm thực hiện một ứng dụng điều khiển cụ thể mà tạo nên một ứng dụng mới trong giao tiếp dữ liệu giữa hai đối tượng là máy tính và khối vi xử lý Vì thế, chương trình người sử dụng, liên kết giữa hai đối tượng sử dụng- user 1và user2 ( tức chương trình 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ạng

Luận Văn Tốt Nghiệp 11 SVTH: Châu Thị Bích Nga

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

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

Xử lý giao tiếp thiết bị sóng vào ra một cách đơn giản, mang ý nghĩa mô phỏng cho những gì thực hiệ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ường thuận lợi cho quá trình trao đổi thông tin giữa hai đối tượng sử dụng Hay nói khác hơn, đây là một tầng đệm về ngôn ngữ giao tiếp, một quá trình trung gian giúp cho việc liên kết dữ liệu được diễn ra một cách trôi chảy theo 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 và sau cùng là lớp dữ liệu.

- Lớp vật lý: là các yếu tố đặc trưng bởi mức điện áp hay dòng điện cho các ngõ vào ra Tiêu biểu cho lớp này là các phương tiện như thiết bị điện (dây dẫn, chân IC…) hay các chuẩn giao tiếp giúp cho lớp liên kết dữ liệu được thực hiện Một trong các thủ tục protocol trong liên kết dữ liệu đơn giản nhất cho lớp này là sử dụng chuẩn giao tiếp RS-232 trong truyền thông nối tiếp.

- 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à truy xuấ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 ra theo định nghĩa của tập lệnh), phần giới thiệu tập lệnh được thực hiện trong chươ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ầng liên kết dữ liệu (các thủ tục protocol).

Protocol

Protocol cho tầng liên kết dữ liệu là một phương thức hay thủ tục truyền thông được đặt ra mà một qui trình truyền nhận thông tin phải tuân theo Nó 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ính xác của một hệ thống hoặc mạng trong quá trình trao đổi thông tin

Luận Văn Tốt Nghiệp 12 SVTH: Châu Thị Bích Nga

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ột protocol Theo lý thuyết, kiểm tra giá trị của một quá trình hoạt động nhằm chắc rằng trong quá trình hoạt động của hệ thống sẽ không có một điều kiện không mong muốn nào hoặc các trạng thái bất thường xảy ra khi protocol hoạt động “break down” (ví dụ như khi rơi vào một vòng lặp vô tận hoặc gặ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ên kế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ệc truyề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 trong vùng đệm vào “1” , các dữ liệu giống nhau cũng được giữ trong vùng đệm cho đế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 sau cù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ép gởi frame kế ( chứa một gói dữ liệu mới ) cho đến khi nó nhận được một frame từ đầu 2 mang theo thông tin trả lời đã nhận tốt Nếu đầu 1 không nhận được thông báo này trở về từ đầu 2 trong vòng một khoảng thời gian nghỉ (timeout) được định trước , nó sẽ truyền lại frame gởi đến đầu 2 và hy vọ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ông nhậ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.

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

Luận Văn Tốt Nghiệp 13 SVTH: Châu Thị Bích Nga 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ập lệnh được xây dựng trong luận văn này Một Protocol được đặt ra cho liên kế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 DATA Bốn byte đầu của frame truyền được gọi chung là các byte control fiels bao gồm :

- Một byte đầu tiên là byte header : là ký tự qui định nhằm đánh dấu cho đầ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êu cầ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 sau nà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 tin cho 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ài nà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 rakhi frame đượ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 DATA trước đó)

+ bit b2 : bit này chỉ được gởi đi từ vi xử lý để báo với PC kết quả của lầ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

Luận Văn Tốt Nghiệp 14 SVTH: Châu Thị Bích Nga

- 1 byte length : chỉ số byte của chuỗi data cộng một byte “” kết thúc frame 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 :

Hai byte đầu chứa địa chỉ (được định nghĩa theo tập lệnh) và cuối cùng phải là kí tự ‘’ b) Xây dựng protocol:

Với frame truyền được định nghĩa như trên ta thiết lập một protocol cho quá trình giao tiếp dữ là:

- Khối PC luôn đóng vai trò của một master, nghĩa là nó có quyền quyết định cho việc trao đổi dữ liệu có xảy ra hay không, và quyết định những yêu cầu cần thực thi đối với khối vi xử lý Khối vi xử lý luôn đóng vai trò của một slave; trong quá trình hoạt động, nó phải chờ chỉ được quyền gởi tín hiệu trả lời mỗi khi nhận được yêu cầu từ PC Do các tác vụ trong chương trình được thực hiện song song theo hệ thời gian thực (multitasking), nên đôi khi khối vi xử lý có thể gởi tín hiệu trả lời ngay khi yêu cầu từ PC gởi đến chưa được xử lý xong (nếu thời gian xử lý vượt quá khoảng thời gian quét tối đa qui định cho 1 tác vụ) Khi đó, khối vi xử lý sẽ tạo nên một frame truyền trả về PC, không mang theo nội dung trả lời cho yêu cầu của

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ín hiệu trả lời từ vi xử lý, nó sẽ gởi tiếp một frame khác Frame này chỉ gồm các byte control fiels mà không mang theo yêu cầu mới cho vi xử lý nhằm mụ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 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ộng chươ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ột

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ý theo nhiề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ền thô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ẩn truyề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êu chuẩ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ền song 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ệu trên chân ra RxD tùy thuộc vào đường dẫn TxD và thường nằm trong khoảng –12V đến +12V, các bit dữ liệu được đảo ngược lại Mức cao nằm giữ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ếp theo đó 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 (stop bit) Tốc độ truyền được thiết lập bằng tham số Baudrate, là số bit truyền đi trong 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ách thay đổi các giá trị trong các thanh ghi phục vụ truyền nối tiếp.

Luận Văn Tốt Nghiệp 16 SVTH: Châu Thị Bích Nga

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

4 Function Transmitter holding register THR 3F8H 2F8H 3E8H 2E8H OUTPUT

Receiver data register RDR 3F8H 2F8H 3E8H 2E8H INPUT Baud rate divisor (LSB) BRDL 3F8H 2F8H 3E8H 2E8H OUTPUT Baud rate divisor (MSB) BRDH 3F9H 2F9H 3E9H 2E9H OUTPUT Interrupt enable register IER 3F9H 2F9H 3E9H 2E9H OUTPUT Interrupt ID register IID 3FAH 2FAH 3EAH 2EAH INPUT Line control register LCR 3FBH 2FBH 3EBH 2EBH OUTPUT Modem control register MDC 3FCH 2FCH 3ECH 2ECH OUTPUT Line status register LST 3FDH 2FDH 3EDH 2EDH INPUT Modem status register MSR 3FEH 2FEH 3EEH 2EEH INPUT

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 bit này được đặt lên 1 thì giá trị ở thanh ghi cơ sở được truy xuất làm byte thấp củ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 thu phát.

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

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

Luận Văn Tốt Nghiệp 17 SVTH: Châu Thị Bích Nga

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 = 0 Bit 6 Cho phép cấm đường truyền nối tiếp1 : ngõ ra bị xoá trắng ; 0 : cấm Bit 7 1 : chọn hệ số chia;

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.

1 : DTR active; 0 : DTR inactive Bit 1 Request to send;

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

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

0 : Communication interrupt inactive Bit 4 Loopback feature

1 : Transmitter output looped back to receiver register

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.

Luận Văn Tốt Nghiệp 18 SVTH: Châu Thị Bích Nga

Bit Nội dung Bit 0 1 : Có dữ liệu trong bộ đệm nhận Bit 1 1 : Overrun error : dữ liệu bị chồng Bit 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ống Bit 6 1 : Thanh ghi dịch và thanh ghi phát trống

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

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 giao tiế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ười dù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ụng mộ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ệc dù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 đổi thô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.

Luận Văn Tốt Nghiệp 19 SVTH: Châu Thị Bích Nga

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

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 đóng vai trò như là tín hiệu hỗ trợ khi trao đổi thông tin và vì vậy không phải trong 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 áp HIGH Mức tín hiệu nhận và truyền qua chân RxD và TxD thông thường nằm trong khoảng –12V đến +12V Mức điện áp đối với mức HIGH nằm giữ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ệu thay đổi giữa năm và tám Ở cuối dòng dữ liệu còn có một bit dừng (Stop bit) để đặt lại trạng thái lối ra (-12V).

Luận Văn Tốt Nghiệp 20 SVTH: Châu Thị Bích Nga

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 per second _ 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ép truyền nhiều nhất từ 30 đến 1920 byte dữ liệu, vì vậy nhược điểm lớn nhất của cổng truyền nối tiếp là tốc độ truyền dữ liệu bị hạn chế.

CƠ LƯỢC AT89C51

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ới công nghệ bộ nhớ không bay hơi mật độ cao của hãng Atmel, và tương thích vớ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ủa Atmel là một micro-computer tuyệt vời với độ linh hoạt cao và giải quyết hiệu quả nhiều chương trình điều khiển ghi vào nó

Luận Văn Tốt Nghiệp 24 SVTH: Châu Thị Bích Nga

Sơ đồ khối của AT89C51

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

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

+ 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

Luận Văn Tốt Nghiệp 25 SVTH: Châu Thị Bích Nga

+ 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 là một port xuất/nhập song hướng cực máng hở 8 bit Nếu được sử dụng như là một ngõ xuất thì mỗi chân có thể kéo 8 ngõ vào TTL. Khi mức 1 được viết vào các chân của port 0, các chân này có thể được dùng như là các ngõ nhập tổng trở cao.

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ập trì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.

Luận Văn Tốt Nghiệp 26 SVTH: Châu Thị Bích Nga

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 4 ngõ nhập TTL Khi mức 1 được viết vào các chân của port 1, chúng được ké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éo xuố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ào TTL Khi các mức 1 được viết vào các chân của port 2 thì chúng được kéo lê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 qua cá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ình ngoà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" khi phá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 đặc biệ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ều khiển khi lập trình và kiểm tra Flash.

Port 3 là một port xuất-nhập song hướng 8 bit có điện trở pullup nội bên trong.

Các bộ đệm ngõ ra của port 3 có thể kéo hoặc cung cấp 4 ngõ vào TTL Khi các mức 1 được viết vào các chân của port 3 thì chúng được kéo lê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 3 (được kéo xuống qua các điện trở bên ngoài) sẽ cấp dòng IIL do có các điện trở pullup bên trong.

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

Chân Tên Các chức năng chuyển đổi

Luận Văn Tốt Nghiệp 27 SVTH: Châu Thị Bích Nga

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

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

Ngõ vào reset Một mức cao trên chân này khoảng hai chu kỳ máy trong khi bộ dao động đang chạy sẽ reset thiết bị.

ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi truy cập bộ nhớ ngoài Chân này cũng là ngõ nhập xung lập trình ( ) khi lập trình Flash.

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ỏ qua mỗ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 0 của SFR tại địa chỉ 8Eh Nếu bit này được set, ALE chỉ dược hoạt động khi có một lệnh MOVX hoặc MOVC Ngược lại, chân này được kéo lên cao bởi các điện trở pullup "nhẹ" Việc set bit cấm-ALE không có tác dụng khi bộ vi điều khiển đang ở chế độ thi hành ngoài.

Tổ chức bộ nhớ

8051/8031 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong; dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu.

Bộ nhớ bên trong bao gồm ROM và RAM trên chip, RAM trên chip bao gồm nhiều phần : phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt.

Hai đặc tính cần lưu ý là :

 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ữa cá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).

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ới mụ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ùng cá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 :

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ếp qua R0 hay R1 Ví dụ, hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn ở trên :

Luận Văn Tốt Nghiệp 30 SVTH: Châu Thị Bích Nga

Bộ nhớ chương trình được chọn qua PSEN

Bộ nhớ dữ liệu được chọn qua WR và RD

Bộ nhớ trên chip Bộ nhớ mở rộng

Tóm tắt các vùng bộ nhớ của 8031/8051

Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0, và lệnh thứ hai dùng địa chỉ trực tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy.

Luận Văn Tốt Nghiệp 31 SVTH: Châu Thị Bích Nga

RAM Địa chỉ bit Địa chỉ byte

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

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

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

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

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

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

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

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

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

CÁC THANH GHI CHỨC NĂNG ĐẶC

BIỆT Địa chỉ byte Địa chỉ bit không được địa chỉ hóa bit

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 đặc biệ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ợi của vi điều khiển nói chung Các bit có thể được đặt, xóa, AND, OR, với mộ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ừng bit làm đơn giản phần mềm xuất nhập từng bit.

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 được dùng Ví dụ, để đặt bit 67H, ta dùng lệnh sau :

Luận Văn Tốt Nghiệp 32 SVTH: Châu Thị Bích Nga

Chú ý rằng “địa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở “địa chỉ byte 2CH” Lệnh trên sẽ không tác động đến các bit khác ở địa chỉ này Các vi xử lý sẽ phải thi hành nhiệm vụ tương tự như sau :

MOV A, 2CH ; đọc cả byte

MOV 2CH,A ; ghi lại cả byte

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 (sau khi 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 byte thứ hai :

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

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 ghi chức năng đặc biệt (SFR) như được trình bày trong bảng.

Luận Văn Tốt Nghiệp 33 SVTH: Châu Thị Bích Nga

Lưu ý rằng không phải tất cả các địa chỉ đều được sử dụng, và các địa chỉ không được sử dụng có thể không được cung cấp trên con chip Các hành động đọc đến các địa chỉ này nói chung sẽ trả về các dữ liệu ngẫu nhiê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ẩm tươ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ủa RAM 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 Function Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú ý rằng hầu hế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ác SFR đượ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ất bit và byte Ví dụ lệnh sau : SETB 0E0H sẽ set bit 0 trong thanh ghi tích lũ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 thanh ghi tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là có hiệu quả.

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

Từ trạng thái chương trình (PSW : Program Status Word) ở địa chỉ D0H chứa các bit trạng thái như bảng tóm tắt sau :

Luận Văn Tốt Nghiệp 34 SVTH: Châu Thị Bích Nga

Bit Ký hiệu Địa chỉ Ý nghĩa

PSW.6 AC D6H Cờ nhớ phụ

PSW.4 RS1 D4H Bit 1 chọn bank thanh ghi

PSW.3 RS0 D3H Bit 0 chọn bank thanh ghi

Cờ nhớ (CY) có công dụng kép Thông thường nó được dùng cho các lệnh toán học : nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phép trừ Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh ADD A, #1 sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSW.

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

Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấ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 (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 phần mềm nếu cần Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy : SETB RS1

Luận Văn Tốt Nghiệp 35 SVTH: Châu Thị Bích Nga

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

Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có một phép toá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 định khô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.

Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân và chia Lệnh MUL AB sẽ nhân các giá trị không dấ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.

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ên ngă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 ra khỏ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 địa chỉ có thể truy xuất bằng địa chỉ gián tiếp Chúng là 128 byte đầu của 8051/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:

Trên 8051/8031 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM 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.

Luận Văn Tốt Nghiệp 36 SVTH: Châu Thị Bích Nga

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ưu trữ 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ọi chươ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.

Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở địa chỉ 82H (DPL : byte thấp) và 83H (DPH : byte cao).

Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H :

Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy Lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bit 1000H vào con trỏ dữ liệu Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR

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

Bảo vệ bộ nhớ

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 đặc trưng thêm vào được liệt kê trong bảng dưới đây (với LB1, LB2, LB3 là các bit khóa tương ứng).

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ốt lạ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.

Khi bit khoá 1 được lập trình, mức logic tại chân đượ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ị

Luận Văn Tốt Nghiệp 40 SVTH: Châu Thị Bích Nga

3 GF1 Bit cờ đa dụng 1.

2 GF0 Bit cờ đa dụng 0.

1 PD Giảm công suất, được set để kích hoạt mode giảm công suất, chỉ thoát khi reset

0 IDL Mode chờ, set để kích hoạt mode chờ, chỉ thoát khi có ngắt hoặc reset hệ thống.

7 SMOD Bit gấp đôi tốc đọ baud, nếu được set thì tốc độ baud sẽ tăng gấp đôi trong các mode 1,2 và 3 của port nối tiếp.

5 – Không định nghĩa. được chốt của 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.

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

8051/8031 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ 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ực hiện chuyển đổi song song sang nối tiếp đối 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.

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

Port nối tiếp cho hoạt động song công (full duplex : thu và phát đồng thờ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ất trướ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 đến port 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.

Luận Văn Tốt Nghiệp 41 SVTH: Châu Thị Bích Nga

Xung nhịp tốc độ baud

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

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ệc phát hoặc thu ký tự Các bit trạng thái có thể được kiểm tra bằng phần mềm hoặ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 thanh ghi 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.

Luận Văn Tốt Nghiệp 42 SVTH: Châu Thị Bích Nga

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 (đặt bằng timer).

1 0 2 UART 9 bit Cố định (F OSC chia cho 12 hoặc 64).

1 1 3 UART 9 bit Thay đổi (đặt bằng timer).

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

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

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

SCON.5 SM2 9DH Bit 2 của chế độ port nối tiếp Cho phép truyền 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. SCON.4 REN 9CH Cho phép bộ thu phải được đặt lên 1 để thu (nhận) các ký tự.

SCON.3 TB8 9BH Bit 8 phát, bit thứ 9 được phát trong các chế độ 2 và 3; được đặt và xóa bằng phần mềm.

SCON.2 RB8 9AH Bit 8 thu, bit thứ 9 thu được.

SCON.1 TI 99H Cờ ngắt phát Đặt lên 1 khi kết thúc phát ký tự; được xóa bằng phần mềm.

SCON.0 RI 98H Cờ ngắt thu Đặt lên 1 khi kết thúc thu ký tự; được xóa bằng phần mềm.

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 cho chế độ 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ép truyề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ối tiế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ủa SCON, đưa port nối tiếp vào chế độ thanh ghi dịch 8 bit Dữ liệu nối tiếp vào và ra qua RXD và TXD xuất xung nhịp dịch 8 bit được phát hoặc thu với bit đầu tiên là LSB Tốc độ baud cố định ở 1/12 tần số dao động trên chip.

Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF Dữ liệu được dịch ra ngoài trên đường RXD (P3.0) với các xung nhị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.

Luận Văn Tốt Nghiệp 43 SVTH: Châu Thị Bích Nga

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à bit ngắ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 port nối tiếp xảy ra ở cạnh dương của TXD.

Luận Văn Tốt Nghiệp 44 SVTH: Châu Thị Bích Nga

Bit dữ liệu hợp lệ

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ất của 8051/8031 IC thanh ghi dịch nối tiếp ra song song có thể được nối vào cá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 bit với tốc độ baud thay đổi được Một UART (Universal Asynchronous Receiver/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ức thấ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 trong SCON Trong 8051/8031 chế dộ baud được đặt bằng tốc độ báo tràn của

Tạo xung nhịp và đồng bộ hóa các thanh ghi dịch của port nối tiếp trong các chế độ 1, 2 và 3 được thiết lập bằng bộ đếm 4 bit chia cho 16, ngõ ra là xung nhịp tốc độ baud Ngõ vào của bộ đếm này được chọn qua phần mềm

Luận Văn Tốt Nghiệp 45 SVTH: Châu Thị Bích Nga

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

RTX51 TINY

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

8051/8031 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ 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ực hiện chuyển đổi song song sang nối tiếp đối 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.

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

Port nối tiếp cho hoạt động song công (full duplex : thu và phát đồng thờ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ất trướ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 đến port 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.

Luận Văn Tốt Nghiệp 41 SVTH: Châu Thị Bích Nga

Xung nhịp tốc độ baud

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

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ệc phát hoặc thu ký tự Các bit trạng thái có thể được kiểm tra bằng phần mềm hoặ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 thanh ghi 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.

Luận Văn Tốt Nghiệp 42 SVTH: Châu Thị Bích Nga

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 (đặt bằng timer).

1 0 2 UART 9 bit Cố định (F OSC chia cho 12 hoặc 64).

1 1 3 UART 9 bit Thay đổi (đặt bằng timer).

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

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

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

SCON.5 SM2 9DH Bit 2 của chế độ port nối tiếp Cho phép truyền 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. SCON.4 REN 9CH Cho phép bộ thu phải được đặt lên 1 để thu (nhận) các ký tự.

SCON.3 TB8 9BH Bit 8 phát, bit thứ 9 được phát trong các chế độ 2 và 3; được đặt và xóa bằng phần mềm.

SCON.2 RB8 9AH Bit 8 thu, bit thứ 9 thu được.

SCON.1 TI 99H Cờ ngắt phát Đặt lên 1 khi kết thúc phát ký tự; được xóa bằng phần mềm.

SCON.0 RI 98H Cờ ngắt thu Đặt lên 1 khi kết thúc thu ký tự; được xóa bằng phần mềm.

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 cho chế độ 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ép truyề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ối tiế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ủa SCON, đưa port nối tiếp vào chế độ thanh ghi dịch 8 bit Dữ liệu nối tiếp vào và ra qua RXD và TXD xuất xung nhịp dịch 8 bit được phát hoặc thu với bit đầu tiên là LSB Tốc độ baud cố định ở 1/12 tần số dao động trên chip.

Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF Dữ liệu được dịch ra ngoài trên đường RXD (P3.0) với các xung nhị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.

Luận Văn Tốt Nghiệp 43 SVTH: Châu Thị Bích Nga

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à bit ngắ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 port nối tiếp xảy ra ở cạnh dương của TXD.

Luận Văn Tốt Nghiệp 44 SVTH: Châu Thị Bích Nga

Bit dữ liệu hợp lệ

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ất của 8051/8031 IC thanh ghi dịch nối tiếp ra song song có thể được nối vào cá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 bit với tốc độ baud thay đổi được Một UART (Universal Asynchronous Receiver/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ức thấ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 trong SCON Trong 8051/8031 chế dộ baud được đặt bằng tốc độ báo tràn của

Tạo xung nhịp và đồng bộ hóa các thanh ghi dịch của port nối tiếp trong các chế độ 1, 2 và 3 được thiết lập bằng bộ đếm 4 bit chia cho 16, ngõ ra là xung nhịp tốc độ baud Ngõ vào của bộ đếm này được chọn qua phần mềm

Luận Văn Tốt Nghiệp 45 SVTH: Châu Thị Bích Nga

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

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

Os-create-task Ghi một tác vụ vào danh sách thực hiện

Os-delete_task Xóa một tác vụ khỏi danh sách thực hiện

Os_send_signal Gởi tín hiệu đến một tác vụ khác từ một ngắt Os- clear_signal Xóa tín hiệu đã đuợc gởi

Os_running_task_id Trở về tác vụ thứ ID từ tác vụ hiện hành

Os-wait Tạm dừng tác vụ hiện hành và đợi một hoặc vài sự kiện như: 1 khoảng thời gian qui định, khoảng thời gian nghỉ hoặc tín hiệu từ một tác vụ khác hay một ngắt.

Os-wait1 Tạm dừng tác vụ hiện hành và đợi một sự kiện là tín hiệu từ một tác vụ khác.

Os-wait2 Tạm dừng tác vụ hiện hành và đợi một hoặc vài sự kiện như : 1khoảng thời gian qui định, khoảng thời gian nghỉ hoặc tín hiệu từ một tác vụ khác hay một ngắt.

Luận Văn Tốt Nghiệp 58 SVTH: Châu Thị Bích Nga

#include char os_create_task (unsigned char task_id) /*tác vụ thứ id*/

#include char os_delete_task (insigned char task_id)

#include char os_send_signal (insigned char task_id)

#include char os_clear_signal (insigned char task_id)

Hàm Os_running_task_id:

#include char os_running_task_id (void)

#include char os_wait (unsigned char event_sel, /*event: sự kiện chờ*/ unsigned char ticks, /*khoảng thời gian chờ*/ unsigned int dummy); /*unused argument*/ các hằng số sự kiên là:

K_IVL đợi một khoảng thời gian qui định

K_SIG đợi một tín hiệu

K_TMO đợi một khoảng thời gian nghỉ

#include char os_wait1 (unsigned char event_sel); /*event: sự kiện chờ*/ Hằng số sự kiện chỉ là K_SIG (đợi một tín hiệu)

Luận Văn Tốt Nghiệp 59 SVTH: Châu Thị Bích Nga

Os-wait2: char os_wait (unsigned char event_sel, /*event: sự kiện chờ*/ unsigned char ticks); /*khoảng thời gian chờ*/ các hằng số sự kiên là:

K_IVL đợi một khoảng thời gian qui định

K_SIG đợi một tín hiệu

K_TMO đợi một khoảng thời gian nghỉ

Luận Văn Tốt Nghiệp 60 SVTH: Châu Thị Bích Nga

Demo_kit là một ứng dụng nhỏ của chương trình nhằm mô tả một số hoạt động của các lệnh trong tập lệnh và các thủ tục Protocol được xây dựng trong chương trình Board mạch thực hiện cho chương trình Demo_kit gồm các khối sau:

Luận Văn Tốt Nghiệp 61 SVTH: Châu Thị Bích Nga

Sơ đồ khối board Demo-

KHỐI XỬ LÝ TRUNG TÂM (P)

Khối hiển thị bao gồm 9 led 7đoạn ( loại catod chung ) xếp thành 3 dãy (một dãy 3 con) để hiển thị các thông số cần quan sát

IC chốt 74573 xuất các giá trị cần hiển thị cho cả 9 led IC này giao tiếp với vi xử lý qua port 0, nhóm điện trở RN1 cần thiết vì port 0 có ngõ ra cực thu hở.

Luận Văn Tốt Nghiệp 62 SVTH: Châu Thị Bích Nga

IC 4094 được sử dụng với mục đích chọn led hiển thị Đây là IC với chức năng là thanh ghi dịch 8 bit (chuyển đổi dữ liệu từ nối tiếp sang song song) Lý do chính cho việc sử dụng IC 4094 trong trường hợp này là tiết kiệm các chân giao tiếp với vi xử lý Để xác lập mức tích cực cho led cần hiển thị ta lần lượt dịch vào các bit 0 hay 1, trong trường hợp sử dụng led là catod chung (như trên hình vẽ ) để chọn led sáng ta dịch vào bit 0 (tích cực mức thấp ).

Bảng sự thật của thanh ghi dịch 8 bit 4094:

Inputs Parallel out Serial out

CLK OE STR D Q1 … Q8 QS /QS

Q7n: trạng thái của Q7 trước khi có xung clock nc: no connect

IC ULN2803 dùng để đệm dòng.

II KHỐI GIAO TIẾP A/D VÀ D/A:

Luận Văn Tốt Nghiệp 63 SVTH: Châu Thị Bích Nga

Khối giao tiếp A/D có nhiệm vụ đọc về từ ngõ input các giá trị analog đo đạt được từ các đối tượng điều khiển bên ngoài (tín hiệu từ cảm biến, giá trị điện áp ) được chuyển đổi thành số digital để đưa vào các thanh ghi của vi xử lý.

ADC 0809 là thiết bị chuyển đổi analog sang digital 8 bit, multiplex 8 kênh và tương thích với bộ vi xử lý ADC0809 sử dụng kỹ thuật chuyển đổi A/D xấp xỉ liên tiếp.

- Giao tiếp dễ dàng với tất cả các bộ vi xử lý

- Hoạt động với thang đo tỷ lệ với 5VDC hoặc điện áp chuẩn có thể điều chỉnh

- Không cần chỉnh không hay toàn thang

- Multiplex 8 kênh với địa chỉ logic

Luận Văn Tốt Nghiệp 64 SVTH: Châu Thị Bích Nga

- Tầm điện áp vào 0-5V với nguồn cung cấp đơn 5V.

- Ngõ ra phù hợp vói mức điện áp TTL.

- Sai số không điều chỉnh được tổng cộng : ± 1 LSB

- Nguồn cung cấp đơn : 5VDC.

 Đặc tính kỹ thuật: hiệu Ký Thông số Điều kiện Tối thiểu Điển hình Tối đa Đơn vị

V REF+ Điện áp cao nhất của thang đo V CC V CC +0.1 V

V REF- Điện áp thấp nhất của thang đo -0.1 0 V

I IN Dòng vào f CLK d0KHz -2 ± 0.5 2 A

V IN(1) Điện áp vào logic

V IN(0) Điện áp vào logic

V OUT(1) Điện áp ra logic 1 I OUT =-360uA V CC -0.4 V

V OUT(0) Điện áp ra logic 0 I OUT = 1.6mA 0.45 V f CLK Tần số xung clock 10 640 1280 KHz t EOC Thời gian delay

EOC (Xem giản đồ xung) 0 8 +2 s Chu kỳ clock t C Thời gian biến đổi F CLK d0KHz 90 100 116 s

Luận Văn Tốt Nghiệp 65 SVTH: Châu Thị Bích Nga t WS Độ rộng xung Start tối thiểu (Xem giản đồ thời gian) 100 200 Ns t ALE Độ rộng xung

ALE tối thiểu (Xem giản đồ thời gian) 100 200 ns

Mỗi kênh ngõ vào riêng biệt được chọn bằng cách giải mã địa chỉ theo bảng sau:

Keânh analog được chọn Địa chỉ

IN7 1 1 1 Địa chỉ được chốt vào bộ giải mã bên trong tại cạnh lên của xung chốt địa chỉ (ALE). Đặc tính chuyển đổi:

Thanh ghi xấp xỉ liên tiếp của bộ biến đổi A/D được reset tại cạnh lên của xung start (bắt đầu chuyển đổi) Sự cguyển đổi được bắt đầu tại cạnh xuống của xung start Quá trình chuyển đổi sẽ bị ngắt nếu nhận một xung start mới Sự chuyển đổi liên tiếp có thể được thực hiện bằng cách nối ngõ ra EOC (End Of Convert – Kết thúc chuyển đổi) vào ngõ start Nếu sử dụng chế độ này, một xung start bên ngoài phải được cung cấp sau khi bật nguồn Xung EOC sẽ xuống mức thấp sau khi cạnh lên của xung start từ 0 đến 8 xung clock và lên mức cao khi việc chuyển đổi đã xong.

Data ngõ ra là một số nguyên N nằm trong tầm:

Luận Văn Tốt Nghiệp 66 SVTH: Châu Thị Bích Nga

N= x 256  độ chính xác tuyệt đối

Mạch tạo dao động cho ADC0809:

Biết tần số xung clock của ADC0809 nằm trong khoảng từ 10KHz đến 1280 KHz, nên tần số xung clock trong mạch được lấy từ tần số dao động chuẩn của thạch anh, đưa qua IC đếm 74393 với công dụng là IC chia tần số Các ngõ ra QA, QB, QC, QD lần lượt chia tần số xung clock vào với

2, 4, 8, 16 Vậy tần số ra 74393 (vào xung clock ADC 0809) là:

Khối D/A giao tiếp với vi xử lý với nhiệm vụ chuyển đổi các giá trị digital trong các thanh ghi của vi xử lý thành các giá trị analog và xuất ra các đối tượng điều khiển bên ngoài Họ DAC0808 (DAC0808/ DAC0807/ DAC0806) là bộ biến đổi digital sang analog 8 bit, có thời gian xử lý dòng ra toàn thang là 150ns, công thức tiêu thụ chỉ 33mw với nguồn 5V.

Họ DAC0808 giao tiếp trực tiếp với các mức logic thông dụng như TTL, DTL hoặc CMOS.

- Độ chính xác tương đối :0.19% (8 bit) với DAC0808

- Độ chính xác 6-bit và 7-bit với DAC0806 và DAC0807

- Thời gian xử lý nhanh : 150 ns

- Ngõ vào digital không đảo tương thích TTL và CMOS

- Tốc độ quét cao : 8 mA/s

- Tầm điện áp cung cấp :  4.5V đến  18V

- Công suất tiêu thụ thấp : 33 mW với nguồn  5V

IV Trị số tối đa

- Nguồn cung cấp : VCC=+ 18 VDC

Luận Văn Tốt Nghiệp 67 SVTH: Châu Thị Bích Nga

- Điện áp ngõ vào digital (V5-V12):- 10V DC đến +18V DC

- Điện áp ngõ ra được dùng (V0):- 11 V DC đến +18 V DC

- Điện áp vào chuẩn (V14,V15) : VCC,VEE

Dòng điện chuẩn được tạo ra bằng một trong hai cách : chuẩn dương hoặc chuẩn âm

Dòng điện vào chuẩn I14, phải luôn luôn chạy vào chân 14, bất chấp cách bố trí hoặc cực tính nguồn áp chuẩn Cách kết nối với áp dương như trên hình a Với tín hiệu chuẩn luỡng cực, R15 có thể được nối với nguồn âm Trị số của tụ bù phải tăng khi R14 tăng để duy trì lề pha thích hợp Ví dụ với R15 là 1,2.5 và 5K thì trị tối thiểu của tụ là 15,37 và 75pF Tụ có thể nối đến VEE hoặc đất

Aùp chuẩn âm cĩ thể được sử dụng nếu R14 được nối đất và chuẩn được nối đến R15 như hình b Phương pháp này có thuận lợi chính là tổng trở vào cao (tại chân 15).

DAC0808 là bộ biến đổi A/D tạo ra dòng điện có trị số tuỳ theo giá trị digital và dòng điện chuẩn ngõ vào Dòng điện chuẩn có thể có trị số cố định hoặc thay đổi từ gần 0 đến 4 mA Dòng ngõ ra toàn thang (IFS – Full scale) là một hàm tuyến tính của dòng chuẩn và cho bởi :

Luận Văn Tốt Nghiệp 68 SVTH: Châu Thị Bích Nga

R15 (thông thường bằng R14) được sử dụng để loại bỏ sai số dòng phân cực R15 có thể bỏ đi, khi đó chỉ tăng sai số một ít.

Khi dùng điện áp chuẩn DC thì nên sử dụng tụ bypasss xuống đất. III KHỐI RS-232:

Khối này thực hiện việc giao tiếp dữ liệu giữa máy tính PC và vi xử lý sử dụng IC MAX 232 qua cổng nối tiếp của máy tính trên hai đường TXD và RXD Ta thấy rằng MAX232 cần có 4 tụ ngoài (mắc vào giữa C1+ và C1-, C2+ và C2-, V+ vào nguồn dương, V- vào đất)để biến đổi điện áp từ 0V đến 5V thành điện áp -12V đến +12V phù hợp cho truyền thông theo chuẩn RS-232 Ngoài ra, bên trong MAX 232 có 4 bộ khuếch đại đảo nhằm chuyển từ mức logic TTL ra chuẩn RS-232 và ngược lại.

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 :

Luận Văn Tốt Nghiệp 69 SVTH: Châu Thị Bích Nga

IOUT= I256 REF x giá trị digital ngõ vào

Luận Văn Tốt Nghiệp 70 SVTH: Châu Thị Bích Nga

Sơ đồ bên trong IC MAX-232

BOARD DEMO-KIT

Khối hiển thị

Khối hiển thị bao gồm 9 led 7đoạn ( loại catod chung ) xếp thành 3 dãy (một dãy 3 con) để hiển thị các thông số cần quan sát

IC chốt 74573 xuất các giá trị cần hiển thị cho cả 9 led IC này giao tiếp với vi xử lý qua port 0, nhóm điện trở RN1 cần thiết vì port 0 có ngõ ra cực thu hở.

Luận Văn Tốt Nghiệp 62 SVTH: Châu Thị Bích Nga

IC 4094 được sử dụng với mục đích chọn led hiển thị Đây là IC với chức năng là thanh ghi dịch 8 bit (chuyển đổi dữ liệu từ nối tiếp sang song song) Lý do chính cho việc sử dụng IC 4094 trong trường hợp này là tiết kiệm các chân giao tiếp với vi xử lý Để xác lập mức tích cực cho led cần hiển thị ta lần lượt dịch vào các bit 0 hay 1, trong trường hợp sử dụng led là catod chung (như trên hình vẽ ) để chọn led sáng ta dịch vào bit 0 (tích cực mức thấp ).

Bảng sự thật của thanh ghi dịch 8 bit 4094:

Inputs Parallel out Serial out

CLK OE STR D Q1 … Q8 QS /QS

Q7n: trạng thái của Q7 trước khi có xung clock nc: no connect

IC ULN2803 dùng để đệm dòng.

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

Luận Văn Tốt Nghiệp 63 SVTH: Châu Thị Bích Nga

Khối giao tiếp A/D có nhiệm vụ đọc về từ ngõ input các giá trị analog đo đạt được từ các đối tượng điều khiển bên ngoài (tín hiệu từ cảm biến, giá trị điện áp ) được chuyển đổi thành số digital để đưa vào các thanh ghi của vi xử lý.

ADC 0809 là thiết bị chuyển đổi analog sang digital 8 bit, multiplex 8 kênh và tương thích với bộ vi xử lý ADC0809 sử dụng kỹ thuật chuyển đổi A/D xấp xỉ liên tiếp.

- Giao tiếp dễ dàng với tất cả các bộ vi xử lý

- Hoạt động với thang đo tỷ lệ với 5VDC hoặc điện áp chuẩn có thể điều chỉnh

- Không cần chỉnh không hay toàn thang

- Multiplex 8 kênh với địa chỉ logic

Luận Văn Tốt Nghiệp 64 SVTH: Châu Thị Bích Nga

- Tầm điện áp vào 0-5V với nguồn cung cấp đơn 5V.

- Ngõ ra phù hợp vói mức điện áp TTL.

- Sai số không điều chỉnh được tổng cộng : ± 1 LSB

- Nguồn cung cấp đơn : 5VDC.

 Đặc tính kỹ thuật: hiệu Ký Thông số Điều kiện Tối thiểu Điển hình Tối đa Đơn vị

V REF+ Điện áp cao nhất của thang đo V CC V CC +0.1 V

V REF- Điện áp thấp nhất của thang đo -0.1 0 V

I IN Dòng vào f CLK d0KHz -2 ± 0.5 2 A

V IN(1) Điện áp vào logic

V IN(0) Điện áp vào logic

V OUT(1) Điện áp ra logic 1 I OUT =-360uA V CC -0.4 V

V OUT(0) Điện áp ra logic 0 I OUT = 1.6mA 0.45 V f CLK Tần số xung clock 10 640 1280 KHz t EOC Thời gian delay

EOC (Xem giản đồ xung) 0 8 +2 s Chu kỳ clock t C Thời gian biến đổi F CLK d0KHz 90 100 116 s

Luận Văn Tốt Nghiệp 65 SVTH: Châu Thị Bích Nga t WS Độ rộng xung Start tối thiểu (Xem giản đồ thời gian) 100 200 Ns t ALE Độ rộng xung

ALE tối thiểu (Xem giản đồ thời gian) 100 200 ns

Mỗi kênh ngõ vào riêng biệt được chọn bằng cách giải mã địa chỉ theo bảng sau:

Keânh analog được chọn Địa chỉ

IN7 1 1 1 Địa chỉ được chốt vào bộ giải mã bên trong tại cạnh lên của xung chốt địa chỉ (ALE). Đặc tính chuyển đổi:

Thanh ghi xấp xỉ liên tiếp của bộ biến đổi A/D được reset tại cạnh lên của xung start (bắt đầu chuyển đổi) Sự cguyển đổi được bắt đầu tại cạnh xuống của xung start Quá trình chuyển đổi sẽ bị ngắt nếu nhận một xung start mới Sự chuyển đổi liên tiếp có thể được thực hiện bằng cách nối ngõ ra EOC (End Of Convert – Kết thúc chuyển đổi) vào ngõ start Nếu sử dụng chế độ này, một xung start bên ngoài phải được cung cấp sau khi bật nguồn Xung EOC sẽ xuống mức thấp sau khi cạnh lên của xung start từ 0 đến 8 xung clock và lên mức cao khi việc chuyển đổi đã xong.

Data ngõ ra là một số nguyên N nằm trong tầm:

Luận Văn Tốt Nghiệp 66 SVTH: Châu Thị Bích Nga

N= x 256  độ chính xác tuyệt đối

Mạch tạo dao động cho ADC0809:

Biết tần số xung clock của ADC0809 nằm trong khoảng từ 10KHz đến 1280 KHz, nên tần số xung clock trong mạch được lấy từ tần số dao động chuẩn của thạch anh, đưa qua IC đếm 74393 với công dụng là IC chia tần số Các ngõ ra QA, QB, QC, QD lần lượt chia tần số xung clock vào với

2, 4, 8, 16 Vậy tần số ra 74393 (vào xung clock ADC 0809) là:

Khối D/A giao tiếp với vi xử lý với nhiệm vụ chuyển đổi các giá trị digital trong các thanh ghi của vi xử lý thành các giá trị analog và xuất ra các đối tượng điều khiển bên ngoài Họ DAC0808 (DAC0808/ DAC0807/ DAC0806) là bộ biến đổi digital sang analog 8 bit, có thời gian xử lý dòng ra toàn thang là 150ns, công thức tiêu thụ chỉ 33mw với nguồn 5V.

Họ DAC0808 giao tiếp trực tiếp với các mức logic thông dụng như TTL, DTL hoặc CMOS.

- Độ chính xác tương đối :0.19% (8 bit) với DAC0808

- Độ chính xác 6-bit và 7-bit với DAC0806 và DAC0807

- Thời gian xử lý nhanh : 150 ns

- Ngõ vào digital không đảo tương thích TTL và CMOS

- Tốc độ quét cao : 8 mA/s

- Tầm điện áp cung cấp :  4.5V đến  18V

- Công suất tiêu thụ thấp : 33 mW với nguồn  5V

IV Trị số tối đa

- Nguồn cung cấp : VCC=+ 18 VDC

Luận Văn Tốt Nghiệp 67 SVTH: Châu Thị Bích Nga

- Điện áp ngõ vào digital (V5-V12):- 10V DC đến +18V DC

- Điện áp ngõ ra được dùng (V0):- 11 V DC đến +18 V DC

- Điện áp vào chuẩn (V14,V15) : VCC,VEE

Dòng điện chuẩn được tạo ra bằng một trong hai cách : chuẩn dương hoặc chuẩn âm

Dòng điện vào chuẩn I14, phải luôn luôn chạy vào chân 14, bất chấp cách bố trí hoặc cực tính nguồn áp chuẩn Cách kết nối với áp dương như trên hình a Với tín hiệu chuẩn luỡng cực, R15 có thể được nối với nguồn âm Trị số của tụ bù phải tăng khi R14 tăng để duy trì lề pha thích hợp Ví dụ với R15 là 1,2.5 và 5K thì trị tối thiểu của tụ là 15,37 và 75pF Tụ có thể nối đến VEE hoặc đất

Aùp chuẩn âm cĩ thể được sử dụng nếu R14 được nối đất và chuẩn được nối đến R15 như hình b Phương pháp này có thuận lợi chính là tổng trở vào cao (tại chân 15).

DAC0808 là bộ biến đổi A/D tạo ra dòng điện có trị số tuỳ theo giá trị digital và dòng điện chuẩn ngõ vào Dòng điện chuẩn có thể có trị số cố định hoặc thay đổi từ gần 0 đến 4 mA Dòng ngõ ra toàn thang (IFS – Full scale) là một hàm tuyến tính của dòng chuẩn và cho bởi :

Luận Văn Tốt Nghiệp 68 SVTH: Châu Thị Bích Nga

R15 (thông thường bằng R14) được sử dụng để loại bỏ sai số dòng phân cực R15 có thể bỏ đi, khi đó chỉ tăng sai số một ít.

Khối RS-232

Khối này thực hiện việc giao tiếp dữ liệu giữa máy tính PC và vi xử lý sử dụng IC MAX 232 qua cổng nối tiếp của máy tính trên hai đường TXD và RXD Ta thấy rằng MAX232 cần có 4 tụ ngoài (mắc vào giữa C1+ và C1-, C2+ và C2-, V+ vào nguồn dương, V- vào đất)để biến đổi điện áp từ 0V đến 5V thành điện áp -12V đến +12V phù hợp cho truyền thông theo chuẩn RS-232 Ngoài ra, bên trong MAX 232 có 4 bộ khuếch đại đảo nhằm chuyển từ mức logic TTL ra chuẩn RS-232 và ngược lại.

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 :

Luận Văn Tốt Nghiệp 69 SVTH: Châu Thị Bích Nga

IOUT= I256 REF x giá trị digital ngõ vào

Luận Văn Tốt Nghiệp 70 SVTH: Châu Thị Bích Nga

Sơ đồ bên trong IC MAX-232

Các ngõ ra output của kit vi xử lý được nối với các Rơle để điều khiển đóng ngắt các thiết bị điện Trong từng ứng dụng cụ thể các rơle sẽ được kết nối đến các đối tượng cần điều khiển Cũng như khối hiển thị, để tiết kiệm các chân vi xử lý các tín hiệu điều khiển rơle được lấy từ 1 chân port của vi xử lý và dịch vào các rơle qua thanh ghi dịch 8 bit 4094 (chuyển dữ liệu từ dạng nối tiếp sang song song) dùng IC đệm ULN2803.

Khối input bao gồm 4 nút nhấn và 4 đầu vào tự do (lấy tín hiệu từ bên ngoài vào có cách ly bởi PC817 ) Ngược với khối hiển thị và rơle, các ngõ vào input được nối qua IC 4021 cũng là một loại thanh ghi dịch 8 bit nhưng chuyển dữ liệu vào từ dạng song song sang nối tiếp Các ngõ vào input được

Luận Văn Tốt Nghiệp 71 SVTH: Châu Thị Bích Nga

+12V -12V đọc về từng bit theo xung clock của thanh ghi dịch 4021 và được chuyển vào chân P3.2 của vi xử lý.

Luận Văn Tốt Nghiệp 72 SVTH: Châu Thị Bích Nga

Khối input

Khối input bao gồm 4 nút nhấn và 4 đầu vào tự do (lấy tín hiệu từ bên ngoài vào có cách ly bởi PC817 ) Ngược với khối hiển thị và rơle, các ngõ vào input được nối qua IC 4021 cũng là một loại thanh ghi dịch 8 bit nhưng chuyển dữ liệu vào từ dạng song song sang nối tiếp Các ngõ vào input được

Luận Văn Tốt Nghiệp 71 SVTH: Châu Thị Bích Nga

+12V -12V đọc về từng bit theo xung clock của thanh ghi dịch 4021 và được chuyển vào chân P3.2 của vi xử lý.

Luận Văn Tốt Nghiệp 72 SVTH: Châu Thị Bích Nga

Phần 1: TẬP LỆNH

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

Việc thu thập dữ liệu và điều khiển từ xa là một vấn đề đáng được quan tâm trong lĩnh vực điều khiển tự động Tuy nhiên, thật phiền hà nếu như không có một sự thống nhất chung về câu lệnh trong quá trình trao đổi thông tin Vì thế, một phần nội dung chính của đề tài là xây dựng được một tập lệnh trong giao tiếp dữ liệu giữa máy tính với vi xử lý và sử dụng được nó Việc xây dựng tập lệnh giao tiếp RS-232 này được xem như một mong muốn tạo ra một câu lệnh chung trong giao tiếp dữ liệu giữa máy tính và vi xử lý về mặt ngôn ngữ. Đây là một phương tiện giao tiếp giữa máy tính và vi xử lý, nhằm giúp cho người sử dụng không phải mất nhiều thời gian lập trình lại từ đầu mỗi khi muốn thực hiện vấn đề giao tiếp mà việc trao đổi thông tin vẫn có thể xảy ra dễ dàng thông qua việc sử dụng tập lệnh này.

Tập lệnh được xây dựng bao gồm các lệnh xuất nhập đầy đủ các dạng tín hiệu như: tín hiệu dạng mức, tín hiệu dạng xung, tín hiệu dạng analog/digital giúp việc trao đổi thông tin không bị giới hạn và đối tượng điều khiển (từ kit vi xử lý) cũng được phong phú hơn Ngoài ra, tập lệnh còn có một số lệnh điều khiển và quan sát quá trình hoạt động của hệ thống như: biến cài đặt dạng sóng ngõ ra (Kx), counter (Cx), dữ liệu (Dx), biến trạng thái xác lập chế độ hoạt động từ PC hay từ KIT (Sx) và biến thực thi hiển thị chế độ hoạt động RUN/STOP (Mx) giúp cho quá trình hoạt động của hệ thống diễn ra một cách chặt chẽ, dễ quan sát và dễ quản lý hơn.

Nội dung tập lệnh

Các lệnh được xây dựng trong tập lệnh giao tiếp RS-232 này nhìn chung chỉ bao gồm các lệnh giao tiếp dữ liệu là xuất và nhập Đối với các lệnh gởi dữ liệu về máy tính (PC): nội dung dữ liệu được kit vi xử lý thu thập từ các đối tượng điều khiển bên ngoài ví dụ như giá trị diện áp, xung điều khiển hoặc các giá trị đo được từ cảm biến v.v… và đưa vào các vùng địa chỉ định sẵn tùy thuộc vào dạng của tín hiệu thu vào (dạng mức, xung hay A/D) và gởi đến PC mỗi khi có yêu cầu Đối với các lệnh gởi dữ liệu từ PC đến vi xử lý: nội dung dữ liệu nhận về từ PC, ví dụ như các thông số điều khiển được cài đặt sẵn, cũng được đưa vào các vùng địa chỉ riêng ứng với các dạng dữ liệu nhận vào Các giá trị dữ liệu này có thể được dùng để điều khiển các đối tượng bên ngoài khác tùy thuộc vào

Luận Văn Tốt Nghiệp 73 SVTH: Châu Thị Bích Nga ứng dụng cụ thể của chương trình Các lệnh không mang dữ liệu được PC gởi đến vi xử lý là các lệnh yêu cầu vi xử lý gởi dữ liệu, các lệnh không mang dữ liệu từ vi xử lý gởi về

PC là các lệnh trả lời đã nhận được nội dung PC vừa gởi vì vi xử lý không có chức năng yêu cầu dữ liệu

1 Bảng mô tả các vùng địa chỉ của board VXL:

Stt Vùng địa chỉ Số byte Dạng dữ liệu Mô tả

1 I0-I1 2x2 2 byte dạng ASCII Input mức-16 ngõ vào(bit)

2 N0-N1 2x5 5 byte dạng ASCII Input xung-2 ngõ vào(99.999Hz max)

3 Q0-Q1 2x5 5 byte dạng ASCII Ngõ vào A/D – 2 ngõ vào

4 U0-U1 2x5 5 byte dạng ASCII Ngõ vào A/D - 2 ngõ vào

5 O0-O1 2x2 2 byte dạng ASCII Output mức-16 ngõ ra(bit)

6 P0-P1 2x5 5 byte dạng ASCII Output xung-2 ngõ ra (99.99Hz max)

7 A0-A1 2x5 5 byte dạng ASCII Ngõ ra D/A-2 ngỏ ra (99.999max)

8 K0-K7 8x2 2 byte dạng ASCII Biến cài đặt

10 D0-D7 8x2 2 byte dạng ASCII Dữ liệu

11 S0-S7 8x1 1 byte dạng ASCII Biến trạng thái

12 M0-M7 8x1 1 byte dạng ASCII Biến thực thi

2 Bảng mô tả các lệnh chuẩn:

Stt Lệnh từ PC Phản hồi từ VXL Mô tả(cho PC)

Ix’B’ Đọc ngõ vào các Digital input. x=0hay1(dạng ASCII)

Nx’BBBBB’ Đọc ngõ vào các puls Input. x=0hay1(dạng ASCII)

3 Q Q0’BBBBB’Q1’BBBBB’ Đọc ngõ vào các A/D Input (đơn

Luận Văn Tốt Nghiệp 74 SVTH: Châu Thị Bích Nga

Qx Qx’BBBBB’ cực) x=0 hay 1 (dạngASCII)

Ux’BBBBB’ Đọc ngõ vào các A/D Input (lưỡng cực) x=0 hay 1 (dạngASCII)

5 Ox’B’ Ox Xuất ngõ ra các Digital Output x=0 hay 1 (dạng ASCII)

 Px Xuất ngõ ra các PWM x=0 hay 1

 Ax Xuất ngõ ra các D/A x=0 hay 1

8 Kx Kx’BB’ Đọc ngõ vào biến cài đặt.x=0 đến 7

9 Cx Cx’BBBB’ Đọc ngõ vào giá trị counter x=0 đến

10 D’BB’x Dx Xuất dữ liệu ra.x=0 đến 7 (dạng

11 Sx Sx’B’ Đọc ngõ vào biến trạng thái x=0 đến

12 Mx’B’ Mx Xuất ngõ ra biến thực thi.x=0 đến 7

Ghi chú: ’BBBBB’: số byte dữ liệu của các vùng địa chỉ luôn được gọi ở dạng ASCII ; x là chỉ số đi kèm theo các ký tự chỉ vùng địa chỉ nhằm mở rộng các vùng địa chỉ có cùng chức năng.

MÔ TẢ CHƯƠNG TRÌNH

Luận Văn Tốt Nghiệp 75 SVTH: Châu Thị Bích Nga

Chương trình xử lý dữ liệu

1: Dữ liệu nhận về từ PC

2: Dữ liệu gởi đến PC

- Đóng gói dữ liệu (truyền)

- Truyền dữ liệu đã đóng gói đến PC

 Khối buffer user: Đây là vùng đệm cho các chương trình ứng dụng Khối này thực hiện lưu trữ và truy xuất dữ liệu từ các vùng dữ liệu quy định trong tập lệnh Các chương trình thực hiện trong khối này là:

- Ghi giá trị A/D vào vùng địa chỉ Q0.

- Ghi trạng thái hoạt động từ Kit hay PC đọc từ ngõ vào input 1 đưa vào ô nhớ S0.

- Chế độ Run/Stop nhận từ PC đưa vào ô nhớ địa chỉ M0.

- Các ngõ vào input 2,3,4 cài đặt dạng sóng ra đưa vào vùng nhớ địa chỉ

- Trị đỉnh của dạng sóng ra đưa vào ô nhớ dữ liệu địa chỉ D0.K0.

 Khối chương trình xử lý dữ liệu:

Khối này thực hiện các chương trình ứng dụng cho hệ thống Tùy các yêu cầu cụ thể đặt ra mà nó thực hiện nhiều hay ít chức năng Sơ đồ khối tổng quát cho nhóm chương trình trtong ứng dụng này là:

Luận Văn Tốt Nghiệp 76 SVTH: Châu Thị Bích Nga

Tạo dạng sóng ra Đọc A/D

Xuất D/A Đọc input Xuất output Buffer user

Luận Văn Tốt Nghiệp 77 SVTH: Châu Thị Bích Nga

Bước đầu trong giao tiếp dữ liệu giữa máy tính và vi xử lý được thực hiện bởiứ việc gởi chuỗi dữ liệu từ mỏy tớnh Do đú, kit vi xử lý chỉ thực hiện và trả lời theo yêu cầu của máy tính gởi đến.

CHƯƠNG TRÌNH NHẬN CHUỖI TỪ PC:

Như đã giới thiệu ở chương Protocol, frame dữ liệu gởi đi luôn được bắt đầu bởi một byte header cho cả hai hướng truyền (từ PC và vi xử lý) Vì thế, để tránh mất thời gian nếu phải nhận vào cả chuỗi mà ngay ở byte đầu tiên đã không đúng, nên trước tiên ta chỉ nhận về và kiểm tra byte header Việc nhận dữ liệu chỉ được tiếp tục thực hiện khi byte header là đúng Ngoài ra cũng có một số ràng buộc kèm theo cho quá trình nhận chuỗi, là ở lần nhận sau phải đảm bảo rằng dữ liệu nhận vào lần trước đó đã được kiểm tra và xử lý Điều kiện này đặt ra nhằm mục đích bảo toàn các giá trị nhận về từ PC, vì nếu việc nhận dữ liệu vào cứ diễn ra liên tục mà quá trình kiểm tra và xử lý không đáp ứng kịp, thì sẽ xảy ra trường hợp dữ liệu ở lần nhận sau sẽ đè lên dữ liệu nhận về trước đó Như vậy, quá trình thực hiện sẽ bỏ sót một vài trường hợp xử lý tức hệ thống hoạt động không tối ưu Điều này chỉ thật sự cần thiết đối với hệ thống thực hiện theo hệ thời gian thực (multitasking) vì các công việc trong chương trình được thực hiện song song nhau.

Luận Văn Tốt Nghiệp 78 SVTH: Châu Thị Bích Nga

Max=chiều dài tối đa của chuỗi cho phép nhập vào

Kiểm tra vùng đệm thu có dữ liệu không

Nhận vào 4 byte đầu của chuỗi x[i]

N=x[3]+4 (chiều dài củachuỗi dữ liệu+ 4byte header&control fiels)

N1?

Kết quả nhận đúng Kết quả nhận sai

Số byte dữ liệu (bufin[3])>1?

Cothu=0(được phép nhận chuỗi mới) Chuỗi buffer[]=chuỗi bufin[]

CHƯƠNG TRÌNH XỬ LÝ TẬP LỆNH:

Chương trình xử lý tập lệnh bước đầu thực hiện việc kiểm tra một số byte control fiels được nhận về từ PC nhằm tránh sự trùng lặp trong quá trình xử lý Vì theo giao thức truyền thông đặt ra (protocol), nếu trong khoảng thời gian và số lần nhắc lại qui định, kể từ sau khi PC gởi một yêu cầu đến máy tính, mà PC vẫn không nhận được kết quả phản hồi theo mong muốn ( lỗi này có thể xảy ra khi kit vi xử lý không nhận đầy đủ dữ liệu gởi đến từ PC, có thể do các byte control fiel không được xác lập đúng qui định

… ) hoặc kết quả nhận về từ khối vi xử lý báo lỗi thì nó gởi lại frame truyền mới, mà frame gởi lại này mang đầy đủ thông tin vừa rồi cho khối vi xử lý (xem chi tiết trong phần protocol) Tuy nhiên, không phải bất cứ khi nào PC không nhận được frame truyền mang theo thông tin trả lời từ vi xử lý đều xem là lỗi mà có thể do gặp sự cố về vấn đề thời gian Trong trường hợp đó, chương trình không xử lý lại từ đầu mà tiếp tục công việc xử lý cũ Nên bước kiểm tra này giải đáp cho câu hỏi khối vi xử lý có nhận được và có xử lý yêu cầu vừa rồi không?

Luận Văn Tốt Nghiệp 80 SVTH: Châu Thị Bích Nga

Tiếp theo quá trình kiểm tra, việc xử lý tập lệnh sẽ thực hiện dựa trên các kết quả của quá trình xử lý theo chức năng cụ thể cho từng hệ thống được đưa vào các vùng nhớ và sử dụng các lệnh được xây dựng trong tập lệnh.

Luận Văn Tốt Nghiệp 81 SVTH: Châu Thị Bích Nga

Lưu đồ: chương trình N xử lý ứng dụng tập lệnh

Frame gởi lần đầu (b1=0)? buffer[4] ≠ địachỉ[0]?

Và buffer[5] ≠ địachỉ[1]? Địachỉ[0]=buffer[4] Địachỉ[1]=buffer[5]

Cờ xử lý =1 (xử lý xong)

Frame nhận vào có dữ liệu ?

CHƯƠNG TRÌNH ĐÓNG GÓI DỮ LIỆU:

Chương trình đóng gói dữ liệu là tạo ra một frame truyền trả về cho PC mỗi khi nhận yêu cầu gởi đến từ nó Frame này cũng tuân theo qui định của các byte control fiel, và có thông báo kết quả của lần nhận vừa rồi Đối với frame gởi về từ vi xử lý, mã ID là mã của frame nhận từ PC Ngoài ra, việc đóng gói dữ liệu còn nhằm mục đích là đảm bảo trong quá trình gởi 1 khung dữ liệu từ Kit về PC nếu có sự gián đoạn nào xảy ra (1 chương trình interrupt chẳng hạn ) thì sự thay đổi giá trị của một biến bất kỳ cũng không gây ảnh hưởng đến dữ liệu truyền, tuy trường hợp này chỉ xảy ra với xác suất thấp vì tốc độ truyền dữ liệu rất cao nhưng nó cũng là một khuyết điểm đáng chú ý của chương trình nếu không được quan tâm đến.

Quá trình đóng gói dữ liệu và trả lời cho PC không phụ thuộc vào chương trình xử lý về mặt thời gian Nó được thực hiện sau khi hoàn tất chương trình kiểm tra frame nhận vào, kết quả của quá trình xử lý sẽ quyết định nội dung gởi về cho PC, số byte dữ liệu là không nếu chương trình xử lý vẫn đang thực hiện tại thời điểm đóng gói.

Luận Văn Tốt Nghiệp 82 SVTH: Châu Thị Bích Nga

Luận Văn Tốt Nghiệp 83 SVTH: Châu Thị Bích Nga

Bufout[3]=chiều dài chuỗi dữliệu

Bufout[3]=0(chiều dài chuỗi dữliệu=0)

Bufout[3]=0(chiều dài chuỗi dữliệu=0)

Chương trình xử lý cho ứng dụng Demo-kit luôn phải cập nhật ngõ vào input 1 từ switch để biết chế độ hoạt động của hệ thống là Kit hay PC

Chương trình xử lý được bắt đầu khi nhận được tín hiệu RUN và kết thúc tại STOP do PC gởi đến.

Các ngõ vào Input 2, 3, 4 được đọc về từ switch nên được thực hiện theo mức ưu tiên (từ 2 đến 4) nếu có nhiều ngõ vào cùng tích cực

Nếu tại một thời điểm mà không có dạng sóng ra nào được chọn thì hệ thống ở chế độ chờ và có thông báo ra PC

Các dạng sóng ngõ ra chỉ nhằm mục đích minh họa cho ứng dụng của việc sử dụng tập lệnh nên nó được xây dựng rất đơn giản với các dạng sóng ngõ ra có độ dốc không đổi

VI CÁC DẠNG SÓNG NGÕ RA

Luận Văn Tốt Nghiệp 84 SVTH: Châu Thị Bích Nga

End Đọc ngõ vào input 1 từ kit để chọn chế độ hoạt động

Hoạt động từ kit Đọc các ngõ vào input 2,3,4 từ data switch input 2=1?

Sóng ra dạng răng cưa lên

Sóng ra dạng răng cưa xuống

Hoạt động từ PC Đọc các ngõ vào input 2,3,4 PC truyền về

Lưu đồ:Sóng ra dạng nón

Luận Văn Tốt Nghiệp 85 SVTH: Châu Thị Bích Nga

Ngày đăng: 06/07/2023, 00:49

w