1. Trang chủ
  2. » Giáo án - Bài giảng

TẬP LỆNH HỌ VI ĐIỀU KHIỂN CHIP 8051

46 542 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 46
Dung lượng 1,09 MB

Nội dung

CHƯƠNG TẬP LỆNH HỌ VI ĐIỀU KHIỂN 8051 4.1 Giới thiệu tập lệnh họ 8051 8051 có khả cung cấp tối đa 28 = 256 lệnh Tuy nhiên có số lệnh chưa xây dựng Các lệnh 8051 chia nhóm chính: - Số học - Luận lý (logic) - Chuyển liệu - Biến Boole - Rẽ nhánh chương trình 4.2 Các kiểu định địa Một ô nhớ truy xuất nhiều cách khác nhau, người ta đưa CÁC KIỂU ĐỊNH ĐỊA CHỈ giúp ta truy xuất xác ô nhớ mong muốn 4.2 Các kiểu định địa Có kiểu định địa 8051: - Định địa ghi - Định địa trực tiếp - Định địa gián tiếp - Định địa tức thời - Định địa tương đối - Định địa tuyệt đối - Định địa dài - Định địa theo số 4.2.1 Định địa ghi Người ta sử dụng ghi để chứa liệu, sử dụng tên ghi câu lệnh Ta có ghi R0 – R7 Ví dụ: ADD A, R7 Cộng liệu A với liệu R7, kết lưu vào A MOV A, R0 MOV R2, A Chép liệu từ R0 vào A Chép liệu từ A vào R2 4.2.2 Định địa trực tiếp Dùng để truy cập liệu cách sử dụng địa byte VD: MOV A, 40H liệu ô nhớ có địa 40H chép vào A Một vài ô nhớ đặc biệt, 8051 có hỗ trợ từ gợi nhớ (P0, P1, TMOD, …) VD: MOV P1, A 4.2.4 Định địa tức thời Khi ta muốn nạp giá trị số vào ô nhớ đó, ta dùng phương pháp định địa tức thời Trong phương pháp định địa tức thời, ta sử dụng dấu “#” trước toán hạng tức thời VD: MOV A,#12H Nạp giá trị 12H vào ghi A MOV R1,#28 Nạp giá trị 28 vào ghi R1 MOV 30H,#0F0H Nạp giá trị F0H vào ô nhớ có địa 30H 4.3 Tập lệnh họ vi điều khiển 8051 Gồm nhóm chính: 1- Nhóm lệnh số học 2- Nhóm lệnh luận lý - logic 3- Nhóm lệnh chuyển liệu 4- Nhóm lệnh với biến Boole 5- Nhóm lệnh rẽ nhánh chương trình 4.3 Tập lệnh họ vi điều khiển 8051 Ý nghĩa ký hiệu sử dụng: Ký hiệu Ý nghĩa Rn Rr Các ghi R0 – R7 direct Địa nội bit (00H – FFH) #data8 Hằng số bit src Toán hạng nguồn (source) dest Toán hạng đích (destination) (X) Nội dung X VD: (A) nội dung ghi A 4.3 Tập lệnh họ vi điều khiển 8051 Chu kỳ máy: Mỗi lệnh 8051 thực thi cần khoảng thời gian định, tùy lệnh mà thời gian dài hay ngắn Công thức tính chu kỳ máy VD: 8051 sử dụng thạch anh 12 MHz có chu kỳ máy là: 4.3.1 Nhóm lệnh số học 4.3.1 Nhóm lệnh số học VD: lệnh ADD ADD A,7FH Định địa trực tiếp (DIR) ADD A,R7 Định địa ghi (REG) ADD A,#100 Định địa tức thời (IMM) ADD A, 7FH Cộng giá trị ghi A giá trị ghi 7FH lại, kết lưu vào A Nếu giá trị A 100, giá trị ô nhớ 7FH 20H Sau thực lệnh, giá trị A ? 132 hay 84H 4.3.1 Nhóm lệnh số học ADD A, R7 Cộng giá trị A giá trị R7, kết lưu vào A Nếu giá trị A 10H, giá trị R7 20 Sau thực lệnh, giá trị A ? 36 hay 24H 4.3.1 Nhóm lệnh số học ADD A, #100 Cộng giá trị ghi A giá trị sau dấu #, kết lưu vào A Nếu giá trị A 10H Sau thực lệnh, giá trị A ? 116 hay 74H 4.3.1 Nhóm lệnh số học Ví dụ lệnh INC INC A INC 7FH INC R0 4.3.1 Nhóm lệnh số học VD: Thực phép cộng giá trị chứa byte 40H 41H, kết lưu vào byte 42H ORG 0000H MOV A, 40H ADD A, 41H MOV 42H, A END 4.3.5 Nhóm lệnh rẽ nhánh chương trình Các lệnh rẽ nhánh không điều kiện: Click to edit Master text styles Second level Third level Fourth level Fifth level 4.3.5 Nhóm lệnh rẽ nhánh chương trình Có loại lệnh nhảy SJMP, LJMP AJMP - SJMP rel: nhảy đến nhãn mong muốn (không có điều kiện), khoảng cách nhảy bị giới hạn vùng từ -128 đến +127 byte địa - AJMP rel: nhảy đến nhãn mong muốn (không có điều kiện), khoảng cách nhảy bị giới hạn khối 2KB - LJMP rel: nhảy đến nhãn mong muốn (không có điều kiện), nhảy đến vị trí vùng nhớ chương trình 64K 4.3.5 Nhóm lệnh rẽ nhánh chương trình ACALL LCALL: lệnh gọi chương trình con, 8051 tạm ngưng chương trình nhảy đến chương trình Chương trình phải kết thúc lệnh RET để 8051 quay thực chương trình lệnh CALL Lệnh ACALL LCALL có giới hạn với địa đích AJMP LJMP 4.3.5 Nhóm lệnh rẽ nhánh chương trình VD: chương trình điều khiển led sáng dần – tắt hết ORG 0000H Lap1: MOV A,#00000000B MOV P0,#00000000B ACALL DELAY Lap2: SETB C RRC A MOV P0,A ACALL DELAY JNC Lap2 SJMP Lap1 DELAY: MOV R6,#255 Lap3: MOV R7,#255 Lap4: DJNZ R7,Lap4 DJNZ R6,Lap3 RET END 4.3.5 Nhóm lệnh rẽ nhánh chương trình Các lệnh rẽ nhánh có điều kiện: Click to edit Master text styles Second level Third level Fourth level Fifth level 4.3.5 Nhóm lệnh rẽ nhánh chương trình “DJNZ byte,rel”: giảm giá trị byte 1, nhảy đến nhãn rel (byte) khác Được dùng để điều khiển vòng lặp Để thực thi vòng lặp N lần, nạp giá trị cho byte N sử dụng DJNZ để điều khiển vòng lặp VD: thực vòng lặp lần MOV R7, #2 LOOP: (bắt đầu lệnh vòng lặp) ……………… (kết thúc lệnh vòng lặp) DJNZ R7, LOOP 4.3.5 Nhóm lệnh rẽ nhánh chương trình VD: Viết chương trình cho led Port0 sáng hết-tắt hết lần ORG 0000H MOV R2,#5 Loop: MOV P0,#0FFH ACALL DELAY MOV P0,#00H ACALL DELAY DJNZ R2,Loop SJMP $ DELAY: MOV R7,#2 Lap1: MOV R6,#250 Lap2: MOV R5,#250 Lap3: DJNZ R5,Lap3 DJNZ R6,Lap2 DJNZ R7,Lap1 RET END 4.3.5 Nhóm lệnh rẽ nhánh chương trình Bài tập: Viết chương trình cho led Port0 sáng dần-tắt hết lần 4.3.5 Nhóm lệnh rẽ nhánh chương trình CJNE A,byte,rel: nhảy đến rel (A) khác (byte) CJNE byte,#data8,rel: nhảy đến rel (byte) khác #data8 Được dùng để điều khiển vòng lặp [...]... với biến Boole VD: chương trình điều khiển led sáng dần – tắt hết ORG 0000H Lap1: MOV A,#00000000B MOV P0,#00000000B ACALL DELAY Lap2: SETB C RRC A MOV P0,A ACALL DELAY JNC Lap2 SJMP Lap1 DELAY: MOV R6,#255 Lap3: MOV R7,#255 Lap4: DJNZ R7,Lap4 DJNZ R6,Lap3 RET END Bài tập Vi t chương trình điều khiển led sáng hết-tắt dần 4.3.1 Nhóm lệnh số học 4.3.1 Nhóm lệnh số học VD: lệnh ADD ADD A,7FH Định địa chỉ... lệnh với biến Boole 4.3.4 Nhóm lệnh với biến Boole Nhóm lệnh Boole là các tác vụ trên 1 bit, chỉ thực thi được đối với BIT có địa chỉ Ta có thể đặt lên 1 hay xóa về 0 các bit bằng 1 lệnh (rất thuận lợi cho điều khiển các thiết bị I/O) VD: 1 đèn led được điều khiển bằng bit 7 của Port 0 (P0.7), ta có thể bật đèn bằng cách set bit lên 1 SETB P0.7 Và tắt nó bằng cách xóa bit về 0 CLR P0.7 4.3.4 Nhóm lệnh. .. Boole Các lệnh trên bit còn có thể là các lệnh rẽ nhánh có điều kiện - JC rel: nhảy đến vị trí nhãn rel nếu bit C = 1 - JNC rel: nhảy đến vị trí nhãn rel nếu bit C = 0 - JB bit,rel: nhảy đến vị trí nhãn rel nếu bit điều kiện = 1 - JNB bit,rel: nhảy đến vị trí nhãn rel nếu bit điều kiện =0 - JBC bit,rel: nhảy đến vị trí nhãn rel nếu bit điều kiện = 1 và CLR (xóa) bit điều kiện về 0 4.3.4 Nhóm lệnh với... END 4.3.3 Nhóm lệnh chuyển dữ liệu Dựa vào chương trình mẫu trên, vi t ứng dụng: - led sáng dần và tắt hết 4.3.2 Nhóm lệnh luận lý - logic Click to edit Master text styles Second level Third level Fourth level Fifth level 4.3.2 Nhóm lệnh luận lý - logic Các lệnh logic thực hiện các phép toán Boole (AND, OR, NOT, XOR) trên cơ sở từng bit VD: thanh ghi A chứa giá trị 00110101B, thực hiện lệnh sau: ANL... R7 là 20H Sau khi thực hiện lệnh, giá trị trong A và giá trị trong R7 bằng bao nhiêu ? (A) = 20H và (R7) = 20H 4.3.3 Nhóm lệnh chuyển dữ liệu MOV A, #100 Ghi giá trị 100 vào thanh ghi A Sau khi thực hiện lệnh, giá trị trong thanh ghi A bằng bao nhiêu ? (A) = 100 4.3.3 Nhóm lệnh chuyển dữ liệu Lệnh “MOV dest, src” cho phép chuyển dữ liệu giữa bất kỳ byte RAM nội nào của 8051 mà không cần qua thanh ghi... A là 100, giá trị trong ô nhớ 7FH là 20H Sau khi thực hiện lệnh, giá trị trong A là bao nhiêu ? 132 hay 84H 4.3.1 Nhóm lệnh số học ADD A, R7 Cộng giá trị trong A và giá trị trong R7, kết quả được lưu vào A Nếu giá trị trong A là 10H, giá trị trong R7 là 20 Sau khi thực hiện lệnh, giá trị trong A là bao nhiêu ? 36 hay 24H 4.3.1 Nhóm lệnh số học ADD A, #100 Cộng giá trị trong thanh ghi A và giá trị sau...4.3.3 Nhóm lệnh chuyển dữ liệu 4.3.3 Nhóm lệnh chuyển dữ liệu Ví dụ về lệnh MOV A,(scr) MOV A, 7FH MOV A, R7 MOV A, #100 MOV A, 7FH Ghi giá trị trong ô nhớ 7FH vào A Nếu giá trị trong ô nhớ 7FH là 20H Sau khi thực hiện lệnh, giá trị trong A và giá trị trong ô nhớ 7FH bằng bao nhiêu ? (A) = 20H và (7FH) = 20H 4.3.3 Nhóm lệnh chuyển dữ liệu MOV A, R7 Ghi giá trị trong... R6,#255 LAP1: MOV R7,#255 LAP2: DJNZ R7,LAP2 4.3.2 Nhóm lệnh luận lý - logic Dựa vào chương trình mẫu trên, vi t ứng dụng: 1 led tắt dịch chuyển trên Port 0 4.3.2 Nhóm lệnh luận lý - logic Lệnh “RRC A”: xoay phải qua cờ C VD: thanh ghi A có nội dung 10000000B A 1 cờ C có nội dung là 1 0 0 0 0 C 0 0 0 1 Kết quả A 1 C 1 0 0 0 0 0 0 0 4.3.2 Nhóm lệnh luận lý - logic VD: có đoạn CT sau: MOV A,#00H Loop:... AND 01010011 Kquả 00010001 :được lưu vào A 4.3.2 Nhóm lệnh luận lý - logic Các lệnh xoay sẽ dịch giá trị trong thanh ghi sang trái 1 bit (RL: rotate left) hoặc phải 1 bit (RR: rotate right) (chỉ áp dụng được với thanh ghi A) VD: ban đầu A có giá trị 1000 0000B 1 0 0 Nếu thực hiện lệnh: 1 0 0 0 0 0 RR A 0 0 0 0 0 0 0 1 0 0 0 0 0 0 Kết quả 0 4.3.2 Nhóm lệnh luận lý - logic VD: chương trình 1 led sáng dịch... 0 0 0 0 A SETB C 1 1 0 C 0 0 0 0 0 0 0 A RRC A 1 1 C 1 0 0 0 0 0 0 0 4.3.2 Nhóm lệnh luận lý - logic VD: có đoạn CT sau: A 1 MOV A,#00H Loop: SETB C 1 1 1 1 1 1 0 A RRC A RRC A SJMP Loop C 1 C 1 1 1 1 1 1 1 A SETB C 1 1 0 C 1 1 1 1 1 1 1 A RRC A 1 1 C 1 1 1 1 1 1 1 1 4.3.2 Nhóm lệnh luận lý - logic VD: chương trình điều khiển led sáng dần – tắt hết ORG 0000H Lap1: MOV A,#00000000B MOV P0,#00000000B

Ngày đăng: 27/05/2016, 14:02

TỪ KHÓA LIÊN QUAN

w