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

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

169 8 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 đề Giáo Trình Lập Trình Vi Điều Khiển
Tác giả Hồ Văn Tịnh
Trường học Trường Cao Đẳng Cơ Giới
Chuyên ngành Điện Công Nghiệp
Thể loại giáo trình
Năm xuất bản 2022
Thành phố Quảng Ngãi
Định dạng
Số trang 169
Dung lượng 2,29 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: LẬP TRÌNH VI ĐIỀU KHIỂN NGHỀ: ĐIỆN CƠNG NGHIỆP TRÌNH ĐỘ: CAO ĐẲNG LIÊN THÔNG 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 hoàn thiện Quảng Ngãi, ngày tháng năm 2022 Biên Soạn Hồ Văn Tịnh - Chủ biên MỤC LỤC SCON.6 .111 SCON.5 .111 SCON.4 .111 REN 111 SCON.3 .111 SCON.2 .111 RB8 111 SCON.1 .111 SCON.0 .111 IE.7 120 ES 120 EX1 120 IP.7 121 ET2 121 ET1 121 GIỚI THIỆU 137 MỞ ĐẦU 138 HOẠT ĐỘNG CỦA ASSEMBLER 140 CẤU TRÚC CHƯƠNG TRÌNH DỮ LIỆU 142 TÍNH BIỂU THỨC TRONG KHI HỢP DỊCH .148 CÁC ĐIỀU KHIỂN ASSEMBLER .166 GIÁO TRÌNH MƠDUN Tên modun: LẬP TRÌNH VI ĐIỀU KHIỂN Mã mơ đun: MĐ 11 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 cơng nghiệp cao đẳng liên thơng Thời gian đào tạo (giờ) Trong Thực Mã MH/ MĐ/ Số Tên môn học, mô đun HP tín Tổng số hành/thực Lý tập/Thí thuyết nghiệm/bài Kiểm tra tập/thảo luận I Các môn học chung/đại cương MH01 Chính trị MH02 Pháp luật MH03 Giáo dục thể chất MH04 Giáo dục quốc phòng - An 180 63 107 10 1 45 15 30 26 16 27 30 15 14 ninh MH05 Tin học 30 19 MH06 Ngoại ngữ (Anh văn) 30 12 16 II Các mô đun, môn học chuyên môn nghành, nghề MH07 Ngoại ngữ chuyên ngành 60 45 10 1 5 MĐ08 MĐ09 MĐ10 MĐ11 MH12 MĐ13 Kỹ thuật số Kỹ thuật cảm biến Truyền động điện Lập trình vi điều khiển Tổ chức sản xuất Đồ án môn học / Đào tạo MĐ14 doanh nghiệp Thực tập tốt nghiệp Tổng cộng 4 4 75 75 90 90 30 37 30 37 32 20 35 42 48 53 240 30 210 38 60 900 294 60 563 3 5 33 Chương trình chi tiết mơ đun: Số Thời gian(giờ) Lý Thực Tên mô đun Tổng Sơ lược về lịch sử và hướng phát thuyết hành số 2 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 13 20 20 10 10 15 90 7 4 32 12 12 53 TT 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 Phương pháp đánh giá Thường xuyên Định kỳ Hình thức Chuẩn đầu Số Thời điểm kiểm tra Tự luận/ đánh giá A1, C1, C2 cột kiểm tra Sau 10 Viết Báo cáo Tự luận/ A2, B1, C1, Sau 35 thực hành Trắc nghiệm/ C2 Sau 90 tổ chức Viết/ Thuyết trình Trắc nghiệm/ Kết thúc Vấn đáp thực hành Vấn đáp A1, A2, B1, B2, môđun thực hành thực hành C1, C2 mơ hình 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 cao đẳng liên thông Đ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Đ 11-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 10 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 155 • CODE (đoạn mã) • XDATA (vùng nhớ liệu ngồ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 • 00H-7FH, 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 MESSAGE DB LENGTH ; đặt 0R ODH ‘This is a message’ 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 156 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 gian địa tương ứng, khơng phải ư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 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ệ 157 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 LENGTH BUFFER: 30H ; đặt đoạn liệu (tuyệt đối, bên trong) EQU 40 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 Loop: CLR A 158 MOVX @DPTR, A INC DPTR MOV A, DPL CJNE A, # Low (XBUFFER + XLENGTH + MOV 1), Loop A, DPH CJNE A, # HIGH (XBUFFER + XLENGTH + 1), Loop (tiếp tục) Ví dụ minh họa sử dụng tố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 ; đoạn BIT (tuyệt đối) KBFLAG: DBIT ; trạng thái bàn PRFLAG: phím DBIT ; trạng thái máy in 159 DKFLAG: 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 mã ASCII tương ứng Nếu nhãn sử dụng gán địa byte Ví dụ: CSEG AT SQUARES: 0100H DB 0,1,4,9,16,25 ; bình phương số ; từ đến MESSAGE: DB ‘Login’, ; 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 160 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 161 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 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 162 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 trình thực Trong q 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 hoà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 163 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 164 đầ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 ONCHIP EPROM SEGMENT DATA ; segment ; liệu định vị lại SEGMENT CODE ; segment mã ; lệnh định vị lại BSEG AT70H ; 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 RSEG EPROM : bắt đầu segment 0000 750000 14 BEGIN: MOV TOTAL, # 0; 15 (tiếp tục chương trình) 16 END 165 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 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 166 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: 167 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? 168 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 169

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

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN