Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Trong một chuỗi lệnh cần thực hiện thường có nhu cầu cần chuyển điều khiển chương trình đến một vị trí khác | CHƯƠNG 3 Các lệnh nhảy vừng lặp và lệnh gọi Trong một chuỗi lệnh cần thực hiện thường có nhu cần cần chuyển điều khiển chương trình đến một vị trí khác. Có nhiều lệnh để thực hiện điều này trong 8051 ở chương này ta sẽ tìm hiểu các lệnh chuyển điều khiển có trong hợp ngữ của 8051 như các lệnh sử dụng cho vòng lặp các lệnh nhảy có và không có điều khiển lệnh gọi và cuối cùng là mô tả về một chương trình con giữ chậm thời gian. 3.1 Vừng lặp và các lệnh nhảy. 3.1.1 Tạo vừng lặp trong 8051. Qúa trình lặp lại một chuỗi các lệnh với một số lần nhất định được gọi là vòng lặp. Vòng lặp là một trong những hoạt động được sử dụng rộng rãi nhất mà bất kỳ bộ vi sử lý nào đều thực hiện. Trong 8051 thì hoạt động vòng lặp được thực hiện bởi lệnh DJNZ thanh ghi nhãn . Trong lệnh này thanh ghi được giảm xuống nếu nó không bằng không thì nó nhảy đến địa chỉ đích được tham chiếu bởi nhãn. Trước khi bắt đầu vòng lặp thì thanh ghi được nạp với bộ đếm cho số lần lặp lại. Lưu ý rằng trong lệnh này việc giảm thanh ghi và quyết định để nhảy được kết hợp vào trong một lệnh đơn. Ví dụ 3.1 Viết một chương trình để a xoá ACC và sau đó b cộng 3 vào ACC 10 lần. Lời giải MOV A 0 Xoá ACC A 0 MOV R2 10 Nạp bộ đếm R2 10 BACK ADD A 10 Cộng 03 vào ACC DJNZ R2 AGAIN Lặp lại cho đến khi R2 0 10 lần MOV R5 A Cắt A vào thanh ghi R5 Trong chương trình trên đây thanh ghi R2 được sử dụng như là bộ đếm. Bộ đếm lúc đầu được đặt bằng 10. Mỗi lần lặp lại lệnh DJNZ giảm R2 không bằng 0 thì nó nhảy đến địa chỉ đích gắn với nhãn AGAIN . Hoạt động lặp lại này tiếp tục cho đến khi R2 trở về không. Sau khi R2 0 nó thoát khỏi vòng lặp và thực hiện đứng ngay dưới nó trong trường hợp này là lệnh MOV R5 A . Lưu ý rằng trong lệnh DJNZ thì các thanh ghi có thể là bất kỳ thanh ghi nào trong các thanh ghi R0 - R7. Bộ đếm cũng có thể là một ngăn nhớ trong RAM như ta sẽ thấy ở chương 5. Ví dụ 3.2 Số lần cực đại mà vòng lặp ở ví dụ 3.1 có thể lặp lại là bao nhiêu Lời giải Vì thanh ghi R2 chứa số đếm và nó là thanh ghi 8 bit nên .