GIÁO TRÌNH QUẢNG CÁO LED ĐƠN – BÀI I Viết tổng hợp nhiều hiệu ứng Led đơn? ( Bài Tập cho Học Viên phát triển) Sáng đuổi Led chạy từ xuống dưới, sau chạy từ lên lần: Sáng dần từ xuống , sau chạy tắt dần từ lên Sáng chạy Led từ bên, từ bên vào lặp lại lần Sáng nhấp nháy bit, sau nhấp nháy tráo đổi bít cao bít thấp Sáng So le chẵn lẻ chạy từ xuốn Sáng dồn từ xuống, sáng dồn từ lên, sáng dồn từ ben vào giữa, sáng dồn từ sang bên II Viết chương trình quảng cáo với lệnh quay Tìm hiểu lệnh quay trái không cờ nhớ: Lệnh quay trái thao tác ghi A không thao tác ghi nào? Quay Trái thực dịch bít thấp lên dần bit cao VD: MOV A,#00000001B; hieu ung sang duoi 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, neu chua bang ;thi quay lai nhan LAP de thuc hien lai + Quá trình thực lệnh: Thực lệnh MOV A,#00000001B , Thanh ghi A có Byte liệu 00000001B Thực Lệnh RL A, ghi A 00000010B Thực lệnh MOV P2,A Led hiển thị mức 00000010 tín hiệu www.echipkool.com – Đình Duy - UNETI Page GIÁO TRÌNH QUẢNG CÁO LED ĐƠN – BÀI Thực Lệnh CALL DELAY cho mắt ta nhìn thấy hiệu ứng, không mắt thần thấy ^^ Thực lệnh CJNE A,#00000001B,LAP lệnh tương ứng với lệnh IF lập trình C++ ghi A sau lần dịch bit chưa 00000001 phải quay lại nhãn LAP để thực lại lệnh RL A – MOV P2,A – CALL DELAY sau trình lặp thấy ghi A có giá trị 00000001 thoát khỏi chương trình hiệu ứng này, làm hiệu ứng bên + VD: rõ cho trình dịch bít trái Lần A = 0 Lần A = 0 Lần A = 0 Lần A = 0 Lần A = 0 Lần A = 0 Lần A = Lần A = 0 + Như Lệnh quay ngắn gọn chường trình sáng đuổi 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 0 0 0 1 0 0 0 , tối ưu 0 1 0 0 0 0 0 0 0 0 chương trình bình thường viết Tìm hiểu lệnh quay phải không cờ nhớ: Tương tự lệnh quay trái lệnh quay phải dịch bít sang phải tức từ bít cao xuống bit thấp RR A www.echipkool.com – Đình Duy - UNETI Page GIÁO TRÌNH QUẢNG CÁO LED ĐƠN – BÀI VD: MOV A,#10000000B; sáng đuổi từ lên LAP1: RR A MOV P2,A CALL DELAY CJNE A, #10000000B,LAP1 Tìm hiểu lệnh quay trái có cờ nhớ: Như tìm hiểu phần Lệnh quay trái Lệnh quay phải chưa có cờ nhớ, chạy hiệu ứng sáng đuổi led led, led Giờ Lệnh quay có cờ nhớ Vậy cờ nhớ gì, coi bít, bình thường ghi Byte có bít, ta tưởng tượng có thêm bít gán vào bít thành ghi bit việc lập trình quay với bít giống bít + VD: Viết hiệu ứng sáng dần với led từ xuống MOV A,#00000000B; nap gia tri 00000000 vao ghi A LAP: SETB C; Thiet lap co nho len RLC A; Quay trai ghi A voi co nho MOV P2,A; Xuat hien thi PORT CALL DELAY; Tao chuong trinh tre hien thi CJNE A,#11111111B,LAP; kiem tra xem ghi A da la 11111111 chưa Việc lập trình mục liên quan đến lệnh SETB CLR Lệnh SETB nâng bít lên 1, CLR hạ bít xuống ( nói nôm na 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 ghi A Lệnh SETB C Cài đặt ( nâng bít) cờ C lên có thêm bít nằm cuối ghi A bít thấp 00000000 Lệnh RLC A thực quay trái ghi A với Cờ C quay sau Đổi bít cờ C cuối thành chèn bít cao thang ghi A xuống, đẩy bít thấp lên 00000001 Lệnh MOV P2,A , Xuất hiển thị gia trị sau: 00000001 mà không xuất cờ C ( ảo) Lệnh CALL DELAY trễ hiển thị Lệnh CJNE A,#11111111B,LAP dùng để kiểm tra xem ghi A quay đủ bít chưa + Giải mã lệnh: A7 A6 A5 A4 A3 A2 A1 C Lần 0 0 0 Lần 0 0 0 Lần 0 0 1 Lần 0 0 1 www.echipkool.com – Đình Duy - UNETI Page GIÁO TRÌNH QUẢNG CÁO LED ĐƠN – BÀI Lần Lần Lần Lần 0 0 1 1 1 1 1 1 1 1 1 1 0 0 + Như Lệnh quay ngắn gọn , tối ưu chương trình bình thường viết chương trình sáng dần 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 Tìm hiểu lệnh quay phải có cờ nhớ Tương tự lệnh quay trái có cờ nhớ, lệnh quay phải quay set cờ C từ phía Bit cao VD: Sáng dần từ lê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 nhiều phần cứng biển led quảng cáo, thao tác chân Vi Điều Khiển, cần lập trình có độ uyển chuyển cao dùng lệnh MOV lập trình PORT tối ưu nhớ www.echipkool.com – Đình Duy - UNETI Page GIÁO TRÌNH QUẢNG CÁO LED ĐƠN – BÀI chương trình dùng lệnh Quay - > Khi lập trình thật hay dùng lệnh MOV lệnh SETB CLR www.echipkool.com – Đình Duy - UNETI Page ... 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... 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... cao xuống bit thấp RR A www.echipkool.com – Đình Duy - UNETI Page GIÁO TRÌNH QUẢNG CÁO LED ĐƠN – BÀI VD: MOV A,#10000000B; sáng đuổi từ lên LAP1 : RR A MOV P2,A CALL DELAY CJNE A, #10000000B ,LAP1