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

Giáo trình vi điều khiển (nghề điện công nghiệp cao đẳng)

144 5 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 144
Dung lượng 2,35 MB

Nội dung

BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN TRƯỜNG CAO ĐẲNG CƠ GIỚI GIÁO TRÌNH MƠ ĐUN: VI ĐIỀU KHIỂN NGHỀ: ĐIỆN CƠNG NGHIỆP TRÌNH ĐỘ: CAO ĐẲNG Ban hành kèm theo Quyết định số: / QĐ-CĐCG ngày … tháng… năm 2019 Trường Cao đẳng Cơ giới Quảng Ngãi, năm 2019 (Lưu hành nội bộ) TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Lập trình vi điều khiển mơ đun chun mơn mang tính đặc trưng cao thuộc nghề Điện cơng nghiệp Mơ đun có ý nghĩa định đến kỹ kiến thức người học Sau học tập mô đun này, học viên có đủ kiến thức để học tập tiếp mơ đun nâng cao Trang bị điện Kỹ thuật lập trình Giáo trình thiết kế theo mơ đun thuộc hệ thống mô đun/ môn học chương trình đào tạo nghề Điện cơng nghiệp cấp trình độ Cao đẳng nghề, dùng làm giáo trình cho học viên khóa đào tạo chuyên ngành Ngồi ra, tài liệu sử dụng cho đào tạo ngắn hạn cho kỹ thuật viên, công nhân kỹ thuật tham khảo Mô đun triển khai sau môn học, mô đun điện tử bản, kỹ thuật xung – số Các kỹ lắp ráp, lập trình hay sửa chữa mạch điện tử khả trình máy cơng nghiệp yêu cầu bắt buộc kỹ thuật viên nghề Điện công nghiệp Mặc dù cố gắng, song sai sót khó tránh Tác giả mong nhận ý kiến phê bình, nhận xét bạn đọc để giáo trình hồn thiện Quảng Ngãi, ngày tháng năm 2019 Biên Soạn Hồ Văn Tịnh - Chủ biên MỤC LỤC SCON.6 99 SCON.5 99 SCON.4 99 REN 99 SCON.3 99 SCON.2 99 RB8 99 SCON.1 99 SCON.0 99 IE.7 108 ES 108 EX1 108 IP.7 108 ET2 109 ET1 109 GIỚI THIỆU .124 MỞ ĐẦU 125 HOẠT ĐỘNG CỦA ASSEMBLER 126 CẤU TRÚC CHƯƠNG TRÌNH DỮ LIỆU 128 TÍNH BIỂU THỨC TRONG KHI HỢP DỊCH 132 CÁC ĐIỀU KHIỂN ASSEMBLER 144 MƠ ĐUN: LẬP TRÌNH VI ĐIỀU KHIỂN Mã mơ đun: MĐ 24 Vị trí, tính chất, ý nghĩa vai trị mơ đun - Mơ đun lập trình vi điều khiển học sau môn học Kỹ thuật số, Linh kiện điện tử mạch điện tử - Là mô đun đào tạo chuyên ngành - Mơ đun có vai trị cung cấp cho người học kiến thức vi điều khiển họ 8051 từ giải thích nguyên lý hoạt động hệ dùng vi điều khiển viết chương trình ứng dụng dùng vi điều khiển Mục tiêu mô đun: - Kiến thức: A1: Hiểu kiến thức vi điều khiển họ 8051 A2: Giải thích nguyên lý hoạt động hệ dùng vi điều khiển - Kỹ năng: B1: Kiểm tra viết chương trình ứng dụng dùng vi điều khiển B2: Vận hành thiết bị dây chuyền sản xuất dùng vi điều khiển - Năng lực tự chủ tự chịu trách nhiệm: C1 Chủ động, nghiêm túc học tập và cơng việc C2 Giữ gìn vệ sinh cơng nghiệp, đảm bảo an toàn cho người thiết bị Chương trình khung nghề điện cơng nghiệp Mã MH/ MĐ/ HP I MH 01 MH 02 MH 03 MH 04 MH 05 MH 06 II II.1 MH 07 MH 08 MĐ 09 MĐ 10 MĐ 11 MĐ 12 II.2 Tên mơn học, mơ đun Số tín Thời gian đào tạo (giờ) Trong Thực hành/thực Tổng Lý tập/Thí Kiểm số thuyết nghiệm/bài tra tập/thảo luận Các môn học chung/đại cương 18 435 157 255 Chính trị 75 41 29 Pháp luật 30 18 10 Giáo dục thể chất 60 51 Giáo dục quốc phòng - An ninh 75 36 35 Tin học 75 15 58 Ngoại ngữ (Anh văn) 120 42 72 Các môn học, mô đun chuyên môn ngành, nghề Các mô đun, môn học kỹ 18 360 160 180 thuật sở Ngoại ngữ chuyên ngành 60 30 27 An toàn điện 15 14 30 Điện 45 40 90 Vẽ kỹ thuật – vẽ điện 15 27 45 Khí cụ điện 45 20 22 35 50 Kỹ thuật Điện tử 90 Các mô đun, môn học chuyên 78 2005 543 1389 23 4 20 3 73 môn MĐ 13 MH 14 MĐ 15 MĐ 16 MH 17 MĐ 18 MĐ 19 MĐ 20 MĐ 21 MĐ 22 MĐ 23 MĐ 24 MĐ 25 MĐ 26 Điều khiển điện khí nén Điện tử công suất Máy điện Kỹ thuật quấn dây máy điện Cung cấp điện Trang bị điện Kỹ thuật số Kỹ thuật cảm biến PLC Truyền động điện Kỹ thuật lắp đặt điện Lập trình vi điều khiển Kỹ thuật lạnh giảm ĐKLT cỡ nhỏ - điều khiển thông minh 4 5 5 4 90 60 90 120 90 30 20 48 40 60 55 37 37 75 26 180 75 75 120 90 120 90 85 30 37 30 47 37 20 32 25 140 35 42 67 48 92 53 56 5 10 3 4 90 37 48 30 20 240 30 210 360 2800 860 360 1824 MH 27 Tổ chức sản xuất MĐ 28 Đồ án môn học / Đào tạo doanh nghiệp MĐ 29 Thực tập tốt nghiệp Tổng cộng 114 Chương trình chi tiết mô đun: Số TT Tên mô đun Sơ lược về lịch sử và hướng phát triển của vi điều khiển Cấu trúc vi điều khiển 8051 Tập lệnh vi điều khiển 8051 Bộ định thời (Timer) Cổng nối tiếp Ngắt Phần mềm hợp ngữ Tổng Tổng số 13 20 20 10 10 15 90 Thời gian(giờ) Lý Thực thuyết hành 7 4 32 12 12 53 116 Kiểm tra* 1 Điều kiện thực môn học: 3.1 Phòng học Lý thuyết/Thực hành: Đáp ứng phòng học chuẩn 3.2 Trang thiết bị dạy học: Projetor, máy vi tính, bảng, phấn, tranh vẽ 3.3 Học liệu, dụng cụ, mơ hình, phương tiện: Giáo trình, mơ hình thực hành, dụng cụ nghề điện, điện tử,… 3.4 Các điều kiện khác: Người học tìm hiểu thực tế mạch điện tử cơng suất nhà máy, xí nghiệp công nghiệp Nội dung phương pháp đánh giá: 4.1 Nội dung: - Kiến thức: Đánh giá tất nội dung nêu mục tiêu kiến thức - Kỹ năng: Đánh giá tất nội dung nêu mục tiêu kỹ - Năng lực tự chủ trách nhiệm: Trong trình học tập, người học cần: + Nghiên cứu trước đến lớp + Chuẩn bị đầy đủ tài liệu học tập + Tham gia đầy đủ thời lượng môn học + Nghiêm túc trình học tập 4.2 Phương pháp: Người học đánh giá tích lũy mơn học sau: 4.2.1 Cách đánh giá - Áp dụng quy chế đào tạo Trung cấp hệ chính quy ban hành kèm theo Thông tư số 09/2017/TT-BLĐTBXH, ngày 13/3/2017 Bộ trưởng Bộ Lao động – Thương binh Xã hội - Hướng dẫn thực hiện quy chế đào tạo áp dụng tại Trường Cao đẳng Cơ giới sau: Điểm đánh giá Trọng số + Điểm kiểm tra thường xuyên (Hệ số 1) 40% + Điểm kiểm tra định kỳ (Hệ số 2) + Điểm thi kết thúc môđun 60% 4.2.2 Phương pháp đánh giá Phương pháp đánh giá Thường xuyên Phương pháp tổ chức Viết/ Thuyết trình Định kỳ Viết thực hành Kết thúc Vấn đáp Hình thức kiểm tra Chuẩn đầu đánh giá Tự luận/ A1, C1, C2 Trắc nghiệm/ Báo cáo Tự luận/ A2, B1, C1, C2 Trắc nghiệm/ thực hành Vấn đáp A1, A2, B1, B2, C1, Số cột Thời điểm kiểm tra Sau 10 Sau 35 Sau 90 mơđun thực hành thực hành mơ hình C2 4.2.3 Cách tính điểm - Điểm đánh giá thành phần điểm thi kết thúc mô đun chấm theo thang điểm 10 (từ đến 10), làm tròn đến chữ số thập phân - Điểm mô đun tổng điểm tất điểm đánh giá thành phần mô đun nhân với trọng số tương ứng Điểm mơ đun theo thang điểm 10 làm trịn đến chữ số thập phân Hướng dẫn thực mô đun 5.1 Phạm vi, đối tượng áp dụng: Đối tượng Trung cấp Điện công nghiệp 5.2 Phương pháp giảng dạy, học tập mô đun 5.2.1 Đối với người dạy * Lý thuyết: Áp dụng phương pháp dạy học tích cực bao gờm: Trình chiếu, thuyết trình ngắn, nêu vấn đề, hướng dẫn đọc tài liệu, tập cụ thể, câu hỏi thảo luận nhóm… * Thực hành: - Phân chia nhóm nhỏ thực tập thực hành theo nội dung đề - Khi giải tập, làm Thực hành, thí nghiệm, tập: Giáo viên hướng dẫn, thao tác mẫu sửa sai chỗ cho nguời học - Sử dụng mơ hình, học cụ mô để minh họa tập ứng dụng hệ truyền động dùng vi điều khiển, loại thiết bị điều khiển * Thảo luận: Phân chia nhóm nhỏ thảo luận theo nội dung đề * Hướng dẫn tự học theo nhóm: Nhóm trưởng phân cơng thành viên nhóm tìm hiểu, nghiên cứu theo yêu cầu nội dung học, nhóm thảo luận, trình bày nội dung, ghi chép viết báo cáo nhóm 5.2.2 Đối với người học: Người học phải thực nhiệm vụ sau: - Nghiên cứu kỹ học nhà trước đến lớp Các tài liệu tham khảo cung cấp nguồn trước người học vào học môn học (trang web, thư viện, tài liệu ) - Sinh viên trao đổi với nhau, thực thực hành báo cáo kết - Tham dự tối thiểu 70% giảng tích hợp Nếu người học vắng >30% số tích hợp phải học lại mơ đun tham dự kì thi lần sau - Tự học thảo luận nhóm: Là phương pháp học tập kết hợp làm việc theo nhóm làm việc cá nhân Một nhóm gồm 2-3 người học cung cấp chủ đề thảo luận trước học lý thuyết, thực hành Mỗi người học chịu trách nhiệm số nội dung chủ đề mà nhóm phân cơng để phát triển hồn thiện tốt toàn chủ đề thảo luận nhóm - Tham dự đủ kiểm tra thường xuyên, định kỳ - Tham dự thi kết thúc mô đun - Chủ động tổ chức thực tự học Tài liệu cần tham khảo: [1]- Tống Văn On, Hoàng Đức Hải, Họ vi điều khiển 8051, NXB Lao đông xã hội năm 2005 [2]- Ngô Diên Tập, Lập trình hợp ngữ, NXB Khoa học kỹ thuật năm 1998 [3]- Ngô Diên Tập, Vi xử lý đo lường điều khiển, NXB Khoa học kỹ thuật năm 1999 [4]- Đỗ Xuân Thụ, Hồ Khánh Lâm, Kỹ thuật vi xử lý máy tính, NXB Giáo dục năm 2000 [5]- Nguyễn Tăng Cường, Phan Quốc Thắng, Cấu trúc lập trình vi điều khiển, NXB Khoa học kỹ thuật năm 2004 [6]- Ngô Diên Tập, Vũ Trung Kiên, Phạm Xuân Khánh, Kiều Xuân Thực, Giáo trình vi xử lý cấu trúc máy tính, NXB Giáo dục năm 2007 BÀI 1: SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN CỦA VI ĐIỀU KHIỂN Mã bài: MĐ 24-01 Giới thiệu: Ứng dụng vi điều khiển để giải toán điều khiển cỡ nhỏ cỡ trung phổ biến lĩnh vực đời sống Việc giới thiệu lịch sử đời trình phát triển vi điều khiển nhằm cung cấp cho người học tổng quan vi điều khiển hướng phát triển tương lai Mục tiêu: - Hiểu lịch sử phát triển vi điều khiển - Hiểu cấu trúc chung vi điều khiển - Biết lĩnh vực ứng dụng hướng phát triển tương lai vi điều khiển Phương pháp giảng dạy học tập mở đầu - Đối với người dạy: Sử dụng phương pháp giảng giảng dạy tích cực (diễn giảng, vấn đáp, dạy học theo vấn đề); yêu cầu người học nhớ giá trị đại lượng, đơn vị đại lượng Đối với người học: Chủ động đọc trước giáo trình trước buổi học Điều kiện thực học - Phịng học chun mơn hóa/nhà xưởng: Phịng học chun mơn - Trang thiết bị máy móc: Máy chiếu thiết bị dạy học khác - Học liệu, dụng cụ, ngun vật liệu: Chương trình mơn học, giáo trình, tài liệu tham khảo, giáo án, phim ảnh, tài liệu liên quan - Các điều kiện khác: Khơng có Kiểm tra đánh giá học - Nội dung:  Kiến thức: Kiểm tra đánh giá tất nội dung nêu mục tiêu kiến thức  Kỹ năng: Đánh giá tất nội dung nêu mục tiêu kĩ  Năng lực tự chủ trách nhiệm: Trong trình học tập, người học cần: + Nghiên cứu trước đến lớp + Chuẩn bị đầy đủ tài liệu học tập + Tham gia đầy đủ thời lượng môn học + Nghiêm túc trình học tập - Phương pháp:  Điểm kiểm tra thường xuyên: điểm kiểm tra (hình thức: hỏi miệng)  Kiểm tra định kỳ lý thuyết: khơng có  Kiểm tra định hành: khơng có Nội dung chính: 10 HERE: JNB Ti, HERE Địa gián tiếp Đối với số lệnh, vùng tốn hạng hanh ghi mà nội dung điạ liệu, dấu @ cho biết địa gián tiếp ghi sử dụng R0 R1, DPTR PC tùy theo lệnh Ví dụ: ADD A, @ Rø MOVC A, @ A + PC Lệnh lấy byte liệu RAM nội địa nội dung Rø, lệnh thứ hai lấy byte lệu từ nhớ chương trình bên ngồi địa tổng nội dung A với đếm chương trình Lưu ý giá trị đếm chương trình cổng địa lệnh sau lệnh MOVC, hai lệnh giá trị lấy từ nhớ nạp vào ghi A Dữ liệu tức thời Các lệnh dung cách định địa tức thời cung cấp liệu vùng toán hạng thành phần lệnh, đứng trước liệu tức thời dấu # Ví dụ: CONSTANT EQU 100 MOV A, # OFEH ORL 40H, # CONSTANT Tất thao tác với liệu tức thời (ngoại trừ MOV DPTR, # data) dung liệu bít Dữ liệu tức thời tính tốn số 16 bít sau byte thấp sử dụng, tất bít byte phải giống (00H FFH) thông báo bới “value will not fit in a byte” xuất Ví dụ: Cú pháp lệnh sau MOV A, # 0FF00H MOV A, # 00FFH MOV A, # 0FE00H MOV A, # 01FFH Nếu dung số thập phân có dấu thí giá trị từ -256 đến +256 sử dụng Ví dụ hai lệnh sau tương đương hợp lệ MOV A, # -256 MOV A, # 0FF00H Địa liệu Có nhiều lệnh trung xuất nhớ cách dung địa trực tiếp cần địa RAM nội (00H đến 7FH) địa SFR (80H đến 0FFH) đặt vùng toán hạng Các ký hiệu định nghĩa sẵn dùng để biểu thị địa SFR Ví dụ: MOV A, 45 H 130 MOV A, SBUF Địa bít Một đặc điểm 8051 khả trung xuất bít mà khơng cần đến kỹ thuật mặt nạ byte, lệnh đưa địa bít RAM nội (00H đến 7FH) địa bít vùng SFR (80H đến 0FFH) Có phương pháp để xác định địa bít lệnh: (a) địa cho biết cách rõ rang (b) dùng dấu chấm địa byte với vị trí bít (c) dùng ký hiệu vó sẵn hợp ngữ Ví dụ: SETB 0E7H ; địa rõ rang SETB ACC.7 ; dấu chấm JNB Ti, $ ; Ti ký hiệu có sẵn JNB 99H, $ ; giống Địa lệnh Địa lệnh đặt vùng toán hạng lệnh nhảy bao gồm lệnh nhảy tương đối (SJMP lệnh nhảy có điều kiện) lệnh nhảy lệnh gọi tuyệt đối (ACALL, AJMP) lệnh gọi lệnh nhảy dài (LJMP, LCALL) Địa lệnh thường biểu diễn nhản, ví dụ: HERE: … SJMP HERE ASM51 xác định giá trị địa đưa vào lệnh offset bít có dấu, địa trang 11 bít địa dài 16 bít tương ứng Lệnh nhảy lệnh gọi tổng quát Phần mềm ASM51 cho phép người lập trình sử dụng dạng lệnh tổng quát JMP CALL Trong “JMP” thay cho SJMP, AJMP LJMP “CALL” thay cho ACALL LCALL Trình hợp dịch biến đổi dạng tổng quát thành lệnh thích hợp theo số quy luật đơn giản: Sang dạng địa gần (chỉ JMP) khơng có tham chiếu thuận đích nhảy vịng -128 đến +127 ví trí sang dạng tuyệt đối khơng có tham chiếu thuận lệnh theo sau JMP CALL khối 2K với lệnh đích khơng thể dùng dạng gần biến đối thành dạng địa dài Việc biến đổi khơng thiết chọn lựa cách lập trình tốt Ví dụ lệnh nhảy thuận đến đích cách vài lệnh dụng tổng quát JMP chuyểnt thành LJMP chọn SJMP thí tốt Hãy xem đoạn chương trình dùng ba lệnh nhảy tổng quát sau đây: lệnh nhảy thứ (dịng thứ 3) dịch thành SJMP đích đến trước lệnh nhảy (có nghĩa khơng có tham chiếu thuận) giá trị offset 131 khoảng -128 đến +127, Chỉ dẫn ORG dòng tạo khoảng cách 200 vị trí nhản START lệnh nhảy thứ hai nên việc biến đối dòng thứ AJMP offset lớn phạm vi SJMP, lưu ý địa lệnh theo sau lệnh nhảy thứ hai (12FCH) địa START trang 2k (100 H – 17FFH) Lệnh nhảy thứ ba dịch thành LJMP đích nhảy (FINISH) chưa định nghĩa dịch lệnh JMP (có nghĩa tham chiếu thuận sử dụng) MCS-51 MACRO ASSEMBLER GENERIC LOC CBJ LINE SOURCE 1234 ORG 1234H 1234 04 START: INC A 1235 80F0 JMP START; dịch thành SJMP 12FC ORG START + 200 12FC 4134 JMP START; dịch thành AJMP 12FE 021301 JMP FINISH; dịch thành LJMP 1301 04 FINISH: INC A END TÍNH BIỂU THỨC TRONG KHI HỢP DỊCH Các giá trị số vùng tốn hạng biểu diễn theo cách: (a) cho biết rõ rang (VD: 0EFH), (b) dùng ký hiệu có sẵn (VD: ACC) (c) dùng biểu thức (VD: 2+3) Việc dùng biểu thức đặc điểm mạnh tạo chương trình hợp ngữ giúp dễ đọc linh động Khi biểu thức áp dụng assembler tính tốn giá trị chèn vào mã lệnh Tất biểu thức tính tốn sở phép tính số học 16 bít Tuy nhiên, kết bít 16 bít chèn vào câu lệnh tùy theo u cầu Ví dụ: Các dịng lệnh sau tương đương MOV DPTR, # 04FFH + MOV DPTR, # 0502H ; toàn 16 bít dùng Tuy nhiên, áp dụng biểu thức cho câu lệnh MOV A, # data xuất bỗi “value will not fit in a byte” , khái qt quy luật tính tốn biếu thức sau: Cơ số Cơ số số Intel quy định sau: Sối nhị phân kết thúc chữ “B”, số bát phân “O” “Q”, “H” số thương lục phân “D” khơng có số thập phân Các lệnh sau tương đương MOV A, # 15 MOV A, # 1111B MOV A, # 0FH MOV A, # 17Q MOV A, #15D Lưu ý: Phải có ký số trước ký tự số hexa để phân biệt chúng với nhản (“0A5H”) Chuổi ký tự 132 Chuổi dùng ký tự dùng làm tốn hạng biểu thức, trình dịch hợp ngữ chuyển mã ASCII sang số nhị phân tương đương, ký tự bao dấu móc đơn Ví dụ: CJNE A, # ‘Q’ AGAIN SUBB A, # ‘Q’ ; chuyển ASCII sang binary MOV DPTR, # ‘AB’ MOV DPTR, # 4142H ; giống lệnh phía Toán tử số học Các toán tử số học gồm có: + phép cộng - phép trừ * phép nhân / phép chia MOV phép modulo (sớ dư phép chia) Ví dụ hai lệnh sau tương đương nhau: MOV A, # 10 + 10 H MOV A, # 1AH Hai lệnh sau tương đương nhau: MOV A, # 25 MOD MOV A, # Vì tốn tử MOD bị hiểu ký tự nên cần phải phân cách toán tử với toán hạng ký tự space Tab, toán hạng phải bao ngoặc đơn, áp dụng tương tự tốn tử khác có cú pháp ký tự chữ Toán tử logic Các tốn tử logic gồm có • OR phép OR • AND phép AND • XOR phép EXOR • NOT phép đảo Các phép xử lý bít tốn hạng, toán tử toán hạng phải cách ký tự space Tab Ví dụ: hai lệnh sau tương đương: MOV A, # ‘9’ AND ØFH MOV A, # Tốn tử NOT có toán hạng, ba lệnh MOV sau tương đương nhau: THERE EQU MINUS-THERE EQU -3 MOV A, # (NOT THERE) +1 MOV A, # MINUS-THERE MOV A, # 11111101B Các toán tử đặc biệt Các toán tử đặc biệt gồm có 133 SHR dịch phải SHL dịch trái HIGH byte cao LOW byte thấp () tính trước tiên Hai lệnh say tương đương MOV A, # HIGH 1234 H MOV A, # 12 H Toán tử quan hệ Khi thao tác quan hệ áp dụng hai tốn hạng, kết có hai giá trị sai (0000H) (FFFFH), toán tử gồm: EQ = NE khác LT < nhỏ LE lớn GE >= lớn Lưu ý: Là tốn tử có hai cách biểu diễn (VD: “EQ” “=”) ví dụ quan hệ sau cho kết “đúng” MOV A, # = MOV A, # NE MOV A, # ‘X’ LT ‘Z’ MOV A, # ‘X’ = ‘X’ MOV A, # > MOV A, # 100 GE 50 Tất lệnh hợp ngữ tương đương lệnh sau MOV A, # Ø FFH Mặc dù việc tính tốn biểu thức cho kết 16 bít (ØFFFFH) vị dụ có byte thấp sử dụng lệnh MOV byte Kết không xem lớn trường hợp số có dấu giá trị 16 bít FFFFH giá trị bít FFH -1 Các ví dụ biểu thức Sau vị dụ biểu thức giá trị kết Biểu thức Kết ‘B’ – ‘A’ 0001H 8/3 0002H 155MOD2 0001H 4*4 0010H AND 0000H NOT FFFEH ‘A’ SHL 4100H LOW 65535 00FFH (8+1)*2 0012H EQ 0000H ‘A’ LT ‘B’ FFFH 3 < > = NOT AND OR XOR Khi thực phép tính có mứu ưu tiên thứ tự tính từ trái sang phải Biểu thức Giá trị HIGH (‘A’ SHL 8) 0041H HIGH ‘A’ SHL 0000H NOT ‘A’ – FFBFH ‘A’ OR ‘A’ SHL 4141H Các dẫn Các dẫn lệnh phần mềm hợp ngữ, chúng mã lệnh vi điều khiển Tuy chúng đặt vùng gợi nhớ chương trình với ngoại lệ DB DW không ảnh hưởng trực tiếp lên nội dugn nhớ ASM51 cung cấp vài loại dẫn sau: Các dẫn điều khiển trạng thái (ORG, END, USING) Chỉ dẫn định nghĩa ký hiệu (SEGMENT, EQU, SET, DATA, IDATA, XDATA, BIT, CODE) • Khởi tạo vùng nhớ (DS, DBIT, DB, DW) • Liên kết chương trình (PUBLIC, EXTRN, NAME) • Chọn vùng nhớ đoạn (RSEG, CSEG, DSEG, ISEG, BSEG, XSEG) • Điều khiển trạng thái ORG (set origin) Dạng thức dẫn ORG ORG biểu thức Chỉ dẫn ORG thay đổi đếm vị trí để xác định điểm bắt đầu dịng lệnh sau, khơng cho phép đặt nhản dẫn • • ORG 100H ; đặt đếm vị trí 100H ORG ($+1000H); AND 0F00H ; đặt đếm khối 4K 135 Chỉ dẫn ORG sử dụng với vùng nhớ đoạn Nếu đoạn hành tuyệt đối thí giá trị địa tuyệt đối đoạn hành Nếu đoạn định vị tác động thí giá trị biểu thức ORG sem offset từ địa sở vị trí hành đoạn END Cú pháp dẫn END END Chỉ dẫn END nên đặt vị trí cuối file nguồn, khơng cho phép dùng nhản trình dịch khơng xử lý theo sau lệnh END USING Cú pháp USING biểu thức Chỉ dẫn báo cho ASM51 biết dãy ghi hoạt động, sau dẫn ghi ký hiệu ARØ đến AR7 ký hiệu biến đổi thành địa trực tiếp tương ứng dãy ghi hoạt động USING PUSH AR7 USING PUSH AR7 Lệnh PUSH đẩy liệu vào 1FH (R7 dãy ghi 3), lệnh PUSH thứ hai đẩy liệu vào 0FH (R7 dãy ghi 1) Lưu ý: USING không thực việc chuyển đổi dãy ghi mà báo dãy ghi hoạt động cho ASM51, việc chuyển đổi ghi thực lệnh 8051 MOV PSW, # 00011000B ; chọn dãy ghi USING ; PUSH AR7 ; dịch thành PUSH 1FH MOV PSW, # 00001000B ; chọn dãy ghi PUSH AR7 ; dịch thành PUSH 0FH Định nghĩa ký hiệu Chỉ dẫn tạo ký hiệu để biểu diễn vùng nhớ đoạn, ghi, số địa chỉ, không dùng nhản đứng trước dẫn Các ký hiệu định nghĩa dẫn không định nghĩa trước sau khơng định nghĩa lại, ngoại trừ dẫn SET Các dẫn định nghĩa ký hiệu mô tả sau: Segment Cú pháp ký hiệu SEGMENT kiểu đoạn Ký hiệu tên đoạn định vị lại Trong việc dùng đoạn, ASM51 trình dịch phức tạp trình dịch hợp ngữ thơng thường khác, trình hỗ trợ kiểu đoạn “code” “data” Tuy nhiên, ASM51 có định nghĩa them kiểu đoạn khác, kiểu đoạn định nghĩa cho 8051 136 • • • • • CODE (đoạn mã) XDATA (vùng nhớ liệu ngoài) DATA (vùng nhớ liệu bên trong, truy xuất địa trực tiếp 00H 7FH) IDATA (toàn vùng nhớ truy xuất địa gián tiếp 00H7FH, 00H – FFH 8052) BIT (vùng nhớ bít, byte từ 20H – 2FH nhớ liệu trong) Ví dụ: EPROM SEGMENT CODE Khai báo EPROM SEGMENT kiểu CODE, lưu ý câu đơn giản khai báo EPROM gì, để thực bắt đầu sử dụng SEGMENT phải dùng dẫn RSEG EQU (equate) Cú pháp ký hiệu EQU biểu thức Chỉ dẫn gán giá trị số cho ký hiệu, ví dụ: N27 EQU 27 ; gán giá trị 27 cho N27 HERE EQU $ ; gán giá trị đếm ; vị trí cho HERE CR EQU ODH ; đặt 0R ODH MESSAGE DB ‘This is a message’ LENGTH EQU $ - MESSAGE ;“LENGTH” độ dài ; “MESSAGE” Các dẫn định nghĩa ký hiệu khác Chỉ dẫn SET tương tự EQU khác sau định nghĩa lại ký hiệu dẫn SET khác Các dẫn DATA, IDATA, XDATA, BIT CODE gán địa kiểu đoạn tương ứng cho ký hiệu, dẫn nhất, kết tương tự nhận cách dùng dẫn EQU Tuy nhiên, dùng chung cung cấp khả kiểm tra loại ASM51 Xem ví dụ sau: FLAG EQU 05H FLAG BIT 05H SETB FLAG SETB FLAG MOV FLAG 1, # MOV FLAG 2, # Việc sử dụng FLAG dòng lệnh cuối xuất thông báo lỗi “ data segment address expected” ASM 51 vài FLAG định nghĩa địa bít dẫn bit nên dùng lệnh set bit dùng lệnh MOV byte Mặc dù FLAG có giá trị 05H định nghĩa EQU khơng có khơng gian địa tương ứng, ưu điểm EQU mà nói khác khuyết điểm, cách định nghĩa ký hiệu địa tương ứng với vùng nhớ xác định thông qua dẫn BIT, DATA, XDATA … người lập trình tận dụng ưu điểm ASM 51 nhờ khả kiểm tra tránh rắc rối dùng sai ký hiệu 137 Khởi tạo dành trước vùng nhớ Các dẫn khởi tạo dành trước vùng nhớ có độ dài word, byte bít Vùng nhớ dành trước bắt đầu vị trí xác định giá trị hành đếm ví trí đoạn tác động hành, đặt nhản phía trước dẫn này, dẫn là: DS (define storage) Cú pháp [ nhản:] DS biểu thức Vùng nhớ dành trước dẫn byte, dùng cho kiểu đoạn ngoại trứ BIT, biểu thức phải biểu thức thời gian dịch hợp lệ khơng có tham chiếu thuận khơng định vị lại tham chiếu Khi nhận thấy phát biểu DS chương trình, đếm vị trí đoạn hành tăng lên giá trị biểu thức, tổng giá trị đếm ví trí với giá trị biểu thức khơng vượt giới hạn không gian địa hành Các phát biểu sau tạo vùng đệm 40 byte đoạn liệu nội: DSEG AT 30H ; đặt đoạn liệu (tuyệt đối, bên trong) LENGTH EQU 40 BUFFER: DS LENGTH ; dành trước 40 byte Nhãn BUFFER biểu diễn địa vị trí đầu tiêu vùng nhớ dành trước Trong ví dụ địa 30H bời AT 30H định nghĩa DSEG Vùng nhớ bị xóa lệnh sau: MOV R7 , # LENGTH MOV R0, # BUFFER Loop: MOV @ R0, # DJNZ R7, Loop (tiếp tục) Để tạo vùng đệm 1000 byte RAM bắt đầu 4000H, dẫn sau sử dụng: XSTART EQU 4000H XLENGTH EQU 1000 XSEG AT XSTART XBUFFER DS XLENGTH Có thể xóa vùng đệm lệnh sau MOV DPTR, # XBUFFER MOVX @DPTR, A INC DPTR MOV A, DPL Loop: CLR A 138 CJNE MOV CJNE A, # Low (XBUFFER + XLENGTH + 1), Loop A, DPH A, # HIGH (XBUFFER + XLENGTH + 1), Loop (tiếp tục) Ví dụ minh họa sử dụng toán tử ASM 51 biểu thức thời gian dịch hợp lệ; khơng có lệnh so sánh trỏ liệu với giá trị bất tức thời nên cần phải so sánh hai lần, với byte cao với byte thấp DPTR, lệnh CJNE làm việc với ghi A ghi nên byte DPTR phải chuyển vào A trước lệnh CJNE, vòng lập kết thúc DPTR XBUFFER + XLENGTH + (phải cộng them DPTR tăng lênh sau lệnh MOVX) DBIT Cú pháp: [ nhãn:] DBIT biểu thức Chỉ dẫn dành trước vùng nhớ có đơn vị BIT dùng đoạn BIT Biểu thức phải biểu thức thời gian dịch hợp lệ khơng có tham chiếu thuận Khi gặp phát biểu DBIT chương trình, đếm vị trí đoạn bít hành tăng lên giá trị biểu thức Lưu ý đoạn BIT, đơn vị đếm vị trí bít, khơng phải byte, dẫn sau tạo ba cờ đoạn BIT tuyệt đối BSEG KBFLAG: PRFLAG: DKFLAG: ; đoạn BIT (tuyệt đối) DBIT ; trạng thái bàn phím DBIT ; trạng thái máy in DBIT ; trạng thái đĩa Vì ví dụ khơng có định nghĩa địa cho BSEG, địa cờ định nghĩa DBIT xác định (nếu người ta muốn làm thế) cách kiểm tra bảng ký hiệu file LST M51 Nếu định nghĩa lần áp dụng BSEG KBFLAG đặt vị trí 00H (bít Ø địa byte 20H) Nếu bít khác định nghĩa trước BSEG sau bít đặt sau bít cuối định nghĩa DB (define byte) Cú pháp: [nhãn:] DB biểu thức [, biểu thức] [….] Chỉ dẫn DB khởi tạo vùng nhớ mã với giá trị byte thực tế dẫn đặt số liệu vùng nhớ mã, đoạn mã phải tác động Danh sách biểu thức chuỗi gồm nhiều giá trị byte (mỗi byte biểu thức cách dấu phẩy) Chỉ dẫn DB cho phép dùng chuỗi ký tự (được bao dấu móc đơn) dài ký tự phần biểu thức Mỗi ký tự chuỗi biến đổi thành 139 mã ASCII tương ứng Nếu nhãn sử dụng gán địa byte Ví dụ: CSEG SQUARES: MESSAGE: DB AT DB ‘Login’, 0100H 0,1,4,9,16,25 ; bình phương số ; từ đến ; ký tự kết thúc chuỗi NULL Khi hợp dịch kết dạng hexa gán cho nhớ chương trình bên ngồi Địa Nội dung 0100 00 0101 01 0102 04 0103 09 0104 10 0105 19 0106 4C 0107 6F 0108 67 0109 69 010A 6E 010B 3A 010C 00 DW (define word) Cú pháp: [nhãn:] DW biểu thức [, biểu thức] […] Tương tự DB khác dẫn dùng đến vị trí nhớ (16 bít) gán cho đề mục liệu CSEG AT 200H DW $, ‘A’, 1234H, , ‘RC’ Kết dạng thập lục phân sau Địa Nội dung 0200 02 0201 00 0202 00 0203 41 0204 12 0205 34 0206 00 0207 02 0208 42 0209 43 Liên kết chương trình 140 Các dẫn liên kết chương trình cho phép modul (file) hợp dịch riêng lien kết với cách cho phép tham chiếu modul cách đặt tên modul, modul xem file (trong thực tế modul gồm nhiều file) PUBLIC Cú pháp: PUBLIC [, ký hiệu] […] Chỉ dẫn PUBLIC cho phép danh sách modul xác định biết sử dụng bên modul hợp dịch hành Một ký hiệu khai báo PUBLIC phải định nghĩa modul hành qua việc khai báo PUBLIC cho phép modul tham chiếu modul khác Vd: PUBLIC INCHAR, OUTCHAR, INLINE, OUTSTR EXTRN Cú pháp: EXTRN kiểu đoạn ký hiệu [ ,ký hiệu] […] Chỉ dẫn EXTRN liệt kê ký hiệu tham chiếu modul hành, ký hiệu định nghĩa modul khác Danh sách ký hiệu bên ngồi phải có kiểu đoạn kèm theo với ký hiệu danh sách (Các kiểu đoạn CODE, XDATA, DATA, IDATA, BIT NUMBER NUMBER ký hiệu không kiểu định nghĩa EQU) kiểu đoạn cho biết phương pháp mà ký hiệu sử dụng thông tin quan trọng thời gian lien kết để bảo đảm ký hiệu sử dụng cách thích hợp modul khác Các dẫn PUBLIC EXTRN hoạt động chung với Hãy xem hai file sau MAIN.SRC MESSAGES.SRC, chương trình HELLO GOODBYE định nghĩa modul MESSAGES, modul khác sử dụng nhờ dẫn PUBLIC, chương trình gọi modul MAIN chúng khơng định nghĩa Chỉ dẫn EXTRN khai báo ký hiệu định nghĩa modul khác MAIN.SRC EXTRN CODE (HELLO, GOOD_BYE) CALL HELLO CALL GOOD_BYE END MESSAGES.SRC PUBLIC HELLO, GOOD_BYE HELLO: (bắt đầu chương trình con) RET GOOD_BYE: (bắt đầu chương trình con) RET END Các file MAIN.SRC MESSAGES.SRC khơng phải chương trình hồn chỉnh chúng phải hợp dịch riêng sau liên kết với để tạo thành chương 141 trình thực Trong trình liên kết tham chiếu bên ngồi tính với địa chèn vào đích lệnh gọi NAME Cú pháp: NAME tên modul Tên modul áp dụng quy tắc tên ký hiệu, không cho biết tên, modul lấy tên file (khơng có đường dẫn phần mở rộng) Nếu khơng có dẫn NAME chương trình bao gồm modul cho file Khái niệm modul vấn đề chương trình nhỏ kể chương trình kích thước trung bình Vd: Bao gồm vài file hồn chỉnh với segment định vị lại Tuy nhiên, chương trình lớn (vài ngàn dịng lệnh nhiều hơn) nên chia nhỏ vấn đề thành nhiều modul modul gồm nhiều file chứa chương trình có chung mục đích Các dẫn chọn segment Khi trình dịch hợp ngữ gặp dẫn hướng mã lệnh liệu vào segment chọn segment khác chọn dẫn chọn segment Chỉ dẫn chọn segment định vị lại chọn trước tạo chọn segment tuyệt đối RSEG (Relocatable segment) Cú pháp: RSEG tên segment Trong “tên segment” tên segment định vị lại định nghĩa trước dẫn SEGMENT, dẫn RSEG hướng mã lệnh liệu theo sau vào segment có tên kèm theo gặp dẫn chọn segment khác Chọn segment tuyệt đối RSEG dùng để chọn segment định vị lại segment tuyệt đối chọn dẫn sau: CSEG (AT địa chỉ) DSEG (AT địa chỉ) ISEG (AT địa chỉ) BSEG (AT địa chỉ) XSEG (ATđịa chỉ) Các dẫn chọn segment tuyệt đối vùng mã lệnh, vùng liệu trong, vùng liệu gián tiếp, vùng bít, vùng liệu ngồi Nếu segment tuyệt đối cung cấp (bằng thông báo “AT địa chỉ”) trình dịch hợp ngữ kết thúc segment tuyệt đối cuối có kiểu segment xác định tạo segment tuyệt đối khác bắt đầu địa Nếu không xác định địa tuyệt đối segment tuyệt đối cuối kiểu segment xác định tiếp tục Nếu khơng có segment tuyệt đối thuộc kiểu chọn trước địa tuyệt đối bỏ qua segment tạo bắt đầu vị trí Khơng cho phép tham chiếu thuận địa bắt đầu phải tuyệt đối Mỗi segment có đếm ví trí riêng đếm ln đặt khởi tạo, segment mặc định segment mã lệnh tuyệt đối trạng thái ban đầu assembler vị trí 0000H segment mã lệnh địa tuyệt đối Khi segment khác chọn lần đếm vị trí segment trước cịn trì giá trị tác động cuối cùng, segment trước chọn lại, đếm vi trí nhận giá trị tác động sau Chỉ dẫn ORG dùng để thay đổi đếm ví trí 142 segment chọn hành Hình 7.2 ví dụ việc định nghĩa, khởi tạo segment tuyệt đối định vị lại LOC OBJ LINE SOURCE ONCHIP SEGMENT EPROM SEGMENT BSEG AT70H 0070 FLAG1: DBIT 0071 FLAG2: DBIT DATA ; segment ; liệu định vị lại CODE ; segment mã ; lệnh định vị lại ; bắt đầu segment ; BIT tuyệt đối RSEG ONCHIP 0000 TOTAL: DS 0001 10 COUNT: DS 0002 11 SUM16: DS 12 13 0000 750000 14 RSEG BEGIN: EPROM : bắt đầu segment MOV TOTAL, # 0; 15 (tiếp tục chương trình) 16 END Hai dịng mô tả ký hiệu ONCHIP EPROM segment loại DATA (RAM trong) CODE Dòng bắt đầu segment tuyệt đối BIT khởi tạo địa bit 70H (bít Ø byte 2EH), sau FLAG1 FLAG2 tạo nhãn với địa bit tương ứng 70H 71H Chỉ dẫn RSEG dòng bắt đầu segment định vị lại ONCHIP vùng RAM TOTAL COUNT nhãn tương ứng với vị trí byte SUM16 nhãn tương ứng với vị trí word Chỉ dẫn RSEG dòng 13 bắt đầu segment định vị lại EPROM, vùng nhớ chương trình Nhãn BEGIN địa lệnh thể EPROM Lưu ý xác định địa nhãn TOTAL, COUNT, BEGIN nhãn nằm segment định vị lại File đối tượng phải xử lý trình liên kết / định vị với địa đầu xác định đoạn ONCHIP EPROM, file liệt kê M51 tạo trình lien kết cho biết địa tuyệt đối nhãn Tuy nhiên, FLAG1 FLAG2 luôn tương ứng với địa bít 70H 71H chúng định nghĩa đoạn tuyết đối BIT 143 CÁC ĐIỀU KHIỂN ASSEMBLER Các điều khiển hợp dịch tạo khuôn dạng cho file liệt kê file đối tượng cách điều phối hoạt động ASM51, thường điều khiển hợp dịch ảnh hưởng đến hình thức file liệt kê khơng ảnh hưởng đến chương trình, chúng đưa vào dịng lệnh hợp dịch chương trình đưa vào file nguồn điều khiển hợp dịch file nguồn phải bắt đầu dấu $ nằm cột thứ Có hai loại điều khiển hợp dịch: Loại loại tổng quát Các điều khiển đặt dịng lệnh vị trí bắt đầu file nguồn, có điều khiển đặt trước điều khiển khác Các điều khiển tổng quát đặt nơi file nguồn Hình 7.3 trình bày điều khiển hợp dịch hỗ trợ bở ASM51 HOẠT ĐỘNG LIÊN KẾT Khi phát triển chương trình ứng dụng lớn thơng thường nên chia cơng việc thành chương trình modul chứa đoạn mã lệnh (các chương trình thường viết riêng), phương pháp gọi lập trình theo modul Các modul thường loại định vị lại có nghĩa chúng khơng xác định địa cụ thể vùng nhớ chương trình liệu nên phải cần chương trình liên kết / định vị để kết nối modul thành modul đối tượng tuyệt đối chạy RL51 Intel chương trình liên kết / định vị điển hình nhân modul định vị lại làm ngõ vào sau tạo chương trình mã máy chạy file liệt kê chứa đồ nhớ bảng ký hiệu Khi modul định vị lại kết nối, tất giá trị ký hiệu tính tốn chèn giá trị tính vào file kết quả, chương trình RL51 khởi động sau: Câu hỏi ơn tập : 1.Tính biểu thức hợp dịch nào? 2.Trình bày tập hoạt động liên kết chương trình? TÀI LIỆU THAM KHẢO [1]- Tống Văn On, Hoàng Đức Hải, Họ vi điều khiển 8051, NXB Lao đông xã hội, Hà Nội 2005 [2]- Ngơ Diên Tập, Lập trình hợp ngữ, NXB Khoa học kỹ thuật, Hà Nội 1998 [3]- Ngô Diên Tập, Vi xử lý đo lường điều khiển, NXB Khoa học kỹ thuật, Hà Nội 1999 [4]- Đỗ Xuân Thụ, Hồ Khánh Lâm, Kỹ thuật vi xử lý máy tính, NXB Giáo dục, Hà Nội 2000 [5]- Nguyễn Tăng Cường, Phan Quốc Thắng, Cấu trúc lập trình vi điều khiển, NXB Khoa học kỹ thuật, Hà Nội 2004 [6]- Ngô Diên Tập, Vũ Trung Kiên, Phạm Xuân Khánh, Kiều Xuân Thực, Giáo trình vi xử lý cấu trúc máy tính, NXB Giáo dục, Hà Nội 2007 144

Ngày đăng: 15/11/2023, 13:31