Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 40 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
40
Dung lượng
1,05 MB
Nội dung
3 TẬP LỆNH CỦA 8051 Các kiểu định địa -Khi lệnh thực thi lệnh yêu cầu liệu, câu hỏi đặt "Dữ liệu chứa đâu?" Câu trả lời cho câu hỏi tạo kiểu (mode) định địa 8051 - Các kiểu định địa cho phép ta xác định rõ nguồn đích liệu theo nhiều cách khác phụ thuộc vào tình lập trình Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com • Bộ nhớ liệu: RAM – 128 Byte 7F 7E 7D 7C 7B 7A 79 78 … Byte address 7FH 2F 2E RAM đa mục đích 30H 2FH RAM định địa bit 20H 1FH 18H 17H 10H 0FH 08H 07H 00H Bank Bank Bank (Stack) Default Register Bank for R0-R7 R7 R6 R5 R4 R3 R2 1F 17 0F 07 1E 1D 1C 1B 1A 16 15 14 13 12 0E 0D 0C 0B 0A 06 05 04 03 02 19 11 09 01 … 18 10 08 00 20 Bit address R1 R0 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Các kiểu định địa chỉ: + Tức thời (Immediate) + Thanh ghi (Register) + Trực tiếp (Direct) + Gián tiếp (Indirect) + Chỉ số (Indexed) Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Định địa tức thời (Immediate) - Khi toán hạng nguồn số thay biến byte liệu tức thời - Trước liệu phải có dấu # -Tất lệnh sử dụng kiểu định địa tức thời sử dụng liệu 8-bit làm liệu tức thời -Có ngoại lệ ta khởi động trỏ liệu 16-bit DPTR, liệu 16-bit cần đến Ví dụ: MOV MOV MOV MOV A,#65H R6,#55H DPTR,#2343H P1,#0FH Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Kiểu ghi (Register) - Sử dụng ghi làm việc để lưu liệu cần thao tác Hợp ngữ 8051 kiểu định địa ghi ký hiệu Rn, n có giá trị từ đến VD: ADD A,R7 - Thanh nguồn đích phải phù hợp kích thước - Không phép chuyển trực tiếp ghi Rn với Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Định địa trực tiếp (Direct) -Địa liệu trực tiếp lệnh -Chế độ định địa trực tiếp dùng để truy cập tồn khơng gian nhớ RAM Tuy nhiên, thực tế chế độ thường dùng để truy cập ngăn nhớ RAM từ địa 30H đến 7FH -Cần phân biệt với chế độ định địa tức thời -Các ghi R0 đến R7 truy cập cách: Thanh ghi trực tiếp -Ngăn xếp chế độ định địa trực tiếp Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Định địa gián tiếp (Indirect) -Ở chế độ này, ghi dùng để trỏ đến liệu có nhớ Nếu liệu chip ghi R0 R1 sử dụng, hoạt động trỏ (pointer) -Kiểu định địa gián tiếp nhận biết dựa vào ký hiệu @ Ví dụ: dụ Ghi số 55H vào ô nhớ từ 40H đến 44H RAM MOV MOV MOV INC MOV INC A,#55H R0,#40H @R0,A R0 @R0,A R0 ; Nạp vào A giá trị 55H ; Nạp vào trỏ R0 = 40H ; Ghi A vào ghi R0 trỏ đến ; Tăng trỏ Bây R0 = 41H ; Ghi A vào ghi R0 trỏ đến (41H) ; Tăng trỏ Bây R0 = 42H Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com + Định địa chỉ số - Sử dụng ghi (hoặc đếm chương trình trỏ liệu) offset (thanh chứa A) tạo thành dạng địa hữu dụng cho lệnh JMP MOVC - Trong nhiều ứng dụng, bảng nhảy bảng tìm kiếm tạo dễ dàng cách sử dụng kiểu định địa chỉ số VD: Đọc giá trị từ x (0 đến 9) cổng P0 xuất giá trị bình phương cổng P1 Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Tập lệnh lệnh Tập lệnh 8051 chia làm nhóm + Nhóm lệnh số học + Nhóm lệnh logic + Nhóm lệnh di chuyển liệu + Nhóm lệnh xử lý bit + Nhóm lệnh rẽ nhánh Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh xử lý Bit Lệnh Mơ tả CLR C CLR bit Xóa bit SETB C SETB bit Set bit CPL C CPL bit Lấy bù bit ANL C,bit ANL C,/bit (not bit) AND bit với C AND NOT bit với C ORL C,bit ORL C,/bit (not bit) OR bit với C OR NOT bit với C MOV C,bit MOV bit,C Di chuyển bit đến bit Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh điều khiển rẽ nhánh + Gọi chương trình LỆNH ACALL addr11 LCALL addr16 RET RETI MƠ TẢ Gọi khơng điều kiện chương trình đặt địa lệnh Quay trở từ chương trình Quay từ trình phục vụ ngắt Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh điều khiển rẽ nhánh + Nhảy không điều kiện LỆNH AJMP addr11 LJMP addr16 SJMP rel MÔ TẢ Nhảy (chuyển việc thực thi chương trình) khơng điều kiện đến địa lệnh Nhảy ngắn, rẽ nhánh không điều kiện JMP @A+DPTR Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng Nhảy gián tiếp caonam@gmail.com Ví dụ: Viết chương trình nhấp nháy led • • • • • • • • • • • • • • ORG 0000H MAIN: CPL P3.0 // THAY DOI TRANG THAI P3.0 ACALL DELAY // TAO TRE SJMP MAIN DELAY: MOV R0,#4 MOV R1,#250 MOV R2,#250 DJNZ R2,$ DJNZ R1,$-4 DJNZ R0,$-8 RET END //Ket thuc chuong trinh Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh điều khiển rẽ nhánh + Nhảy có điều kiện LỆNH MƠ TẢ rel Nhảy đến địa chỉ(hoặc nhãn) lệnh nêú nội dung A Jump if A Zero JNZ rel Nhảy đến địa chỉ(hoặc nhãn) lệnh nêú nội dung A khác Jump if A Not Zero JZ Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh điều khiển rẽ nhánh (tiếp) LỆNH DJNZ DJNZ Rn,rel direct,rel MƠ TẢ Giảm byte tốn hạng lệnh rẽ nhánh đến địa kết sau giảm khác Nếu kết sau giảm thực lệnh Decrease and Jump if Not Zero NOP Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng Khơng làm caonam@gmail.com Ví dụ: Viết đoạn chương trình delay • • • • • • • • • • • • • • ORG 0000H MAIN: CPL P3.0 // THAY DOI TRANG THAI P3.0 ACALL DELAY // TAO TRE SJMP MAIN DELAY: MOV R0,#4 MOV R1,#250 MOV R2,#250 DJNZ R2,$ DJNZ R1,$-4 DJNZ R0,$-8 RET END //Ket thuc chuong trinh Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh điều khiển rẽ nhánh (tiếp) LỆNH CJNE dest,source,rel CJNE A,direct,rel CJNE A,#data,rel CJNE @Ri,#data,rel CJNE Rn,#data,rel Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng MƠ TẢ So sánh nhảy đến địa (hoặc label) lệnh dest source không Nếu nhau, thực lệnh Compare and jump if not equal caonam@gmail.com VÍ DỤ Ví dụ: Viết chương trình điều khiển đèn giao thơng - u cầu: + X1, D1,V1: P0.0, P0.1, P0.2 + X2, D2, V2: P0.3, P0.4, P0.5 + 1: sáng; tắt + Xanh sáng 25 giây, vàng 5s, đỏ 30s - Hướng giải quyết: + Tạo hàm trễ 1s + Tạo biến đếm lên sau giây + So sánh với 25, 30, 55, 60 để bật tắt bóng đèn tương ứng Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh điều khiển rẽ nhánh (tiếp) LỆNH MÔ TẢ JNB bit,rel Nếu bit lệnh 0, nhảy đến địa lệnh Ngược lại, thực lệnh JB bit,rel Nếu bit lệnh 1, xóa bit nhảy đến địa lệnh Ngược lại, thực lệnh Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com VÍ DỤ Viết chương trình thực hiên phép cộng nội dung ô nhớ RAM từ ô nhớ 50H đến 100H: - Yêu cầu: + Công tắt 1, 2: P1.0, P1.1 + Bóng đèn 1, 2, 3, 4: P1.2, P1.3, P1.4, P1.5 + Khi: 0, 0: 1: sáng, tắt, tắt, tắt + Khi: 0,1: tắt, sáng, tắt, tắt + Khi: 1, 0: tắt, tắt, sáng, tắt + Khi 1, 1: tắt, tắt, tắt, sáng - Hướng giải quyết: Dùng lệnh JB JNB Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com Nhóm lệnh điều khiển rẽ nhánh (tiếp) LỆNH MÔ TẢ JC rel Nếu C =1, nhảy đến địa lệnh Ngược lại, thực lệnh JNC rel Nếu C=0, xóa bit nhảy đến địa lệnh Ngược lại, thực lệnh Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Cơng nghệ Đà Nẵng caonam@gmail.com VÍ DỤ Viết chương trình thực hiên phép cộng nội dung ô nhớ RAM từ ô nhớ 50H đến 100H: - Yêu cầu: Byte cao chứa R2, Byte thấp chứa R1 - Hướng giải quyết: - Dùng chế độ định địa gián tiếp ghi @Ri để truy cập liệu - Thực phép cộng: ADD - Kiểm tra cờ nhớ C lệnh JC JNC để tăng byte cao đơn vị - Dùng lệnh DJNZ để tạo vòng lặp Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Vi du • Viết chương trình thay đổi giá trị thời gian nút ấn tăng giảm Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com • Sử dụng lệnh nhảy để tạo cấu trúc lập trình • Cấu trúc chọn kiểu IF • Cấu trúc chọn kiểu IF – ELSE • Cấu trúc chọn kiểu CASE • Cấu trúc lặp WHILE; WHILE – DO; FOR; Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com ... thay biến byte liệu tức thời - Trước liệu phải có dấu # -Tất lệnh sử dụng kiểu định địa tức thời sử dụng liệu 8-bit làm liệu tức thời -Có ngoại lệ ta khởi động trỏ liệu 16-bit DPTR, liệu 16-bit... lệnh điều khiển rẽ nhánh + Nhảy không điều kiện LỆNH AJMP addr11 LJMP addr16 SJMP rel MÔ TẢ Nhảy (chuyển vi c thực thi chương trình) khơng điều kiện đến địa lệnh Nhảy ngắn, rẽ nhánh không điều. .. A,#65H R6,#55H DPTR,# 234 3H P1,#0FH Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng caonam@gmail.com Kiểu ghi (Register) - Sử dụng ghi làm vi c để lưu liệu cần thao tác Hợp