Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 150 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
150
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: THỰC TẬP TỐT NGHIỆP NGHỀ: ĐIỆN TỬ CƠNG NGHIỆP TRÌNH ĐỘ: TRUNG CẤP Ban hành kèm theo Quyết định số: / QĐ-CĐCG ngày … tháng… năm 2022 Trường Cao đẳng Cơ giới Quảng Ngãi, năm 2022 (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 nguyên 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 chun 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 20 Biên Soạn Hồ Văn Tịnh - Chủ biên MỤC LỤC SCON.6 103 SCON.5 103 SCON.4 103 REN 103 SCON.3 103 SCON.2 103 RB8 103 SCON.1 103 SCON.0 103 IE.7 113 ES 113 EX1 113 IP.7 113 ET2 113 ET1 113 GIỚI THIỆU .129 MỞ ĐẦU 130 HOẠT ĐỘNG CỦA ASSEMBLER 131 CẤU TRÚC CHƯƠNG TRÌNH DỮ LIỆU 133 TÍNH BIỂU THỨC TRONG KHI HỢP DỊCH 137 CÁC ĐIỀU KHIỂN ASSEMBLER 148 MÔ ĐUN: LẬP TRÌNH VI ĐIỀU KHIỂN Mã mơ đun: MĐ 21 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 chun 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 tồn cho người thiết bị Chương trình khung nghề điện tử cơng nghiệp Thời gian đào tạo (giờ) Mã MH/MĐ Tên mô đun, mơn học I Các mơn học chung/đại cương Chính trị Pháp luật Giáo dục thể chất 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 MĐ 13 II.2 Số Tín 12 1 Giáo dục quốc phòng - An ninh Tổng số 255 30 15 30 45 Lý thuyết 94 15 21 Tin học 45 15 Ngoại ngữ (Anh văn) 90 30 Các môn học, mô đun chuyên môn ngành, nghề Môn học, mô đun sở 405 161 An toàn lao động 30 15 Điện kỹ thuật 60 40 Máy điện 90 30 Vẽ điện 30 12 Linh kiện điện tử 60 20 Đo lường điện tử 45 19 Điện 90 25 Môn học, mô đun 1245 324 Trong Thực hành/ thực Kiểm tra tập/thí nghiệm/ tập 148 13 24 21 13 2 29 56 220 13 16 56 16 36 23 60 871 24 4 50 chuyên môn ngành, nghề MĐ 14 Trang bị điện MĐ 15 Mạch điện tử MĐ 16 Điện tử tương tự MĐ 17 Kỹ thuật xung - số MĐ 18 Kỹ thuật cảm biến MĐ 19 Điện tử nâng cao MĐ 20 Thiết kế, chế tạo mạch in hàn linh kiện MĐ 21 Vi điều khiển MĐ 22 PLC MĐ 23 Rô bốt công nghiệp MĐ 21 Thực tập tốt nghiệp Tổng cộng 3 60 90 60 75 75 180 20 25 20 25 30 50 37 60 36 46 42 121 4 4 5 79 90 90 120 105 300 1905 30 32 47 45 15 594 55 53 67 54 275 1214 5 6 10 97 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 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 vi điều khiển 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 mơđun Vấn đáp thực hành 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, thực hành C2 mơ hình Số cột Thời điểm kiểm tra Sau 10 Sau 35 Sau 90 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 tử 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 tồ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Đ 21 -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 - Xưởng vi điều khiển hóa/nhà xưởng: Xưởng vi điều khiể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 Đị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 khoảng -128 đến +127, Chỉ dẫn ORG dòng tạo khoảng cách 200 vị 136 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 ; tồ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 quát 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ự 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ụ: 137 CJNE A, # ‘Q’ AGAIN SUBB A, # ‘Q’ ; chuyển ASCII sang binary MOV DPTR, # ‘AB’ MOV DPTR, # 4142H ; giống lệnh phía Tốn tử số học Các tố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 tốn tử với tố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 toá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, tố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ó tố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 tốn tử đặc biệt gồm có SHR dịch phải SHL dịch trái HIGH byte cao LOW byte thấp 138 () 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 toá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 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 140 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 • • CODE (đoạn mã) XDATA (vùng nhớ liệu ngồi) 141 • • • 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 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 142 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ệ 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 CJNE A, # Low (XBUFFER + XLENGTH + 1), Loop A, DPH Loop: CLR A MOV 143 CJNE 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, 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ự khơng phải phần biểu thức Mỗi ký tự chuỗi biến đổi thành mã ASCII tương ứng Nếu nhãn sử dụng gán địa byte Ví dụ: CSEG AT 0100H 144 SQUARES: MESSAGE: DB DB ‘Login’, 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 Đị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 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 145 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 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 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 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 146 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 đặ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í 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 147 ONCHIP SEGMENT EPROM SEGMENT BSEG AT70H 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 0070 FLAG1: DBIT 0071 FLAG2: DBIT 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 ln ln tương ứng với địa bít 70H 71H chúng định nghĩa đoạn tuyết đối BIT 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 148 đ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 ngồi 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? 149 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 150