Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
621 KB
Nội dung
3.2 Vi điều khiển họ 8051 • Kiến trúc vi điều khiển 8051 • Lập trình firmware cho vi điều khiển 8051 3.2.1 Kiến trúc vi điều khiển 8051 Do hãng Intel thiết kế năm 1981 Gồm 40 chân Có cổng vào ra, cổng rộng bit: P0, P1, P2, P3 Nhóm chân nguồn, dao động điều khiển Ngoại vi: UART 6 nguồn ngắt (2 ngắt ngoài) 2 Timer/Counter 4KB Flash, 128 Byte Ram Tần số xung nhịp tối đa: 24 MHz Đóng vỏ vi điều khiển 8051 Kiến trúc vi điều khiển 8051 Các ghi 8051 • Các ghi dùng để lưu tạm thời liệu địa • Các ghi chủ yếu ghi bit • Các ghi thường sử dụng • • • • Thanh ghi A : ghi tích lũy Thanh ghi R0->R7 Thanh ghi trỏ liệu DPTR (16 bit) Thanh ghi đếm chương trình PC (16bit) 3.2.2 Lập trình vi điều khiển 8051 • Giới thiệu lập trình hợp ngữ • Lập trình C Giới thiệu lập trình hợp ngữ • Ngôn ngữ máy: • Chỉ biểu diễn số nhị phân • Bộ vi xử lý hiểu chương trình mã máy • Con người khó khăn để tạo lập hay đọc hiểu chương trình ngôn ngữ máy • Hợp ngữ (Assembly Language): • Là ngôn ngữ lập trình bậc thấp (gần ngôn ngữ máy nhất) • Được xây dựng sở ký hiệu tập lệnh vi xử lý tương ứng • Phụ thuộc hoàn toàn vào vi xử lý cụ thể • Ngôn ngữ lập trình bậc cao: • Gần với ngôn ngữ tự nhiên • Được xây dựng độc lập với cấu trúc máy tính Tập lệnh • Mỗi xử lý/ vi điều khiển có tập lệnh xác định (mang tính kế thừa dòng họ) • Tập lệnh thường có hàng chục đến hàng trăm lệnh • Mỗi lệnh chuỗi số nhị phân mà xử lý/ vi điều khiển hiểu để thực thao tác xác định • Các lệnh mô tả kí hiệu gợi nhớ → lệnh hợp ngữ • Ví dụ: Lệnh ADD A, #3Ah 0 0 0 0 1 1 3Ah Khuôn dạng lệnh máy Mã thao tác Tham chiếu toán hạng • Mã thao tác (Operation Code - Opcode): mã hóa cho thao tác mà CPU phải thực • Tham chiếu toán hạng: mã hóa cho toán hạng nơi chứa toán hạng mà thao tác tác động • Toán hạng nguồn (Source Operand): liệu vào thao tác (CPU đọc) • Toán hạng đích (Destination Operand): liệu thao tác (CPU ghi) Các chế độ địa • Chế độ địa tức thời • Toán hạng nguồn số • Trước liệu tức thời cần có dấu # • Ví dụ: • MOV A, #25 ; Nạp giá trị 25 ghi A 10 Các chế độ địa • Chế độ địa trực tiếp • Toán hạng (nguồn đích) địa ô nhớ • Trước địa ô nhớ dấu # • Ví dụ: • MOV A, 35h ;Dữ liệu ô nhớ có địa ; 35h 12 chuyển vào ghi A Các chế độ địa • Chế độ định địa gián tiếp ghi • Địa ô nhớ chứa liệu chứa ghi R0 R1 • Trước ghi R0 R1 phải chèn thêm ký tự “@” để biểu thị cho chế độ địa • Ví dụ: • MOV A,@R0 ;chuyển liệu ô nhớ có ;ghi R0 vào ghi A 13 ;địa Tập lệnh vi điều khiển 8051 • Lệnh số học • Lệnh truyền liệu • Lệnh logic • Xử lý bit • Lệnh rẽ nhánh 14 Tập lệnh vi điều khiển 8051 Lệnh số học Lệnh Giải thích ADD đích, nguồn Đích = đích + nguồn ADDC đích, nguồn Đích = đích + nguồn + cờ nhớ SUBB đích, nguồn Đích = đích – nguồn INC nguồn Đích = đích + DEC nguồn Đích = đích - MUL AB A*B DIV AB A/B 15 Tập lệnh vi điều khiển 8051 Lệnh truyền liệu Lệnh Giải thích MOV đích, nguồn Đích = nguồn (Bộ nhớ trong) MOVX đích, nguồn Đích = nguồn (Thao tác nhớ ngoài) PUSH Đẩy liệu vào đỉnh ngăn xếp POP Lấy liệu từ đỉnh ngăn xếp XCH Tráo đổi liệu XCHD Tráo đổi liệu ( bit thấp) 16 Tập lệnh vi điều khiển 8051 Lệnh logic Lệnh Giải thích ANL Lệnh “AND” ORL Lệnh “OR” XRL Lệnh “XOR” CLR Xóa bit RL, RLC Lệnh quay trái RR, RRC Lệnh quay phải 17 Tập lệnh vi điều khiển 8051 Lệnh rẽ nhánh Lệnh Giải thích ACALL Gọi chương trình con, địa 11 bit LCALL Gọi chương trình con, địa 16 bit RET Trở từ chương trình JMP Lệnh nhảy không điều kiện JZ, JNZ, JB, JNB… Lệnh nhảy có điều kiện (kiểm tra bit) 18 Cú pháp hợp ngữ • Một chương trình hợp ngữ bao gồm chuỗi dòng lệnh hợp ngữ • Một lệnh hợp ngữ có từ gợi nhớ (ADD, SUBB, MOV…) tùy vào lệnh mà sau không, hay hai toán hạng • Lệnh hợp ngữ gồm có thành phần [nhãn:] [từ gợi nhớ] [các toán hạng] [;chú giải] Ví dụ: bat_dau: MOV A,#25 ;Khởi gán A=25 19 Dữ liệu chương trình • Hợp ngữ cho phép biểu diễn dạng: • • • • Số nhị phân: 1011b, 1011B, Số thập phân: 35, 35d, 35D, Số Hexa: 4Ah, 0ABCDh, 0FFFFH, Kí tự: "A", 'HELLO', "Bach Khoa", • Tất kiểu liệu sau trình dịch Assembler dịch mã nhị phân • Mỗi kí tự dịch thành mã ASCII tương ứng • Chương trình không phân biệt 'A' với 41h hay 65 20 Kiểu liệu • Chỉ có kiểu liệu kiểu liệu bit (Kiểu byte) • Để định nghĩa liệu kiểu byte, cần sử dụng dẫn DB 21 Các dẫn • ORG: Báo địa bắt đầu • EQU: dùng để định nghĩa số • VD: COUNT EQU 25 • END: báo kết thúc file mã nguồn 22 Một số lệnh • Lệnh ADD: cộng • Cú pháp: ADD A,nguồn ;cộng toán hạng ;nguồn vào ghi A • Lệnh MOV: chuyển liệu • Cú pháp MOV đích, gốc 23 ;chuyển liệu từ toán hạng ;gốc vào toán hạng đích Dịch chạy chương trình 24 Ví dụ sử dụng lệnh ADD, MOV ORG 000 MOV R5, #25h MOV R7, #34h MOV A, #0 ADD A, R5 ADD A, R7 HERE: SJMP HERE END ;Dia chi bat dau cua chuong trinh ;Nap 25h vao R5 ;Nap 34h vao R7 ;Nap vao ghi A ;A=A+R5 ;A=A+R7 (A=25h+34h) ;O lai vong lap Sử dụng lệnh ADD, MOV 25 Ví dụ nhấp nháy led ORG 000 AGAIN: SETB P1.0 ACALL DELAY CLR P1.0 ACALL DELAY SJMP AGAIN DELAY: MOV R1,#255 LOOP: DJNZ R1,LOOP RET END 26 ;Dia chi bat dau cua chuong trinh ;Nhap nhay led o chan P1.0 ;Tao tre [...]... chỉ ra Tập lệnh vi điều khiển 8051 • Lệnh số học • Lệnh truyền dữ liệu • Lệnh logic • Xử lý bit • Lệnh rẽ nhánh 14 Tập lệnh vi điều khiển 8051 Lệnh số học Lệnh Giải thích ADD đích, nguồn Đích = đích + nguồn ADDC đích, nguồn Đích = đích + nguồn + cờ nhớ SUBB đích, nguồn Đích = đích – nguồn INC nguồn Đích = đích + 1 DEC nguồn Đích = đích - 1 MUL AB A*B DIV AB A/B 15 Tập lệnh vi điều khiển 8051 Lệnh truyền... Tập lệnh vi điều khiển 8051 Lệnh logic Lệnh Giải thích ANL Lệnh “AND” ORL Lệnh “OR” XRL Lệnh “XOR” CLR Xóa bit RL, RLC Lệnh quay trái RR, RRC Lệnh quay phải 17 Tập lệnh vi điều khiển 8051 Lệnh rẽ nhánh Lệnh Giải thích ACALL Gọi chương trình con, địa chỉ 11 bit LCALL Gọi chương trình con, địa chỉ 16 bit RET Trở về từ chương trình con JMP Lệnh nhảy không điều kiện JZ, JNZ, JB, JNB… Lệnh nhảy có điều kiện... pháp MOV đích, gốc 23 ;chuyển dữ liệu từ toán hạng ;gốc vào toán hạng đích Dịch và chạy chương trình 24 Ví dụ sử dụng lệnh ADD, MOV ORG 000 MOV R5, #25 h MOV R7, #34 h MOV A, #0 ADD A, R5 ADD A, R7 HERE: SJMP HERE END ;Dia chi bat dau cua chuong trinh ;Nap 25 h vao R5 ;Nap 34 h vao R7 ;Nap 0 vao thanh ghi A ;A=A+R5 ;A=A+R7 (A =25 h +34 h) ;O lai trong vong lap Sử dụng các lệnh ADD, MOV 25 Ví dụ nhấp nháy led... ASCII tương ứng • Chương trình không phân biệt 'A' với 41h hay 65 20 Kiểu dữ liệu • Chỉ có một kiểu dữ liệu là kiểu dữ liệu 8 bit (Kiểu byte) • Để định nghĩa một dữ liệu kiểu byte, cần sử dụng chỉ dẫn DB 21 Các chỉ dẫn • ORG: Báo địa chỉ bắt đầu • EQU: dùng để định nghĩa hằng số • VD: COUNT EQU 25 • END: báo kết thúc file mã nguồn 22 Một số lệnh cơ bản • Lệnh ADD: cộng • Cú pháp: ADD A,nguồn ;cộng... một hay hai toán hạng • Lệnh hợp ngữ gồm có 4 thành phần [nhãn:] [từ gợi nhớ] [các toán hạng] [;chú giải] Ví dụ: bat_dau: MOV A, #25 ;Khởi gán A =25 19 Dữ liệu của chương trình • Hợp ngữ cho phép biểu diễn dưới dạng: • • • • Số nhị phân: 1011b, 1011B, Số thập phân: 35 , 35 d, 35 D, Số Hexa: 4Ah, 0ABCDh, 0FFFFH, Kí tự: "A", 'HELLO', "Bach Khoa", • Tất cả các kiểu dữ liệu trên sau đó đều được trình dịch... dụ: • MOV A, 35 h ;Dữ liệu trong ô nhớ có địa chỉ ; 35 h 12 được chuyển vào thanh ghi A Các chế độ địa chỉ • Chế độ định địa chỉ gián tiếp thanh ghi • Địa chỉ ô nhớ chứa dữ liệu được chứa trong thanh ghi R0 hoặc R1 • Trước thanh ghi R0 hoặc R1 phải chèn thêm ký tự “@” để biểu thị cho chế độ địa chỉ này • Ví dụ: • MOV A,@R0 ;chuyển dữ liệu trong ô nhớ có trong thanh ;ghi R0 vào thanh ghi A 13 ;địa chỉ được... A ;A=A+R5 ;A=A+R7 (A =25 h +34 h) ;O lai trong vong lap Sử dụng các lệnh ADD, MOV 25 Ví dụ nhấp nháy led ORG 000 AGAIN: SETB P1.0 ACALL DELAY CLR P1.0 ACALL DELAY SJMP AGAIN DELAY: MOV R1, #25 5 LOOP: DJNZ R1,LOOP RET END 26 ;Dia chi bat dau cua chuong trinh ;Nhap nhay led o chan P1.0 ;Tao tre ... R0 vào ghi A 13 ;địa Tập lệnh vi điều khiển 8051 • Lệnh số học • Lệnh truyền liệu • Lệnh logic • Xử lý bit • Lệnh rẽ nhánh 14 Tập lệnh vi điều khiển 8051 Lệnh số học Lệnh Giải thích ADD đích,... Timer/Counter 4KB Flash, 128 Byte Ram Tần số xung nhịp tối đa: 24 MHz Đóng vỏ vi điều khiển 8051 Kiến trúc vi điều khiển 8051 Các ghi 8051 • Các ghi dùng để lưu tạm thời liệu địa • Các ghi chủ yếu ghi bit.. .3.2.1 Kiến trúc vi điều khiển 8051 Do hãng Intel thiết kế năm 1981 Gồm 40 chân Có cổng vào ra, cổng rộng bit: P0, P1, P2, P3 Nhóm chân nguồn, dao động điều khiển Ngoại vi: UART