1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Hướng Dẫn Thí Nghiệm Vi Xử Lý & PLC

60 366 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 890,18 KB

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

Nội dung

Nội quy phòng thí nghiệm - Trước giờ ra về 30 phút, các nhóm sinh viên hoàn tất hoặc chưa hoàn tất bài thí nghiệm phải dừng thí nghiệm và nộp báo cáo thí nghiệm cho giáo viên hướng dẫn.

Trang 1

KHOA ĐIỆN – ĐIỆN TỬ

HƯỚNG DẪN THÍ NGHIỆM

VI XỬ LÝ & PLC

LƯU HÀNH NỘI BỘ

Trang 2

MỤC LỤC

Bài mở đầu – NỘI QUY – MỘT SỐ KIẾN THỨC CƠ BẢN 1

Bài 1 – MÔ PHỎNG HỌ VI XỬ LÝ 89C51 TRÊN MÁY TÍNH 13

Bài 2 – GIAO TIẾP NGOẠI VI VỚI LED 7 ĐOẠN 22

Bài 3 – GIAO TIẾP NGOẠI VI VỚI MA TRẬN PHÍM 29

Bài 4 – GIAO TIẾP NGOẠI VI VỚI MA TRẬN LED 33

Bài 5 – ĐIỀU KHIỂN QUÁ TRÌNH TUẦN TỰ 42

Bài 6 – PHÂN LOẠI VÀ ĐẾM SẢN PHẨM 46

Bài 7 – ĐIỀU KHIỂN ĐÈN GIAO THÔNG 51

Bài 8 – ĐIỀU KHIỂN THANG MÁY 55

Trang 3

Bài mở đầu

NỘI QUY & MỘT SỐ KIẾN THỨC CƠ BẢN

I Nội quy phòng thí nghiệm

- Trước giờ ra về 30 phút, các nhóm sinh viên hoàn tất (hoặc chưa hoàn tất bài thí nghiệm) phải dừng thí nghiệm và nộp báo cáo thí nghiệm cho giáo viên hướng dẫn Riêng những nhóm sinh viên hoàn tất bài thí nghiệm sớm, sau khi nộp báo cáo, nếu có nguyện vọng có thể xin phép giáo viên hướng dẫn cho về sớm Giờ ra về:

• Buổi sáng: 11h00’

• Buổi chiều: 17h00’

2 Tổ chức lớp học và cách đánh giá sinh viên

- Lớp học được chia thành tối đa 8 nhóm sinh viên, tùy sĩ số lớp mà số lượng SV mỗi nhóm sẽ dao động từ 3 đến 5 sinh viên

- Các bài thí nghiệm được chia làm 2 phần chính: phần thí nghiệm VXL gồm 4 bài được thực hiện song song bởi 4 nhóm trong mỗi buổi học; phần thí nghiệm PLC gồm 4 bài được thực hiện tuần tự bởi 4 nhóm còn lại trong mỗi buổi học Các nhóm hoàn tất phần thí nghiệm PLC sẽ chuyển sang thực hiện phần thí nghiệm VXL và ngược lại

- Các sinh viên vắng mặt (không phép) coi như bị điểm 0 bài thí nghiệm ngày hôm đó Các sinh viên chỉ được tối đa 1 buổi thí nghiệm vắng mặt có phép và sẽ học bù trong buổi thí nghiệm dự trữ

- Bài báo cáo thí nghiệm phải được hoàn thành ngay trong buổi thí nghiệm ngày hôm đó Điểm bài TN sẽ được đánh giá trên bài báo cáo này và qua quá trình thí nghiệm của nhóm

Trang 4

- Điểm trung bình cuối cùng sẽ là trung bình cộng của 2 cột điểm: điểm thí nghiệm và điểm kiểm tra cuối kỳ:

• Điểm thí nghiệm (chiếm 30%): là trung bình cộng của điểm 8 bài thí nghiệm, điểm mỗi bài thí nghiệm sẽ là điểm chung của nhóm

• Điểm kiểm tra cuối kỳ (chiếm 70%): sau khi hoàn tất xong các bài thí nghiệm, mỗi sinh viên đều phải trải qua một đợt kiểm tra cuối kỳ Nội dung kiểm tra sẽ được chọn lựa ngẫu nhiên từ nội dung các bài thí nghiệm Hình thức thi là vấn đáp

3 Quy chế

- Đối với phần thí nghiệm PLC, mỗi thao tác bật nguồn cung cấp cho kit TN phải được sự đồng ý của giáo viên hướng dẫn Do đó, trước khi thực hiện các thao tác này, hãy đề nghị giáo viên hướng dẫn kiểm tra kit TN Mỗi thao tác cần cẩn thận, có mục đích và sự hiểu biết, bất cứ một vấn đề nào không rõ ràng, HÃY hỏi giáo viên hướng dẫn

- Khi bước vào phòng TN, các sinh viên để cặp táp, giỏ xách trên giá để cặp sách, chỉ

được đem vào phòng TN các dụng cụ học tập cho phép (phần 4)

- Khác với giờ học lý thuyết, giờ TN sẽ không có thời gian giải lao giữa giờ Các sinh viên muốn ra khỏi phòng TN trong giờ TN phải nộp giáo viên hướng dẫn thẻ sinh viên của mình Mỗi lần ra khỏi phòng TN không được quá 5 phút Nếu không có nhiệm vụ cụ thể, các sinh viên nên hạn chế ra khỏi chỗ ngồi thí nghiệm của nhóm mình

- Đầu giờ, khi nhận các thiết bị, linh kiện thí nghiệm của bài ngày hôm đó, nhóm có trách nhiệm kiểm tra số lượng, tình trạng các thiết bị, linh kiện đó Trong quá trình thí nghiệm, nếu nhóm nào làm sai (hoặc cố tình làm sai) các hướng dẫn trong bài thí nghiệm dẫn đến hư hỏng

linh kiện, dụng cụ, thiết bị của phòng thí nghiệm, cả nhóm của nhóm đó có nghĩa vụ bồi thường (bằng hiện vật) linh kiện, dụng cụ, thiết bị đã bị hư hỏng Cuối giờ, nhóm phải hoàn

trả lại phòng thí nghiệm các thiết bị, linh kiện thí nghiệm đã được cấp theo đúng chất lượng và

Trang 5

• Giấy A4 báo cáo thí nghiệm

Kiểm tra cuối

- Chip vi xử lý 89C51 hoạt động với tần số thạch anh 7.3728MHz, ROM trong của chip

đã có sẵn chương trình quản lý kit và nạp RAM ngoài 6264

- IC chốt 74LS573 dùng để chốt 8 bit địa chỉ thấp xuất ở P0 của 89C51 ở bán kỳ máy đầu tiên khi thực hiện lệnh xuất/nhập với các địa chỉ ngoài

- Bộ nhớ ROM ngoài 2764 (8KB) lưu trữ mã lệnh một số chương trình con đã được lập trình sẵn

- Bộ nhớ RAM ngoài 6264 (8KB) lưu trữ mã lệnh chương trình thí nghiệm được lập trình

và nạp bởi sinh viên

- Khối bàn phím chứa 16 phím (0÷F) được bố trí thành ma trận 4 hàng x 4 cột, kết nối trực tiếp với P1 của 89C51

- Khối chỉ thị gồm 4 LED 7 đoạn được hiển thị theo chế độ quét, do đó, tần số quét phải

đủ nhanh để các LED hiển thị gần như liên tục, không bị gián đoạn

- Khối mở rộng port sử dụng PPI 8255 dùng để mở rộng các port xuất/nhập cho 89C51

a Họ vi xử lý 8051/8951

™ Tập lệnh

Trang 6

NHÓM LỆNH CHUYỂN DỮ LIỆU

No CÚ PHÁP GIẢI THÍCH MC B/ No CÚ PHÁP GIẢI THÍCH MC B/

1 MOV A, Rn (A) Å (Rn) 1/1 15 MOV @Ri, #data ((Ri)) Å #data 2/1

2 MOV A, direct (A) Å (direct) 2/1 16 MOV DPTR, #data16 (DPTR) Å #data(DPH) Å #data 15-815-0

(DPL) Å #data 7-0

3/2

3 MOV A, @Ri (A) Å ((Ri)) 1/1 17 MOVC A, @A+DPTR (A) Å ((A) + (DPTR)) 1/2

4 MOV A, #data (A) Å #data 2/1 18 MOVC A, @A+PC (A) Å ((A) + (PC)) 1/2

5 MOV Rn, A (Rn) Å (A) 1/1 19 MOVX A, @Ri (A) Å ((Ri)) RAM ngoài 1/2

6 MOV Rn, direct (Rn) Å (direct) 2/1 20 MOVX A, @DPTR (A) Å ((DPTR)) RAM ngoài 1/2

7 MOV Rn, #data (Rn) Å #data 2/1 21 MOVX @Ri, A ((Ri)) Å (A) RAM ngoài 1/2

8 MOV direct, A (direct) Å (A) 2/1 22 MOVX @DPTR, A ((DPTR)) Å (A) ngoài RAM 1/2

9 MOV direct, Rn (direct) Å (Rn) 2/2 23 PUSH direct (SP) Å (SP) + 1 ((SP)) Å (direct) 2/2

10 MOV direct, direct (direct) Å (direct) 3/2 24 POP direct (direct) Å ((SP)) (SP) Å (SP) – 1 2/1

11 MOV direct, @Ri (direct) Å ((Ri)) 2/2 25 XCH A, Rn (A) ' (Rn) 1/1

12 MOV direct, #data (direct) Å #data 3/2 26 XCH A, direct (A) ' (direct) 2/1

13 MOV @Ri, A ((Ri)) Å (A) 1/1 27 XCH A, @Ri (A) ' ((Ri)) 1/1

14 MOV @Ri, direct ((Ri)) Å (direct) 2/2 28 XCHD A, @Ri (A 3-0 ) ' ((Ri 3-0 )) 1/1

NHÓM LỆNH TOÁN HỌC

No CÚ PHÁP GIẢI THÍCH MC B/ No CÚ PHÁP GIẢI THÍCH MC B/

1 ADD A, Rn (A) Å (A) + (Rn) 1/1 13 INC A (A) Å (A) + 1 1/1

2 ADD A, direct (A) Å (A) + (direct) 2/1 14 INC Rn (Rn) Å (Rn) + 1 1/1

3 ADD A, @Ri (A) Å (A) + ((Ri)) 1/1 15 INC direct (direct) Å (direct) + 1 2/1

4 ADD A, #data (A) Å (A) + #data 2/1 16 INC @Ri ((Ri)) Å ((Ri)) + 1 1/1

5 ADDC A, Rn (A) Å (A) + (C) + (Rn) 1/1 17 INC DPTR (DPTR) Å (DPTD) + 1 1/2

6 ADDC A, direct (A) Å (A) + (C) + (direct) 2/1 18 DEC A (A) Å (A) – 1 1/1

7 ADDC A, @Ri (A) Å (A) + (C) + ((Ri)) 1/1 19 DEC Rn (Rn) Å (Rn) – 1 1/1

8 ADDC A, #data (A) Å (A) + (C) + #data 2/1 20 DEC direct (direct) Å (direct) – 1 2/1

9 SUBB A, Rn (A) Å (A) – (C) – (Rn) 1/1 21 DEC @Ri ((Ri)) Å ((Ri)) – 1 1/1

10 SUBB A, direct (A) Å (A) – (C) – (direct) 2/1 22 MUL AB (B 15-8 ), (A 7-0 ) Å (A) x (B) 1/4

11 SUBB A, @Ri (A) Å (A) – (C) – ((Ri)) 1/1 23 DIV AB (B dư ), (A nguyên ) Å (A) / (B) 1/4

12 SUBB A, #data (A) Å (A) – (C) – #data 2/1 24 DA A Sửa (A) sang dạng đúng của số BCD (vd: nếu (A) = 5AH

thì được sửa thành 60H)

1/1

Trang 7

NHÓM LỆNH LOGIC

No CÚ PHÁP GIẢI THÍCH MC B/ No CÚ PHÁP GIẢI THÍCH MC B/

1 ANL A, Rn (A) Å (A) AND (Rn) 1/1 14 XRL A, direct (A) Å (A) XOR (direct) 2/1

2 ANL A, direct (A) Å (A) AND (direct) 2/1 15 XRL A, @Ri (A) Å (A) XOR ((Ri)) 1/1

3 ANL A, @Ri (A) Å (A) AND ((Ri)) 1/1 16 XRL A, #data (A) Å (A) XOR #data 2/1

4 ANL A, #data (A) Å (A) AND #data 2/1 17 XRL direct, A (direct) Å (direct) XOR (A) 2/1

5 ANL direct, A (direct) Å (direct) AND (A) 2/1 18 XRL direct, #data (direct) Å (direct) XOR #data 3/2

6 ANL direct, #data (direct) Å (direct) AND #data 3/2 19 CLR A (A) Å 0 1/1

7 ORL A, Rn (A) Å (A) OR (Rn) 1/1 20 CPL A (A) Å (NOT A) 1/1

8 ORL A, direct (A) Å (A) OR (direct) 2/1 21 RL A 1/1

9 ORL A, @Ri (A) Å (A) OR ((Ri)) 1/1 22 RLC A 1/1

10 ORL A, #data (A) Å (A) OR #data 2/1 23 RR A 1/1

11 ORL direct, A (direct) Å (direct) OR (A) 2/1 24 RRC A 1/1

12 ORL direct, #data (direct) Å (direct) OR #data 3/2 25 SWAP A (A 3-0 ) ' (A 7-4 ) 1/1

13 XRL A, Rn (A) Å (A) XOR (Rn) 1/1

NHÓM LỆNH RẼ NHÁNH

No CÚ PHÁP GIẢI THÍCH MC B/ No CÚ PHÁP GIẢI THÍCH MC B/

1 ACALL addr11

(PC) Å (PC) + 2 (SP) Å (SP) + 1 ((SP)) Å (PC 7-0 ) (SP) Å (SP) + 1 ((SP)) Å (PC 15-8 ) (PC 10-0 ) Å add 10-0

2/2 7 LCALL add16

(PC) Å (PC) + 3 (SP) Å (SP) + 1 ((SP)) Å (PC 7-0 ) (SP) Å (SP) + 1 ((SP)) Å (PC 15-8 ) (PC) Å add 15-0

3/2

2 SJMP rel (PC) Å (PC) + 2 (PC) Å (PC) + rel 2/2 8 JMP @A+DPTR (PC) Å (A) + (DPTR) 1/2

3 RET

(PC 15-8 ) Å ((SP)) (SP) Å (SP) – 1 (PC 7-0 ) Å ((SP)) (SP) Å (SP) – 1

1/2 9 JZ rel

(PC) Å (PC) + 2

IF (A) = 0 THEN (PC) Å (PC) + rel 2/2

4 RETI

(PC 15-8 ) Å ((SP)) (SP) Å (SP) – 1 (PC 7-0 ) Å ((SP)) (SP) Å (SP) – 1

1/2 10 JNZ rel

(PC) Å (PC) + 2

IF (A) ≠ 0 THEN (PC) Å (PC) + rel 2/2

Trang 8

(PC) Å (PC) + rel (PC) Å (PC) + rel

(C)Å0

IF #data > (Rn) THEN (PC) Å (PC) + rel (C)Å1

14 JNB bit, rel

(PC) Å (PC) + 3

IF (bit) = 0 THEN (PC) Å (PC) + rel 3/2 19 CJNE @Ri, #data, rel

(PC) Å (PC) + 3

IF #data < ((Ri)) THEN (PC) Å (PC) + rel (C)Å0

IF #data > ((Ri)) THEN (PC) Å (PC) + rel (C)Å1

IF (Rn) ≠ 0 THEN (PC) Å (PC) + rel

IF (direct) > (A) THEN (PC) Å (PC) + rel (C)Å1

3/2 21 DJNZ direct, rel

(PC) Å (PC) + 3 (direct) Å (direct) – 1

IF (direct) ≠ 0 THEN (PC) Å (PC) + rel

IF #data > (A) THEN (PC) Å (PC) + rel (C)Å1

3/2 22 NOP (PC) Å (PC) + 1 1/1

NHÓM LỆNH LIÊN QUAN ĐẾN BIT

No CÚ PHÁP GIẢI THÍCH MC B/ No CÚ PHÁP GIẢI THÍCH MC B/

1 CLR C (C) Å 0 1/1 7 ANL C, bit (C) Å (C) AND (bit) 2/2

2 CLR bit (bit) Å 0 2/1 8 ANL C, /bit (C) Å (C) AND (NOT bit) 2/2

3 SETB C (C) Å 1 1/1 9 ORL C, bit (C) Å (C) OR (bit) 2/2

4 SETB bit (bit) Å 1 2/1 10 ORL C, /bit (C) Å (C) OR (NOT bit) 2/2

5 CPL C (C) Å (NOT C) 1/1 11 MOV C, bit (C) Å (bit) 2/1

6 CPL bit (bit) Å (NOT bit) 2/1 12 MOV bit, C (bit) Å (C) 2/2

Ghi chú: (X) : nội dung của X

((X)) : nội dung của ô nhớ có địa chỉ là nội dung của X (X là con trỏ)

direct : địa chỉ trực tiếp; Rn : n = 0 ÷ 7; Ri : i = 1,2

rel: địa chỉ tương đối (trình biên dịch sẽ tính rel từ địa chỉ cần nhảy đến) B/MC : Bytes / Machine Cycles

Trang 9

D0H D7 D6 D5 D4CY AC F0 RS1 RS0 OV D3 D2 _ D0 P PSW

23H 1F 1E 1D 1C 1B 1A 19 18 8DH không được địa chỉ hóa bit TH1

22H 17 16 15 14 13 12 11 10 8CH không được địa chỉ hóa bit TH0

21H 0F 0E 0D 0C 0B 0A 09 08 8BH không được địa chỉ hóa bit TL1

20H 07 06 05 04 03 02 01 00 8AH không được địa chỉ hóa bit TL0

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

07H Bank thanh ghi 0

Trang 10

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28

10 11 12 13 14 15 16 17

PSEN ALE

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

P2.0 / A8 P2.1 / A9 P2.2 / A10 P2.3 / A11 P2.4 / A12 P2.5 / A13 P2.6 / A14 P2.7 / A15

P3.0 / RXD P3.1 / TXD P3.2 / INT0 P3.3 / INT1 P3.4 / T0 P3.5 / T1 P3.6 / WR P3.7 / RD

12MHz

100

33pF

b Mở rộng port xuất/nhập dùng PPI 8255

- Họ 8051 có 4 port giao tiếp ngoại vi là P0, P1, P2 và P3 Khi sử dụng bộ nhớ ngoài thì P0 đảm nhận vai trò là bus dữ liệu và bus địa chỉ thấp, P2 đảm nhận vai trò là bus địa chỉ cao Một số chân của P3 có thể được dùng vào mục đích đặc biệt như TXD, RXD, WR, RD, ngắt, …

Do đó chỉ còn lại P1 để giao tiếp với các thiết bị ngoại vi Trong trường hợp cần thêm các ngõ vào/ra để giao tiếp ngoại vi thì phải mở rộng port PPI 8255 là một IC chuyên dùng cho mục đích này

Trang 11

- PPI 8255 bao gồm 3 port có thể đóng vai trò như port xuất hoặc port nhập Khi ở chế độ xuất, dữ liệu từ data bus được đưa tới và chốt ở port cần xuất Khi ở chế độ nhập, dữ liệu từ port đang kích hoạt sẽ được đọc và đưa ngược lại vào data bus Ngoài ra, 8255 còn có một thanh ghi điều khiển để xác lập chế độ hoạt động (xuất hoặc nhập) cho các port Khi cần mở rộng port cho 8051/8951 thì data bus được nối với P0, các port A,B và C được nối với ngoại vi

Các ngõ vào điều khiển:

• /CS: tín hiệu chọn chip (tích cực thấp)

• /WR: tín hiệu cho phép xuất (nối vào chân /WR của 8051/8951)

• /RD: tín hiệu cho phép nhập (nối vào chân /RD của 8051/8951)

• RESET: reset 8255 (nối với chân RST của 8051/8951)

• A1, A0: chọn port làm việc

1 1 Thanh ghi điều khiển

- Trước khi sử dụng 8255 thì phải xác lập chế độ hoạt động cho nó thông qua việc xác lập giá trị của thanh ghi điều khiển Thanh ghi điều khiển gồm 8 bit:

Trang 12

0: PCH out 1: PCH in

Mode nhóm B:

- 0: mode 0

- 1: mode 1

0: PB out 1: PB in

0: PCL out 1: PCL in

Trong đó: Nhóm A gồm PA và PCH (PC4÷PC7)

Nhóm B gồm PB và PCL (PC0÷PC3) Đối với mục đích mở rộng port xuất nhập thông thường thì mode 0 (mode xuất/nhập cơ bản) thường được sử dụng

2 Phần thí nghiệm PLC (sẽ được trình bày trên lớp học)

Trang 15

Simulator 2003 là phần mềm chuyên dùng để mô phỏng cho các họ vi xử lý 8031/8032/87C51/87C52/89C51/89C52/8051/8052 Simulator 2003 có cách sử dụng rất dễ dàng

và thân thiện Một số đặc tính nổi bật của Simulator 2003 như sau:

- Cho phép giám sát động và thiết lập động nội dung bất kỳ một vùng nhớ nào ở RAM trong, RAM ngoài và các thanh ghi chức năng đặc biệt dưới dạng số hex, nhị phân và thập phân

- Cho phép giả lập đầy đủ các ngắt

- Dễ dàng dò lỗi chương trình thông qua các chức năng như mô phỏng theo từng bước, theo từng khối, theo thời gian…

- Tốc độ mô phỏng có thể điều chỉnh được

- Cho phép biên dịch ngược từ mã hex hoặc bin (mã máy) sang mã Assembler

Trang 16

Giao diện chương trình Simulator 2003

2 Phần mềm Crimson Editor

Trước khi mô phỏng, chương trình vi xử lý phải được lập trình thông qua phần mềm Crimson Editor Đây là phần mềm tạo các file văn bản hỗ trợ rất nhiều các ngôn ngữ lập trình khác nhau như Assembler, Pascal, C, C++, Visual Basic, MatLAB,… Khi viết chương trình Assembler với Crimson Editor, tập tin chương trình phải được lưu dưới dạng ‘*.a51’ Đây là một tập tin văn bản thuần túy, để có thể sử dụng chương trình này với Simulator 2003, tập tin này phải được biên dịch sang tập tin ngôn ngữ máy ‘*.bin’ thông qua chức năng biên dịch kèm theo của Crimson Editor

Trang 17

Giao diện chương trình Crimson Editor

II Thí nghiệm

1 Mô phỏng với các lệnh chuyển dữ liệu

a Sử dụng Crimson Editor

- Vào File → New để tạo tập tin mới

- Vào File → Save As… để lưu tập tin mới dưới tên Bai11ab.a51 ở Desktop

- Nhập nội dung sau vào cửa sổ soạn thảo của Bai11ab.a51:

Trang 18

- Vào Tools → Translate A51 to BIN để biên dịch chương trình trên sang dạng tập tin

ngôn ngữ máy Bai11ab.bin (ở Desktop) Quan sát kết quả biên dịch ở cửa sổ Output (bên

dưới cửa sổ soạn thảo), nếu nhìn thấy dòng “ASSEMBLY COMPLETE, NO ERRORS FOUND” chứng tỏ việc biên dịch đã thành công

b Sử dụng Simulator 2003

- (Nếu đang tồn tại một tập tin đang mở thì vào File → Close File để đóng tập tin)

- Vào File → Open File và chọn mở tập tin Bai11ab.bin ở Desktop

- Vào Micsellaneous → General Write, trong danh sách Type chọn SFR Registers, trong danh sách Name/Address chọn P0 (hoặc cũng có thể double click vào giá trị P0 trên cửa

sổ SFRs window), nhập giá trị 99 vào ô Decimal để thiết lập giá trị 99 thập phân cho P0

- Vào Execution → Start/Stop Execution (hoặc nhấn nút lệnh lệnh Start Execution ) để bắt đầu mô phỏng chương trình

- [1] Vào Miscellaneous → General Read (hoặc double click vào giá trị P1 trên cửa số SFRs window), cho biết giá trị xuất ra ở P1 (dưới dạng thập phân) là bao nhiêu?

- Vào Execution → Start/Stop Execution để dừng mô phỏng Vào Execution → Reset Execution (hoặc nhấn nút lệnh ) để reset vi xử lý

- Thiết lập lại giá trị 99 thập phân cho P0

- Vào Debugging → Single Step (hoặc nhấn F2) để thực thi chương trình theo từng dòng

lệnh một Quan sát cửa sổ Execution Status để biết dòng lệnh kế tiếp sẽ được thực thi

- Trên cửa sổ Active Watch, click nút lệnh Add items để mở cửa sổ Add to Active Watch, chọn và click nút Add để bổ sung các vùng nhớ sau vào cửa sổ Active Watch: P0,

P1, ACC, B (SFR Registers) - 20H, 21H, R1(Internal RAM)

- [2] Điền giá trị (thập phân) các vùng nhớ sau khi từng dòng lệnh một được thực hiện xong vào bảng sau:

Trang 19

Lệnh PC (Hex) P0 P1 20H 21H ACC B R1

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

- [3] Nếu không có dòng lệnh (12) thì kết quả chương trình trên có khác đi không? - [4] Dòng lệnh (9) gán giá trị 2 thập phân cho thanh ghi B Cuối chương trình (dòng lệnh (12)), giá trị thanh ghi B có thay đổi không? Tại sao? c Ứng dụng - [5] Sử dụng Crimson Editor soạn thảo chương trình Bai11c.a51 ở Desktop với nội dung sau: nhập liên tục giá trị từ P1, kiểm tra xem nếu giá trị này lớn hơn 127 thì chia đôi và xuất kết quả (phần nguyên) ra P2 Trong trường hợp ngược lại thì nhân đôi giá trị này và cũng xuất kết quả ra P2 - Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003 2 Mô phỏng với Timer a Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai12a.a51 ở Desktop: ORG 0000H MOV TMOD , #01H ; (1)

MOV A, #10000000B ; (2)

LOOP: RL A ; (3)

MOV P1, A ; (4)

MOV R1, P0 ; (5)

ACALL DELAY ; (6)

SJMP LOOP ; (7)

Trang 20

DELAY: MOV TH0, #HIGH(-1000) ; (8)

- Biên dịch chương trình trên sang mã máy Mở file bai12a.bin với Simulator 2003

- Vào Options → Simulation Settings Trong cửa sổ Simulator2003 Settings, chọn Tab Simulation Thay đổi giá trị Batch Instructions Count thành 100, trong danh sách Refresh Type chọn Refresh after each tick để tăng tốc độ mô phỏng và hiển thị

- Chạy mô phỏng chương trình

- [1] Thay đổi giá trị đặt cho P0 (chẳng hạn như 10, 50, 100, 200) và quan sát kết quả ở P1,

từ đó giải thích ngắn gọn mục đích của chương trình trên

- [2] Giải thích dòng lệnh (1)

- [3] Với thạch anh 12Mhz, dòng lệnh (11) sẽ được thực thi trong khoảng thời gian bao nhiêu? Từ đó, một cách gần chính xác, suy ra dòng lệnh (6) sẽ được thực thi trong bao nhiêu lâu nếu P0 nhận giá trị là 20

- Dừng mô phỏng và reset chương trình Thiết lập giá trị 20 cho P0

- Vào Disassembly → Disassemble Code Trong cửa sổ Disassembly Window, click vào cột Brk (cột đầu tiên) 2 hàng lệnh ACALL 0000EH (lệnh (6)) và SJMP 00005H (lệnh (7)) để thiết lập vị trí Break Point cho 2 hàng lệnh này Khi mô phỏng với lệnh Start Execution , chương trình mô phỏng sẽ tạm dừng ở đầu dòng lệnh (6) cho đến khi nhận được lệnh Start Execution một lần nữa Sau khi thực hiện xong lệnh (6), chương trình

tiếp tục tạm dừng ở đầu dòng lệnh (7)

- [4] Quan sát cửa sổ Execution Status để biết được thời điểm tạm dừng ở 2 đầu dòng lệnh này, từ đó cho biết chính xác dòng lệnh (6) đã được thực thi trong khoảng thời gian bao nhiêu lâu

Trang 21

- [5] Giá trị thực tế này và giá trị ước lượng ở [2] có khác nhau không? Độ chênh lệch đó là bao nhiêu và tại sao lại có sự chênh lệch đó.

b Ứng dụng

- [6] Viết chương trình Bai12b.a51 ở Desktop thực hiện nhiệm vụ sau: liên tục kiểm tra

chân P1.7, nếu P1.7 = 1 thì xuất ra ở P1.0 xung vuông có tần số 2Hz; nếu P1.7 = 0 thì thiết lập mức 0 cho P1.0

- Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003

Trang 22

- Biên dịch chương trình trên sang mã máy Mở file bai13a.bin với Simulator 2003

- Vào Options Æ Simulation Settings Trong cửa sổ Simulator2003 Settings, chọn Tab Simulation Thay đổi giá trị Batch Instructions Count thành 1000, trong danh sách Refresh Type chọn Refresh after each tick để tăng tốc độ mô phỏng và hiển thị

- Chạy mô phỏng chương trình

- [1] Click nút lệnh External interrupt 0 để giả lập ngắt ngoài 0 cạnh xuống cho vi xử

lý Quan sát kết quả ở P1 Một lần nữa click nút lệnh External interrupt 0 và quan sát P1 Từ đó giải thích ngắn gọn mục đích của chương trình

- [2] Giải thích dòng lệnh (5) và (6) của chương trình

- [3] Giải thích mục đích của dòng lệnh (11) Từ đó cho biết chương trình con ISR_T0 được thực thi trong trường hợp nào

- [4] Nếu bỏ đi dòng lệnh (14) thì chương trình có còn chạy đúng không? Tại sao? Dòng lệnh (14) có thể được thay bằng một dòng lệnh nào để kết quả mô phỏng gần như không đổi?

b Ứng dụng

Trang 23

- [5] Viết chương trình Bai13b.a51 dùng ngắt ngoài 1 và ngắt timer 1 thực hiện nhiệm vụ

của một mạch delay_on như sau: nếu có cạnh xuống ở P3.3 thì delay 10ms và đặt giá trị P1.0 lên 1; nếu gặp cạnh xuống ở P3.3 một lần nữa thì ngay lập tức đưa P1.0 về 0

- Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003

Trang 24

4 6 9 10 12

D S0 S2 G

Q0 Q2 Q4 Q6

0

D2

a b c d e

f gOP

15 13 11 9 6

5

A C Y0 Y2 Y4 Y6

G1 G2A

0

A14

B

a b c d e

f gOP

f gOP

OP

0

D0

/WR D0

/WR

E D5

Q1

U9

74LS374

3 7 13 17

1 11

2 6 12 16

D0 D2 D4 D6

OE CLK Q0 Q2 Q4 Q6

f gOP

2

A0

Q2 D1

VCC

/Y3

D0 A0

U2

74LS573

2 4 6 8

11 1

19 17 15 13

D0 D2 D4 D6

LE OE Q0 Q2 Q4 Q6

U1

89C51

30 39 37 35 33

21 23 25 27 16

ALE P0.0/AD0

P0.2/AD2

P0.4/AD4

P0.6/AD6

P2.0/A8 P2.2/A10

BJT

A3 A1 A7

Trong đó:

- 74LS573 (U2): IC chốt địa chỉ Do Port 0 hoạt động ở chế độ địa chỉ / dữ liệu (nửa chu

kỳ đầu là 8 bit địa chỉ thấp và nửa chu kỳ sau là dữ liệu) nên U2 được dùng để chốt và giữ lại byte địa chỉ thấp này trên address bus

- 74LS138 (U6): IC giải mã địa chỉ Chẳng hạn, để /Y2 = 0 thì CBA = 010, để /Y3 = 0 thì CBA = 011,…

Trang 25

- 74LS259 (U10): IC giải mã địa chỉ và chốt Khi tín hiệu kích hoạt /G = 0, Q0 = D khi S2S1S0 = 000, Q1 = D khi S2S1S0 = 001, …, Q7 = D khi S2S1S0 = 111 (các ngõ ra còn lại giữ nguyên trạng thái trước đó)

- 74LS374 (U9): chốt dữ liệu theo cạnh lên của CLK Với tín hiệu cho phép /OE = 0, khi

có cạnh lên ở CLK thì Qi = Di (i = 0÷7) Sau đó, các ngõ ra Qi sẽ được chốt lại bất chấp

sự thay đổi của các ngõ vào Di

- Các LED 7 đoạn: thuộc loại cathode chung Để một đoạn LED phát sáng thì phải thỏa mãn 2 điều kiện: chân CK ở mức thấp và chân điều khiển đoạn LED tương ứng phải ở mức cao

Với sơ đồ nguyên lý trên, có thể nhận thấy rằng tại mỗi thời điểm chỉ có thể hiển thị duy nhất 1 LED 7 đoạn Do đó, để hiển thị một LED 7 đoạn, chẳng hạn như LED7_CK3, phát sáng thì phải thực hiện tuần tự 3 bước sau:

- Nếu có một LED 7 đoạn nào đang được phát sáng trước đó, chẳng hạn như LED7_CK2, thì tắt đi bằng cách đưa Q1 về 0 để chân CK của LED7_CK2 cách ly với mức điện áp thấp

- Chốt tín hiệu thích hợp ở ngõ ra của U9 (74LS374), tín hiệu này là các mã LED 7 đoạn ứng với một con số, một chữ cái cần hiển thị Lúc này cả 4 LED 7 đoạn đều nhận được tín hiệu này tuy nhiên chưa LED nào được phát sáng do chân CK của chúng được cách ly với mức điện áp thấp

- Để LED7_CK3 phát sáng thì thiết lập Q2 = 1

Căn cứ vào sơ đồ nguyên lý trên, các sinh viên có thể xác định được các vùng địa chỉ phù hợp để thực thi các bước trên Lưu ý là do mỗi lần chỉ có thể hiển thị được 1 LED 7 đoạn nên để

có thể hiển thị gần như đồng thời 4 LED 7 đoạn này, cần thực hiện việc hiển thị theo cách

“quét”: lần lượt hiển thị từng LED một với tần số cao để mắt người vẫn có cảm giác là việc hiển thị được thực hiện đồng thời:

Trang 26

- Biên dịch chương trình trên sang mã máy bằng lệnh Tools → Translate A51 to BIN

- Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút

MODE sang vị trí INT, sau đó buông nút RESET Chương trình ở ROM trong của

89C51 sẽ được thực thi để chuẩn bị nạp RAM ngoài 6264

- Mở chương trình “MPE-300 External RAM download” trên máy tính Click nút lệnh

để mở và nạp file bai21a.bin (ở desktop) Sau đó click nút lệnh download để nạp chương

trình trên tới RAM ngoài 6264 của 89C51 (chương trình sẽ được chuyển tới 89C51 và

89C51 sẽ điều khiển để nạp cho RAM ngoài)

- Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị

trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET Chương trình nạp

ở RAM ngoài của 89C51 sẽ được thực thi

- [1] Điền nội dung hiển thị trên các LED 7 đoạn vào bảng sau:

Nội dung hiển thị

- [2] Dòng lệnh nào trên chương trình quyết định nội dung hiển thị trên?

- [3] Khi vừa thực hiện xong dòng lệnh (3), dựa trên sơ đồ nguyên lý và cho biết giá trị của

các đường tín hiệu sau:

Trang 27

A15 =

A13 =

- [4] Khi đang thực hiện dòng lệnh (6), dựa trên sơ đồ nguyên lý và cho biết giá trị của các

đường tín hiệu sau:

b Ứng dụng

- [7] Viết chương trình Bai21b_1.a51 xuất ra LED7_CK4 ký tự h và dấu “.” như sau:

- [8] Viết chương trình Bai21b_2.a51 tuần hoàn xuất ra LED7_CK1 các ký tự hex như sau:

0 Æ 9 Æ F với khoảng thời gian hiển thị mỗi ký tự là 0.5s (lưu ý thạch anh sử dụng cho 89C51 có

tần số 7.3728Mhz)

Hướng dẫn: Chương trình sau xuất 1 ký tự tùy chọn trong khoảng từ 0Æ5 ra LED7_CK2 Sinh viên dựa vào chương trình này, xem lại lệnh MOVC và lệnh giả DB để thực hiện câu [8]

/Y2 = … /WR = 0 → 1

/Y3 = … /WR = 0

WR3 = … D0 = … A2 = … A1 = … A0 = …

Trang 28

KY_TU EQU 3 ; Chọn ký tự từ 0Æ5 để xuất (ở đây xuất 3)

2 Giao tiếp với cả 4 LED 7 đoạn

Trang 29

- Biên dịch chương trình trên sang mã máy bằng lệnh Tools → Translate A51 to BIN

- Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút MODE sang vị trí INT, sau đó buông nút RESET

- Mở chương trình “MPE-300 External RAM download” trên máy tính Click nút lệnh

để mở và nạp file bai22a.bin (ở desktop) Sau đó click nút lệnh download để nạp chương trình trên tới RAM ngoài 6264 của 89C51

- Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET Chương trình nạp

ở RAM ngoài của 89C51 sẽ được thực thi

- [1] Điền nội dung hiển thị trên các LED 7 đoạn vào bảng sau:

Trang 30

LED7_CK1 LED7_CK2 LED7_CK3 LED7_CK4 Nội dung hiển thị

- [2] Các dòng lệnh nào trên chương trình quyết định các nội dung hiển thị trên?

- [3] Các dòng lệnh (11), (12) và (13) dùng để làm gì?

- [4] Các dòng lệnh (14), (15) và (16) dùng để làm gì?

- [5] Các dòng lệnh từ (17) đến (21) dùng để làm gì? Tại sao phải có dòng lệnh (20)? Nếu

bỏ đi dòng lệnh này chương trình có còn chạy đúng không?

- [6] Dòng lệnh (22) và (23) dùng để delay thời gian hiển thị cho 1 LED 7 đoạn MPE-300

sử dụng thạch anh có tần số 7.3728MHz cho 89C51 thì thời gian delay này là bao lâu?

b Ứng dụng

- [7] Viết chương trình Bai22b.a51 xuất ra các LED 7 đoạn dòng chữ “HELP.” nhấp nháy

với chu kỳ 1s (0.5s bật và 0.5s tắt) như sau (lưu ý thạch anh sử dụng có tần số

7.3728Mhz):

Hướng dẫn: Có thể sử dụng ngắt timer để tạo hiệu ứng nhấp nháy

Ngày đăng: 14/12/2016, 10:25

HÌNH ẢNH LIÊN QUAN

Sơ đồ nguyên lý khối bàn phím trên MPE-300: - Hướng Dẫn Thí Nghiệm Vi Xử Lý & PLC
Sơ đồ nguy ên lý khối bàn phím trên MPE-300: (Trang 31)
Sơ đồ nguyên lý mở rộng port cho 89C51 dùng PPI 8255 trên MPE-300 như sau (có thể  xem thêm chi tiết về PPI 8255 ở bài mở đầu): - Hướng Dẫn Thí Nghiệm Vi Xử Lý & PLC
Sơ đồ nguy ên lý mở rộng port cho 89C51 dùng PPI 8255 trên MPE-300 như sau (có thể xem thêm chi tiết về PPI 8255 ở bài mở đầu): (Trang 35)
Bảng ký hiệu các biến - Hướng Dẫn Thí Nghiệm Vi Xử Lý & PLC
Bảng k ý hiệu các biến (Trang 45)

TỪ KHÓA LIÊN QUAN

w