2 3 LỜI NÓI ĐẦU Với sự phát triển và thành công của ngành vi mạch bán dẫn và kỹ thuật truyền thông đã cho ra đời khái niệm Kết nối vạn vật (Internet of Things) Trong công nghệ này, các máy tính đa dụn[.]
2 LỜI NÓI ĐẦU Với phát triển thành công ngành vi mạch bán dẫn kỹ thuật truyền thông cho đời khái niệm Kết nối vạn vật (Internet of Things) Trong công nghệ này, máy tính đa dụng (general purpose computer) thu nhỏ thành máy tính có chức xác định (specific purpose computer) nhúng vào thiết bị thu nhỏ nhằm để tính tốn xử lý liệu Nhờ đó, thiết bị trở nên thơng minh có hỗ trợ xử lý máy tính dễ dàng kết nối với máy tính loại hỗ trợ chuẩn truyền thông nhằm trao đổi liệu trước sau trình xử lý Việc khảo sát máy tính có chức xác định vi điều khiển thực cần thiết sinh viên ngành Kỹ thuật Máy tính nói riêng sinh viên ngành Kỹ thuật Điện tử nói chung Tài liệu nhằm hướng dẫn người đọc khảo sát dạng máy tính chip vi điều khiển họ 8051 Qua đó, tài liệu trình bày nét sơ lược chung mặt kiến trúc phần cứng vi điều khiển ghi, kích thước liệu, phương pháp đánh địa mở rộng nhớ thể cụ thể qua ứng dụng minh họa câu hỏi ơn tập Ngồi ra, chuẩn truyền thơng máy tính đa đụng máy tính chip UART trình bày, từ người đọc hiểu phương pháp giao tiếp điều khiển từ máy tính Phương pháp tiếp cận tài liệu hướng dẫn người đọc xem xét khái niệm lý thuyết thông qua câu hỏi thực hành đoạn mã nguồn sử dụng ngôn ngữ hợp ngữ (assembly) mã nguồn cấp cao (C) kiến trúc máy tính xác định Bên cạnh đó, phương pháp giao tiếp vi điều khiển thiết bị ngoại vi nhớ giúp người đọc dễ tiếp cận khía cạnh sử dụng máy tính chip để điều khiển thiết bị xử lý thông tin đơn giản Tác giả TS Phạm Văn Khoa LỜI CẢM ƠN Để hoàn thành sách này, tác giả nhận hỗ trợ nhiều từ bạn bè, đồng nghiệp, Khoa Điện - Điện tử Trường Đại học Sư phạm Kỹ thuật trình giảng dạy nghiên cứu Tác giả TS Phạm Văn Khoa MỤC LỤC PHẦN I: Khảo sát kiến trúc phần cứng 8051 ngôn ngữ hợp ngữ PHẦN II: Khảo sát tập lệnh hỗ trợ vi điều khiển họ 8051 19 Bài thực hành số 1: Chương trình di chuyển trao đổi liệu 20 Bài thực hành số 2: Chương trình tính tốn số học 26 Bài thực hành số 3: Chương trình lệnh xử lý luận lý đếm 32 Bài thực hành số 4: Chương trình chuyển đổi giá trị hệ thống số 38 PHẦN III: Lập trình giao tiếp 8051 ngoại vi sử dụng ASM 41 Bài thực hành số 1: Lệnh tính số học để thiết kế cộng/trừ số nhị phân 42 Bài thực hành số 2: Bộ định thời tạo xung dao động tần số xác định 46 Bài thực hành số 3: Ngắt ngồi để giao tiếp với bàn phím ma trận 51 Bài thực hành số 4: Thiết kế máy tính để cộng/trừ số có chữ số 60 PHẦN IV: Lập trình giao tiếp 8051 ngoại vi sử dụng C 75 Bài thực hành số 1: Giao tiếp LED đơn 84 Bài thực hành số 2: Giao tiếp LED đoạn 89 Bài thực hành số 3: Giao tiếp bàn phím ma trận 100 Bài thực hành số 4: Giao tiếp hình tinh thể lỏng LCD 114 Bài thực hành số 5: Giao tiếp chuyển đổi tương tự sang số ADC 125 Bài thực hành số 6: Giao tiếp truyền thông nối tiếp UART 133 Bài thực hành số 7: Giao tiếp nhớ RAM/ROM 138 Phụ lục 153 Tài liệu tham khảo 169 PHẦN I: KHẢO SÁT PHẦN CỨNG 8051 VÀ NGƠN NGỮ HỢP NGỮ Mục đích chung phần nhằm giúp người học ôn tập số vấn đề kiến trúc máy tính từ việc sử dụng thiết kế máy tính chip vi điều khiển họ 8051 Bên cạnh đó, kiến trúc tập lệnh hỗ trợ cho họ vi điều khiển khái quát sơ lược thông qua số câu hỏi ôn tập Việc khảo sát ngôn ngữ hợp ngữ ý nghĩa trình biên dịch mã nguồn thành mã máy trình bày phần Trong kiến trúc máy tính, ghi sử dụng để lưu trữ thông tin cách tạm thời, thơng tin liệu theo byte xử lý, trỏ địa trỏ đến liệu nạp Đối với máy tính chip họ 8051, ghi hầu hết 8-bit Nó thể hình đây, D0 LSB D7 MSB Hình 1: Thanh ghi 8-bit Cũng giống kiến trúc máy tính thơng thường, vi điều khiển (máy tính chip) có ghi thơng dụng thể hình sau đây: Hình 2: Các ghi đa dụng hỗ trợ họ 8051 10 Trong đó, chức ghi liệt kê sau: Thanh ghi A Được sử dụng cho hầu hết lệnh toán học logic Thanh ghi DPTR Là trỏ liệu (data pointer) Thanh ghi PC Là đếm chương trình (program counter) Thanh ghi B, R0, R1, R2, Là ghi đa dụng R3, R4, R5, R6, R7 Khảo sát cấu trúc phần cứng vi điều khiển họ 8051 sử dụng phần mềm mô 8051 (EdSim51DITM Keil) để trả lời câu hỏi sau: Chỉ số lượng bit (8 16) cho ghi sau: PC = A = B = R0 = R1 = R2 = R7 = Chỉ giá trị lớn (hệ 10) mà ghi sau chứa bao nhiêu? PC = A = B = R0 = R1 = R2 = R7 = Chỉ giá trị lớn (hệ 16) mà ghi sau chứa bao nhiêu? PC = A = B = R0 = R1 = R2 = R7 = Hãy tập tin sau tạo từ đâu? Ý nghĩa tập tin sau gì? asm lst obj abs hex 11 Chỉ giá trị cờ CY sau lệnh thực bao nhiêu? MOV A,#85H ADD A,#92H MOV A,#15H ADD A,#72H MOV A,#0F5H ADD A,#52H MOV A,#0FF INC A Hãy vào lúc reset giá trị ghi SP (stack pointer) bao nhiêu? Hãy vào thời điểm đưa (push) liệu vào stack, giá trị SP tăng hay giảm? Hãy vào thời điểm lấy (pop) liệu khỏi stack, giá trị SP tăng hay giảm? Người lập trình thay đổi ghi SP khơng? Nếu cần thay đổi trường hợp nào? 10 Vào thời điểm reset, tất port 8051 cấu hình ngõ vào hay ngõ ra? 11 Để cho tất bit port ngõ vào cần ghi giá trị mã hex đến cổng đó? 12 Những cổng 8051 truy cập theo bit? 13 Giải thích đặc tính “read-modify-write” port? 14 Viết Chương trình để theo dõi bit P2.4 liên tục Nếu chân xuống mức thấp gửi giá trị 55H port 15 Giải thích khác hai lệnh sau: 12 MOVC A,@A+DPTR MOV A,@R0 16 Hãy lệnh sau lệnh sai MOV A,@R1 MOV A,@R2 MOVC A,@R0+DPTR MOV @R3,A 17 Giải thích khác biệt hai lệnh sau: MOV A,40H MOV A,#40H 18 Giải thích khác biệt hai lệnh sau: MOV 40H,A MOV 40H,#0A 19 Hãy cho biết địa RAM ghi sau: A= B= R0 = R2 = PSW = SP = DPL = DPH = 20 Giải thích khác biệt hai lệnh ADD ADDC 21 Có thể sử dụng lệnh “DA A” để chuyển liệu 9CH thành định dạng BCD mà không cần thực lệnh ADD không? Giải thích 22 Đối với 8051, thực phép chia byte cho byte khác, giá trị lớn tử số mẫu số bao nhiêu? Thể câu trả lời dạng số HEX DEC 23 Đối với 8051, thực phép chia byte cho byte khác, giá trị lớn cho số chia phần dư bao nhiêu? Thể câu trả lời dạng số HEX DEC 24 Đối với 8051, thực phép nhân số, giá trị lớn cho số bao nhiêu? 13 25 Giải thích vai trị cờ OV lệnh nhân chia 26 Xét hiệu năng, thực bình phương (square) số từ đến phương pháp sau nhanh hơn? Giải thích (a) Sử dụng lệnh MUL (b) Sử dụng bảng tra (look-up table) 27 Giá trị ghi A (số HEX) sau thực lệnh sau: MOV A,#45H RR A RR A RR A MOV A,#45H RL A RL A RL A CLR A XRL A,#0FFH CLR A CPL A XRL A,#0FFH A= A= A= A= 28 Giả sử 8051 không hỗ trợ lệnh “SWAP A”, làm để thực hoạt động này? 29 Lệnh SWAP thực với ghi khơng? 30 Trong kiến trúc tập lệnh (Instruction set architecture) hỗ trợ cho vi điều khiển họ 8051, nhóm lệnh có CPI thấp nhóm lệnh có CPI cao? 31 Xét hiệu năng, nêu giải pháp để tăng hiệu hệ thống? 14 Cấu trúc chương trình hợp ngữ bao gồm bốn trường sau: [label:] Mnemonic [operands] [;comment] ORG 0H ;start(origin) at location MOV R5, #25H ;load 25H into R5 MOV R7, #34H ;load 34H into R7 MOV A, #0 ;load into A ADD A, R5 ;add contents of R5 to A ;now A = A + R5 ADD A, R7 ;now A = A + R7 ADD A, #12H ;add to A value 12H ;now A = A + 12H HERE: SJMP HERE ;stay in this loop END ;end of asm source file Trong đó: ORG directive dùng assembler, không tạo mã máy (machine code) Nhãn (Label) HERE Mnemonic MOV, ADD dung để tạo opcode Sau dấu ; thích Các bước để tạo chương trình khái quát theo hình sau: Hình 3: Quá trình chuyển từ mã lập trình thành mã máy 15 Hãy sử dụng tập lệnh hỗ trợ cho vi điều khiển họ 8051 để khảo sát chức cách sử dụng lệnh theo ví dụ sau: Lệnh di chuyển (MOV) Cú pháp Ý nghĩa MOV destination, source Lệnh nói cho xử lý biết để di chuyển tốn hạng nguồn (source) đến đích (destination) Cách sử dụng: Mã nguồn Lưu ý MOV A,#55H ;load value 55H into reg A MOV R0,A ;copy contents of A into R0 ;(now A=R0=55H) MOV R1,A ;copy contents of A into R1 ;(now A=R0=R1=55H) MOV R2,A ;copy contents of A into R2 ;(now A=R0=R1=R2=55H) MOV R3,#95H ;load value 95H into R3 ;(now R3=95H) MOV A,R3 ;copy contents of R3 into A ;now A=R3=95H Dấu # giá trị MOV A, #23H Nếu giá trị không bắt đầu #, điều có nghĩa tốn hạng vùng nhớ MOV R5, #0F9H 16 Thêm số trước để lưu ý F số HEX, ký tự MOV A, #5 Nếu giá trị từ đến F đưa vào ghi 8-bit điều có nghĩa phần cịn lại ghi định nghĩa giá trị Giá trị ghi A theo biểu diễn nhị phân 00000101 MOV A, #7F2H Nạp giá trị lớn vào ghi 8-bit dẫn đến lỗi hình minh hoạ giá trị vượt tầm 0xFF Lệnh cộng (ADD) Cú pháp Ý nghĩa ADD A, source Cộng toán hạng nguồn thêm vào giá trị ghi A Kết phép cộng nạp vào ghi A Tốn hạng nguồn ghi liệu tạm thời, nhiên đích ghi A Cách sử dụng: Mã nguồn ADD R4, A ADD R2, #12H Lưu ý Điều khơng cho phép A cần tốn hạng đích lệnh toán số học 17 MOV MOV ADD ;(A A, #25H ;load 25H into A R2, #34H ;load 34H into R2 A, R2 ;add R2 to Accumulator = A + R2) MOV A, #25H ;load one operand ;into A (A=25H) ADD A, #34H ;add the second ;operand 34H to A MOV A, #7F2H 18 Có nhiều cách để viết chương trình, khác việc sử dụng ghi khác Nạp giá trị lớn vào ghi 8-bit dẫn đến lỗi Như hình minh họa giá trị vượt tầm 0xFF PHẦN II: KHẢO SÁT TẬP LỆNH ĐƯỢC HỖ TRỢ ĐỐI VỚI VI ĐIỀU KHIỂN HỌ 8051 Mục đích chung phần nhằm giúp người học làm quen vận dụng lệnh (instruction) hỗ trợ tập lệnh (instruction set) họ vi điều khiển 8051 Từ ví dụ áp dụng tập lệnh hỗ trợ máy tính chip họ 8051, người học hiểu sâu ý nghĩa cách sử dụng lệnh thông qua nhóm chương trình sau: - Di chuyển trao đổi liệu, xếp, trao đổi tìm phần tử mảng - Xử lý số học cộng, trừ, nhân, chia - Xử lý luận lý - Bộ đếm HEX, BCD - Chuyển đổi hệ thống số BCD, DEC, HEX 19 BÀI THỰC HÀNH SỐ Mục đích: • Giới thiệu lệnh di chuyển trao đổi liệu vi điều khiển họ 8051 Sau kết thúc học phần này, sinh viên có thể: • Hiểu lệnh di chuyển trao đổi liệu vùng nhớ • Thiết kế chương trình firmware đơn giản sử dụng ngơn ngữ lập trình hợp ngữ dành cho vi điều khiển họ 8051 để thực việc di chuyển trao đổi liệu 20 Viết chương trình sử dụng ngơn ngữ hợp ngữ để thực việc di chuyển khối liệu từ vùng nhớ nội đến vùng nhớ khác ORG 0000H LJMP 8000H ORG 8000H MOV R0,#30H MOV R1,#40H MOV R2,#05H NEXT: MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R2, NEXT LCALL 0003H Yêu cầu thực hành: - Giải thích ý nghĩa lệnh thay đổi giá trị ghi chương trình - Hãy cho biết ý nghĩa chương trình - Hãy tính số lượng machine cycle cần thiết để thực chương trình Viết chương trình sử dụng ngơn ngữ hợp ngữ để thực việc trao đổi khối liệu từ vùng nhớ nội đến nơi khác ORG 0000H LJMP 8000H ORG 8000H MOV R0,#30H MOV R1,#40H MOV R4,#04H UP: MOV A,@R0 MOV R6,A MOV A,@R1 MOV @R0,A MOV A,R6 MOV @R1,A INC R0 INC R1 DJNZ R4,UP LCALL 0003H ;end of asm file 21 ... 10 Vào thời điểm reset, tất port 80 51 cấu hình ngõ vào hay ngõ ra? 11 Để cho tất bit port ngõ vào cần ghi giá trị mã hex đến cổng đó? 12 Những cổng 80 51 truy cập theo bit? 13 Giải thích đặc tính. .. Hình 1: Thanh ghi 8-bit Cũng giống kiến trúc máy tính thơng thường, vi điều khiển (máy tính chip) có ghi thơng dụng thể hình sau đây: Hình 2: Các ghi đa dụng hỗ trợ họ 80 51 10 Trong đó, chức. .. máy tính có chức xác định vi điều khiển thực cần thiết sinh viên ngành Kỹ thuật Máy tính nói riêng sinh viên ngành Kỹ thuật Điện tử nói chung Tài liệu nhằm hướng dẫn người đọc khảo sát dạng máy