1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giao tiếp vi điều khiển với LED đơn

20 1,7K 3
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 606,27 KB

Nội dung

Giao tiếp vi điều khiển với LED đơn

GIAO TIẾP VI ĐIỀU KHIỂN VỚI LED ĐƠN Sơ đồ mạch điện theo kiểu sink dòng: dòng chạy từ v cc qua led và điện trở hạn dòng vào vi điều khiển. Mức logic 0 thì led sáng, mức logic 1 thì led tắt. BÀI SỐ 1: CHƯƠNG TRÌNH ĐIỀU KHIỂN 8 LED CHÓP TẮT (SÁNG TẮT) ĐIỀU KHIỂN LED SÁNG THÌ DỮ LIỆU GỞI RA LED LÀ 1, MỨC 0 LED TẮT  LƯU ĐỒ BEGIN 8 LED SÁNG DELAY 8 LED TẮT DELAY END  VIẾT CHƯƠNG TRÌNH (H1) ;CHUONG TRINH DIEU KHIEN 8 LED CUA PORT 0 SANG TAT (H2) ORG 0000H (H3) LB: MOV P0,#00000000B (H4) CALL DELAY100MS (H5) MOV P0,#11111111B (H6) CALL DELAY100MS (H7) JMP LB (H8) $INCLUDE(TV_DELAY.ASM) (H9) END GIẢI THÍCH CHƯƠNG TRÌNH (H1) ;CHUONG TRINH DIEU KHIEN 8 LED CUA PORT 0 SANG TAT LÀ HÀNG CHÚ THÍCH CHƯƠNG TRÌNH ĐIỀU KHIỂN CÁI GÌ KHÔNG CÓ CŨNG ĐƯC NHƯNG NẾU CÓ THÌ PHẢI BẮT ĐẦU BẰNG DẤU ; (H2) ORG 0000H KHAI BÁO ĐỊA CHỈ BẮT ĐẦU CỦA CHƯƠNG TRÌNH LUÔN BẮT ĐẦU TẠI ĐỊA CHỈ 0000H, CÓ THỂ GHI 0H (H3) LB: MOV P0,#00000000B GỒM CÓ NHÃN ĐỂ NHẢY VÀ LỆNH MOV P0,#00000000B CÓ CHỨC NĂNG NẠP DỮ LIỆU 00000000B VÀO PORT0 B LÀ BINARY LÀ SỐ NHỊ PHÂN, CÓ THỂ GHI BẰNG SỐ HEX LÀM TẮT 8 LED, THỜI GIAN THỰC HIỆN LÀ 2µS (H4) CALL DELAY100MS LÀ LỆNH GỌI CHƯƠNG TRÌNH CON DELAY LÀM CHẬM LẠI ĐỂ NHÌN THẤY (H5) MOV P0,#11111111B CÓ CHỨC NĂNG NẠP DỮ LIỆU 11111111B VÀO PORT0 LÀM SÁNG 8 LED (H6) CALL DELAY100MS GỌI DELAY ĐỂ LÀM CHẬM (H7) JMP LB LỆNH NHẢY (JUMP) VỀ ĐỂ THỰC HIỆN LẠI (H8) $INCLUDE(TV_DELAY.ASM) KHAI BÁO CHƯƠNG TRÌNH CHỨA CÁC CHƯƠNG TRÌNH CON DELAY TRONG CHƯƠNG TRÌNH “TV_DELAY.ASM” NGƯỜI TA ĐÃ VIẾT SẴN CÁC CHƯƠNG TRÌNH CON DELAY, CHỈ DÙNG NHỮNG CHƯƠNG TRÌNH ĐÃ VIẾT (H9) END KẾT THÚC CHƯƠNG TRÌNH. NHỮNG GÌ SAU LỆNH END SẼ KHÔNG CÒN HIỆU LỰC. TÌM HIEÅU FILE “*.LST” MCS-51 MACRO ASSEMBLER TAMPRO4 10/31/:9 PAGE 1 DOS 5.0 (038-N) MCS-51 MACRO ASSEMBLER, V2.2 OBJECT MODULE PLACED IN E:\TAM\TAMPRO4.OBJ ASSEMBLER INVOKED BY: E:\ATS.EXE E:\TAM\TAMPRO4.ASM LOC OBJ LINE SOURCE 1 ;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT 0000 2 ORG 0000H 3 0000 758000 4 LB: MOV P0,#00000000B ;LAM 8 LED TAT 0003 120049 5 CALL DELAY100MS 0006 758001 6 MOV P0,#00000001B ;LAM 8 LED SANG 0009 120049 7 CALL DELAY100MS 000C 80F2 8 JMP LB 9 GIẢI THÍCH 0000 758000 4 LB: MOV P0,#00000000B ;LAM 8 LED TAT BYTE THỨ NHẤT “75” LÀ MÃ LỆNH BYTE THỨ HAI “80” LÀ ĐỊA CHỈ CỦA PORT 0 87 80H 86 85 84 83 82 81 80 P0 BYTE THỨ BA “00” LÀ DỮ LIỆU “#DATA” TƯƠNG TỰ CHO CÁC LỆNH CÒN LẠI 1. Lệnh chuyển dữ liệu vào ô nhớ trực tiếp :  Cú pháp : MOV direct, #data  Mã lệnh : 0 1 1 1 0 1 0 1 a7 a6 a5 a4 a3 a2 a1 a0 d7 d6 d5 d4 d3 d2 d1 d0  Lệnh này chiếm 3 byte và thời gian thực hiện lệnh là 2 chu kỳ máy  Chức năng: Nạp dữ liệu data 8 bit (d0 đến d7 ) vào ô nhớ có đòa chỉ direct. TÌM HIỂU FILE “*.HEX” CHỈ CHỨA CÁC MÃ LỆNH DẠNG NHỊ PHÂN: :1000000075800012004975800112004980F2757FE9 :1000100030D57FFD22757E0A757F30D57FFDD57E78 :10002000F722757E64757F30D57FFDD57EF722750A :100030007EC8757F30D57FFDD57EF722757EC87569 :100040007FFAD57FFDD57EF722113C113C22114964 :10005000114922114E114E22757D14113CD57DFBA4 :0A00600022757D28113CD57DFB229E :00000001FF CÁC LỆNH ĐÃ SỬ DỤNG 2. Lệnh gọi chương trình con dùng đòa chỉ tuyệt đối :  Cú pháp : ACALL addr11  Mã lệnh : a1 0 a9 a8 1 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0  Lệnh này chiếm 2 byte và thời gian thực hiện lệnh là 2 chu kỳ máy.  Chức năng: Khi lệnh này được thực hiện thì vi điều khiển sẽ thực hiện chương trình con tại đòa chỉ addr11. Chương trình con không được cách lệnh gọi quá 2 kbyte. Addr11 của chương trình con có thể thay bằng nhản (tên của chương trình con).  Chú ý: Trước khi nạp đòa chỉ mới vào thanh ghi PC thì đòa chỉ của lệnh kế trong chương trình chính được cất vào bộ nhớ ngăn xếp. 3. Lệnh gọi chương trình con dùng đòa chỉ dài 16 bit :  Cú pháp : LCALL addr16  Mã lệnh : 0 0 0 1 0 0 1 0 A15 a1 4 a1 3 a1 2 a1 1 a1 0 a9 a8 A7 a6 a5 a4 a3 a2 a1 a0  Lệnh này chiếm 3 byte và thời gian thực hiện lệnh là 2 chu kỳ máy  Chức năng: Khi lệnh này được thực hiện thì vi điều khiển sẽ thực hiện chương trình con tại đòa chỉ addr16. Lệnh này có thể gọi chương trình con ở đâu cũng được trong vùng 64kbyte. Addr16 của chương trình con có thể thay bằng nhản (tên của chương trình con).  16 bit đòa chỉ A15 – A0 được nạp vào PC, vi điều khiển sẽ thực hiện chương trình con tại đòa chỉ vừa nạp vào PC. Chú ý: Trước khi nạp đòa chỉ vào thanh ghi PC thì đòa chỉ của lệnh kế trong chương trình chính được cất vào bộ nhớ ngăn xếp. 4. Lệnh nhảy dùng đòa chỉ tuyệt đối :  Cú pháp : AJMP addr11  Mã lệnh : a1 0 a9 a8 0 0 0 0 1 a7 a6 a5 a4 A3 a2 a1 a0  Lệnh này chiếm 2 byte và thời gian thực hiện lệnh là 2 chu kỳ máy  nghóa của lệnh: vi điều khiển sẽ nhảy đến đến đòa chỉ addr11 để thực hiện chương trình tại đó. Addr11 có thể thay thế bằng nhản. Nhản hay đòa chỉ nhảy đến không quá 2 kbyte.  11 bit đòa chỉ A10 – A0 được nạp vào PC, các bit cao của PC không thay đổi, vi điều khiển sẽ nhảy đến thực hiện lệnh tại đòa chỉ PC mới vừa nạp.  Lệnh này khác với lệnh gọi chương trình con là không cất đòa chỉ trở về. Nơi nhảy đến không quá 2 kbyte so với lệnh nhảy. 5. Lệnh nhảy dùng đòa chỉ 16 bit :  Cú pháp : LJMP addr16  Mã lệnh : 0 0 0 0 0 0 1 0 a1 5 a1 4 a1 3 a1 2 a1 1 a1 0 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0  Lệnh này chiếm 3 byte và thời gian thực hiện lệnh là 2 chu kỳ máy  Chức năng: vi điều khiển sẽ nhảy đến đòa chỉ addr16 để thực hiện chương trình tại đó. Nơi nhảy đến tùy ý nằm trong vùng 64 kbyte. 6. Lệnh nhảy tương đối :  Cú pháp : SJMP rel  Mã lệnh : 1 0 0 0 0 0 0 0 r7 r6 r5 r4 r3 r2 r1 r0  Lệnh này chiếm 2 byte và thời gian thực hiện lệnh là 2 chu kỳ máy  Chức năng: vi điều khiển sẽ nhảy đến lệnh có đòa chỉ tương đối (rel) để thực hiện tiếp. Có thể thay thế rel bằng nhản.  Lệnh này chỉ nhảy trong tầm vực 256 byte: có thể nhảy tới 128 byte và có thể nhảy lùi 128 byte. Khi tầm vực nhảy xa hơn ta nên dùng lệnh AJMP hay LJMP.  Chú ý: rel [relative: tương đối]: các lệnh có xuất hiện “rel” đều liên quan đến lệnh nhảy: nơi nhảy đến được tính bằng cách lấy nội dung của PC cộng với số lượng byte của các lệnh nằm giữa lệnh nhảy và nơi nhảy đến. Chúng ta không cần quan tâm đến điều này chương trình biên dòch của máy tính sẽ tính giúp chúng ta. BÀI SỐ 2: CHƯƠNG TRÌNH ĐIỀU KHIỂN 16 LED CHÓP TẮT (SÁNG TẮT) P0 VÀ P1  LƯU ĐỒ ĐIỀU KHIỂN BEGIN 16 LED SÁNG DELAY 16 LED TẮT DELAY END  VIẾT CHƯƠNG TRÌNH ;CHUONG TRINH DIEU KHIEN 16 LED SANG TAT - P0 VA P1 ORG 0000H NHAN1: MOV P0,#00000000B MOV P1,#00000000B CALL DELAY100MS MOV P0,#11111111B MOV P1,#11111111B CALL DELAY100MS JMP NHAN1 $INCLUDE(TV_DELAY.ASM) END BÀI SỐ 3: CTDK 32 LED CHÓP TẮT (SÁNG TẮT) P0, P1, P2, P3  LƯU ĐỒ ĐIỀU KHIỂN BEGIN 32 LED SÁNG DELAY 32 LED TẮT DELAY END [...]... P0.7 CALL DELAY100MS ;SET BIT P0.7 JMP NHAN1 $INCLUDE(TV_DELAY.ASM) END BÀI SỐ 6: CTDK 8 LED CỦA PORT0 SÁNG TẮT DẦN  LƯU ĐỒ ĐIỀU KHIỂN BEGIN TẮT 8 LED, DELAY LED 0 SÁNG, DELAY LED 1 SÁNG, DELAY LED 2 SÁNG, DELAY LED 7 SÁNG, DELAY LED 0 TẮT, DELAY LED 1 TẮT, DELAY LED 7 TẮT, DELAY END  VI T CHƯƠNG TRÌNH DỮ LIỆU ĐIỀU KHIỂN CO CI 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 ←1 ←1 ←1 ←1 ←1 ←1 ←1 ←0 0 0 1 1 1 1 1 1 0... MOV P0,#11111100B ;LED 0,1 SANG CALL DELAY100MS MOV P0,#11111000B ;LED 0,1,2 SANG CALL DELAY100MS MOV P0,#11110000B ;LED 0,1,2 SANG CALL DELAY100MS MOV P0,#11100000B ;LED 0,1,2 SANG CALL DELAY100MS MOV P0,#11000000B ;LED 0,1,2 SANG CALL DELAY100MS MOV P0,#10000000B ;LED 0,1,2 SANG CALL DELAY100MS MOV P0,#00000000B ;LED 0,1,2 SANG CALL DELAY100MS ;SANG HET 8 LED MOV P0,#00000001B ;TAT LED 0 CALL DELAY100MS... DELAY100MS MOV P0,#00000011B ;TAT LED 0,1 CALL DELAY100MS MOV P0,#00000111B ;TAT LED 0,1,2 CALL DELAY100MS MOV P0,#00001111B ;TAT LED 0,1,2 CALL DELAY100MS MOV P0,#00011111B ;TAT LED 0,1,2 CALL DELAY100MS MOV P0,#00111111B ;TAT LED 0,1,2 CALL DELAY100MS MOV P0,#01111111B ;TAT LED 0,1,2 CALL DELAY100MS JMP NHAN1 $INCLUDE(TV_DELAY.ASM) END CÁCH 2 LƯU ĐỒ BEGIN TẮT 8 LED DELAY DỊCH ‘0’ VÀO HẾT ‘1’ Đ S... DELAY100MS JMP NHAN1 $INCLUDE(TV_DELAY.ASM) END BÀI SỐ 5: CTDK SÁNG TẮT 1 LED CỦA PORT0  LƯU ĐỒ ĐIỀU KHIỂNVI T CHƯƠNG TRÌNH ;CHUONG TRINH DIEU KHIEN 1 LED CUA PORT 0 SANG TAT ORG MOV P0,#11111110B CALL DELAY100MS MOV P0,#11111111B CALL NHAN1: 0000H DELAY100MS JMP NHAN1 $INCLUDE(TV_DELAY.ASM) END CÁCH 2 ;CHUONG TRINH DIEU KHIEN 1 LED CUA PORT 0 SANG TAT ORG NHAN1: 0000H CLR P0.7 ;CLEAR BIT P0.7 CALL... ngược với lệnh RL A 10 Lệnh xoay phải nội dung thanh ghi A và bit carry :  Cú pháp : RRC A  Mã lệnh : 1 1 1 0 0 1 0 0  Lệnh này chiếm 1 byte và thời gian thực hiện lệnh là 1 chu kỳ máy  Chức năng: Nội dung thanh ghi A và bit C được xoay phải 1 bit ngược với lệnh RLC A ;CHUONG TRINH DIEU KHIEN 8 LED CUA PORT 0 SANG TAT ORG 0000H NHAN1: MOV P0,#11111111B ;8 LED TAT CALL DELAY100MS MOV P0,#11111110B ;LED. .. VI T CHƯƠNG TRÌNH ;CHUONG TRINH DIEU KHIEN 32 LED SANG TAT - P0,P1,P2,P3 ORG MOV P0,#00000000B MOV P1,#00000000B MOV P2,#00000000B MOV P3,#00000000B CALL DELAY100MS MOV P0,#11111111B MOV P1,#11111111B MOV P2,#11111111B MOV P3,#11111111B CALL NHAN1: 0000H DELAY100MS JMP NHAN1 $INCLUDE(TV_DELAY.ASM) END BÀI SỐ 4: CTDK SÁNG TẮT DẦN CÁC PORT 0,1,2,3  LƯU ĐỒ ĐIỀU KHIỂN BEGIN SÁNG P0... 4: CTDK SÁNG TẮT DẦN CÁC PORT 0,1,2,3  LƯU ĐỒ ĐIỀU KHIỂN BEGIN SÁNG P0 DELAY SÁNG P1 DELAY SÁNG P2 DELAY SÁNG P3 DELAY TẮT P0 DELAY TẮT P1 DELAY TẮT P2 DELAY TẮT P3 DELAY END  VI T CHƯƠNG TRÌNH ;CHUONG TRINH DIEU KHIEN 32 LED SANG TAT - P0,P1,P2,P3 ORG NHAN1: 0000H MOV P0,#00000000B CALL DELAY100MS MOV P1,#00000000B CALL DELAY100MS MOV P2,#00000000B CALL DELAY100MS MOV P3,#00000000B CALL DELAY100MS... P0,#11111111B ;8 LED TAT LB1: CALL DELAY100MS CLR C MOV A,P0 RRC A MOV P0,A JC LB1 ;XOA C DE DICH VAO ;XOAY CHI DUNG CHO TG A ;NHAY VE "LB1" NEU C = 1 ;SANG HET - TAT DAN LB2: SETB MOV C A,P0 ; SET C DE DICH VAO RRC A ;XOAY CHI DUNG CHO TG A MOV P0,A CALL DELAY100MS JNC LB2 JMP LB ;NHAY VE "LB2" NEU C = 0 $INCLUDE(TV_DELAY.ASM) END GIẢI THÍCH CHƯƠNG TRÌNH (H1) ;CHUONG TRINH DIEU KHIEN 8 LED CUA PORT 0 . GIAO TIẾP VI ĐIỀU KHIỂN VỚI LED ĐƠN Sơ đồ mạch điện theo kiểu sink dòng: dòng chạy từ v cc qua led và điện trở hạn dòng vào vi điều khiển. . thì led sáng, mức logic 1 thì led tắt. BÀI SỐ 1: CHƯƠNG TRÌNH ĐIỀU KHIỂN 8 LED CHÓP TẮT (SÁNG TẮT) ĐIỀU KHIỂN LED SÁNG THÌ DỮ LIỆU GỞI RA LED

Ngày đăng: 24/04/2013, 16:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w