1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Dạy lập trình biển led quảng cáo Bài 2 Chipkool

5 646 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 97,85 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tìm hiểu lệnh quay trái không cờ nhớ: Lệnh quay trái chỉ được thao tác trên thanh ghi A ngoài ra không thao tác được trên thanh ghi nào?. Quay Trái là thực hiện dịch bít thấp lên dần bi

Trang 1

I Viết tổng hợp nhiều hiệu ứng 8 Led đơn? ( Bài Tập cho Học Viên phát triển)

1 Sáng đuổi 1 Led chạy từ trên xuống dưới, sau đó chạy từ dưới lên trên 2 lần:

2 Sáng dần từ trên xuống dưới , sau đó chạy tắt dần từ dưới lên trên

3 Sáng chạy 2 Led từ giữa ra 2 bên, rồi từ 2 bên vào giữa lặp lại 3 lần

3 Sáng nhấp nháy 8 bit, sau đó nhấp nháy tráo đổi 4 bít cao và 4 bít thấp

4 Sáng So le chẵn lẻ chạy từ trên xuốn dưới

5 Sáng dồn từ trên xuống, sáng dồn từ dưới lên, sáng dồn từ 2 ben vào giữa, sáng dồn từ giữa sang 2 bên

II Viết chương trình quảng cáo với các lệnh quay

1 Tìm hiểu lệnh quay trái không cờ nhớ:

Lệnh quay trái chỉ được thao tác trên thanh ghi A ngoài ra không thao tác được trên thanh ghi nào? Quay Trái là thực hiện dịch bít thấp lên dần bit cao

VD: MOV A,#00000001B; hieu ung sang duoi 1 led

LAP:

RL A; thuc hien quay trai

MOV P2,A; xuat hien thi

CALL DELAY; tre de nhin thay hieu ung

CJNE A,#00000001B,LAP; kiem tra neu bang 00000001B thi thoat, con neu chua bang ;thi quay lai nhan LAP de thuc hien lai

+ Quá trình thực hiện các lệnh:

Thực hiện lệnh MOV A,#00000001B , Thanh ghi A sẽ có Byte dữ liệu 00000001B

Thực hiện Lệnh RL A, khi đó thanh ghi A sẽ là 00000010B

Thực hiện lệnh MOV P2,A khi đó Led hiển thị các mức 00000010 tín hiệu

Trang 2

Thực hiện Lệnh CALL DELAY sẽ cho mắt ta nhìn thấy hiệu ứng, không thì mắt thần mới thấy được ^^

Thực hiện lệnh CJNE A,#00000001B,LAP lệnh này tương ứng với lệnh IF trong lập trình C++ nếu thanh ghi A sau mỗi lần dịch bit nếu nó chưa bằng 00000001 thì nó phải quay lại nhãn LAP để thực hiện lại các lệnh RL A – MOV P2,A – CALL DELAY nếu sau quá trình lặp nó thấy thanh ghi A có giá trị bằng 00000001 rồi nó thoát khỏi chương trình hiệu ứng này, làm hiệu ứng tiếp theo bên dưới

+ VD: rõ hơn cho quá trình dịch bít trái

Lần 0 A = 0 0 0 0 0 0 0 1

Lần 1 A = 0 0 0 0 0 0 1 0

Lần 2 A = 0 0 0 0 0 1 0 0

Lần 3 A = 0 0 0 0 1 0 0 0

Lần 4 A = 0 0 0 1 0 0 0 0

Lần 5 A = 0 0 1 0 0 0 0 0

Lần 6 A = 0 1 0 0 0 0 0 0

Lần 7 A = 1 0 0 0 0 0 0 0

+ Như vậy Lệnh quay rất ngắn gọn , tối ưu chương trình bình thường chúng ta viết chường trình sáng đuổi thì rất dài:

MOV P2,#00000000B

CALL DELAY

MOV P2,#00000001B

CALL DELAY

MOV P2,#00000010B

CALL DELAY

MOV P2,#00000100B

CALL DELAY

MOV P2,#00001000B

CALL DELAY

MOV P2,#00010000B

CALL DELAY

MOV P2,#00100000B

CALL DELAY

MOV P2,#01000000B

CALL DELAY

MOV P2,#10000000B

CALL DELAY

2 Tìm hiểu lệnh quay phải không cờ nhớ:

Tương tự như đối với lệnh quay trái thì lệnh quay phải sẽ dịch bít sang phải tức là từ bít cao xuống bit thấp

RR A

Trang 3

VD: MOV A,#10000000B; sáng đuổi từ dưới lên trên

LAP1:

RR A

MOV P2,A

CALL DELAY

CJNE A, #10000000B,LAP1

3 Tìm hiểu lệnh quay trái có cờ nhớ:

Như tìm hiểu 2 phần trên Lệnh quay trái và Lệnh quay phải chưa có cờ nhớ, sẽ chỉ chạy được hiệu ứng sáng đuổi 1 led hoặc 2 led, 3 led

Giờ sẽ là Lệnh quay có cờ nhớ Vậy cờ nhớ là gì, hãy coi nó như là 1 bít, bình thường thanh ghi Byte có 8 bít, ta tưởng tượng có thêm 1 bít nữa gán vào thanh 8 bít đó thành thanh ghi 9 bit việc lập trình quay với 9 bít cũng giống như đối với 8 bít

+ VD: Viết hiệu ứng sáng dần với 8 led từ trên xuống dưới

MOV A,#00000000B; nap gia tri 00000000 vao thanh ghi A

LAP:

SETB C; Thiet lap co nho len 1

RLC A; Quay trai thanh ghi A voi co nho

MOV P2,A; Xuat hien thi ra PORT 2

CALL DELAY; Tao chuong trinh tre hien thi

CJNE A,#11111111B,LAP; kiem tra xem thanh ghi A da la 11111111 chưa

Việc lập trình mục này sẽ liên quan đến 2 lệnh SETB và CLR Lệnh SETB là nâng bít lên 1, còn CLR là hạ bít xuống 0 ( nói nôm na như vậy cho dễ hiểu)

+ Giải thích chương trình:

Lệnh MOV A,#00000000B Nạp giá trị tắt hết led vào thanh ghi A

Lệnh SETB C Cài đặt ( nâng bít) cờ C lên 1 khi đó sẽ có thêm 1 bít nữa nằm cuối thanh ghi A và sẽ ở bít thấp nhất

00000000 1

Lệnh RLC A sẽ thực hiện quay trái thanh ghi A với Cờ C quay như sau Đổi bít cờ C cuối thành 1 vì nó chèn bít cao nhất của thang ghi A xuống, đẩy bít 1 thấp nhất lên

00000001 0

Lệnh MOV P2,A , Xuất hiển thị gia trị sau: 00000001 mà không xuất cờ C ( vì nó chỉ là ảo)

Lệnh CALL DELAY trễ hiển thị

Lệnh CJNE A,#11111111B,LAP dùng để kiểm tra xem thanh ghi A đã quay đủ 8 bít 1 chưa

+ Giải mã lệnh:

A7 A6 A5 A4 A3 A2 A1 C

Trang 4

Lần 5 0 0 0 1 1 1 1 0

+ Như vậy Lệnh quay rất ngắn gọn , tối ưu chương trình bình thường chúng ta viết chương trình sáng dần thì rất dài:

MOV P2,#00000000B

CALL DELAY

MOV P2,#00000001B

CALL DELAY

MOV P2,#00000011B

CALL DELAY

MOV P2,#00000111B

CALL DELAY

MOV P2,#00001111B

CALL DELAY

MOV P2,#00011111B

CALL DELAY

MOV P2,#00111111B

CALL DELAY

MOV P2,#01111111B

CALL DELAY

MOV P2,#11111111B

CALL DELAY

4 Tìm hiểu lệnh quay phải có cờ nhớ

Tương tự như đối với lệnh quay trái có cờ nhớ, lệnh quay phải sẽ quay và set cờ C từ phía Bit cao nhất

VD: Sáng dần từ dưới lên trên

MOV A,#00000000B

LAP:

SETB C

RRC A

MOV P2,A

CALL DELAY

CJNE A,#11111111B,LAP

TÓM LẠI: Việc lập trình quảng cáo dùng lệnh MOV hay Lệnh quay phụ thuộc rất nhiều

và phần cứng biển led quảng cáo, thao tác chân Vi Điều Khiển, khi cần lập trình có độ uyển chuyển cao thì dùng lệnh MOV còn khi lập trình trong cùng 1 PORT tối ưu bộ nhớ

Trang 5

chương trình thì dùng lệnh Quay - > Khi lập trình thật hay dùng lệnh MOV và lệnh SETB

và CLR nhất

Ngày đăng: 05/04/2016, 22:34

TỪ KHÓA LIÊN QUAN