Professional Documents
Culture Documents
Yêu cầu: LED (kết nối chân P1.0) sáng 1s và tắt 1s, quá trình trên lặp đi lặp lại.
Lưu ý một số lệnh quan trọng:
a) Lệnh xoá bit
Cú pháp: CLR bit
Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
Thời gian thực hiện: 1 chu kì máy
Công dụng: Xóa giá trị của bit nhớ có địa chỉ xác định - tức là đưa giá trị bit đó
về 0
1
8051 Microcontroller DroneTronics
Assembly Language Programming
c) Lệnh bù bit
Cú pháp: CPL bit
Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
Thời gian thực hiện: 1 chu kì máy
Công dụng: đổi giá trị của bit có địa chỉ xác định, nếu trước đó bit đó có giá trị
0 chuyển thành 1, và ngược lại nếu trước đó bit đó có giá trị 1 chuyển thành 0
Lệnh chuyển dữ liệu từ ô nhớ có địa chỉ direct vào thanh ghi A:
Lệnh chuyển dữ liệu từ ô nhớ có địa chỉ gián tiếp vào thanh ghi A:
2
8051 Microcontroller DroneTronics
Assembly Language Programming
Lệnh chuyển dữ liệu từ một ô nhớ có địa chỉ direct vào thanh ghi Rn
3
8051 Microcontroller DroneTronics
Assembly Language Programming
Lệnh chuyển dữ liệu từ thanh ghi A vào một ô nhớ có địa chỉ direct
Lệnh chuyển dữ liệu từ thanh ghi Rn vào một ô nhớ có địa chỉ direct
Lệnh chuyển dữ liệu từ một ô nhớ có địa chỉ direct này vào một ô nhớ có địa chỉ
direct khác
4
8051 Microcontroller DroneTronics
Assembly Language Programming
Lệnh chuyển dữ liệu từ một ô nhớ có địa chỉ gián tiếp vào ô nhớ có địa chỉ direct
Lệnh chuyển dữ liệu từ thanh ghi A vào ô nhớ có địa chỉ gián tiếp
Lệnh chuyển dữ liệu từ một ô nhớ có địa chỉ direct vào ô nhớ có địa chỉ gián tiếp
5
8051 Microcontroller DroneTronics
Assembly Language Programming
Lệnh nhảy có điều kiện kết hợp với lệnh giảm trên thanh ghi Rn
6
8051 Microcontroller DroneTronics
Assembly Language Programming
Công dụng:
Giảm giá trị của thanh ghi Rn xuống 1 đơn vị, và
-Nếu giá trị trong thanh ghi Rn khác 0, Vi điều khiển nhảy đến thực hiện chương
trình tại địa chỉ mà nhãn được đặt.
-Nếu giá trị trong thanh ghi Rn bằng 0, Vi điều khiển thực hiện lệnh kế tiếp
Lệnh nhảy có điều kiện kết hợp với lệnh giảm trên ô nhớ có địa chỉ direct
7
8051 Microcontroller DroneTronics
Assembly Language Programming
Thời gian delay là 1s, tức khoảng thời gian xung ở mức 0 là 1s và khoảng thời
gian xung ở mức 1 là 1s.
Mỗi vòng lập DJNZ có thời gian thực thi 2 chu kỳ máy, mà mỗi chu kỳ máy có
thời gian là 1,085.10−6 (𝑠). Gọi n là số lần lập, ta có:
1 = 𝑛. 2. 𝑇𝑀𝑎𝑐ℎ𝑖𝑛𝑒𝐶𝑦𝑐𝑙𝑒 = 𝑛. 2. (1,085.10−6 (𝑠)) (∗)
⇒ 𝑛 ≈ 460792
Ta xây dựng chương trình con với 3 vòng lập chồng vào nhau. Do giới hạn lưu trữ của
thanh ghi (256 giá trị: 0 – 255) nên ta sẽ dùng các vòng lặp ghép.
+ Lệnh DJNZ R3, $, giá trị R3 sẽ giảm đi 1 sau mỗi lần thực hiện lệnh, nếu giá trị
trong R3 vẫn còn khác 0 thì lệnh này lặp lại tại chỗ ($), nếu giá trị trong R3 bằng 0, vi điều
8
8051 Microcontroller DroneTronics
Assembly Language Programming
khiển thực hiện lệnh kế tiếp. Do đó lệnh này có ý nghĩa: lặp tại chỗ 250 lần (250 ∗ 2 =
500𝜇𝑠)
Lệnh DJNZ R3, $ được lồng vào lệnh DJNZ R2, L00P_2 sẽ khởi tạo lại giá trị cho
R3 là 250. Quá trình quay lại vòng lập LOOP_2 để nạp lại giá trị cho R3 sẽ diễn ra 250 lần
do giá trị R2 đã nạp là 250.
+ Lệnh DJNZ R1, LOOP_1 sẽ lặp thêm 7 vòng lớn (khi lệnh DJNZ R2, LOOP_2
thực hiện đến khi giá trị trong R2 là 0).
Theo lí thuyết, một cách gần đúng ta có thể xem vòng lập này sử dụng 2 ∗ 𝑛 = 2 ∗
𝑛1 ∗ 𝑛2 ∗ 𝑛3 chu kỳ máy. Ta chọn 𝑛1 =250, 𝑛2 =250 và 𝑛3 =7. Khi đó thời gian delay là: