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

Tiêu đề Giao tiếp vi điều khiển với led đơn
Trường học Trường Đại Học Khoa Học Tự Nhiên
Thể loại bài
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 20
Dung lượng 606,27 KB

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

Nội dung

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

Trang 1

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ừ vcc 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

Trang 2

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

(H3) LB: MOV P0,#00000000B

(H5) MOV P0,#11111111B

Trang 3

(H7) JMP LB

(H8) $INCLUDE(TV_DELAY.ASM)

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 ;

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

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

GỌI DELAY ĐỂ LÀM CHẬM

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

KẾT THÚC CHƯƠNG TRÌNH

NHỮNG GÌ SAU LỆNH END SẼ KHÔNG CÒN HIỆU LỰC

Trang 4

TÌM HIEÅU FILE “*.LST”

Trang 5

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

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 :

Trang 6

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”

Trang 7

CHỈ CHỨA CÁC MÃ LỆNH DẠNG NHỊ PHÂN:

:1000000075800012004975800112004980F2757FE9 :1000100030D57FFD22757E0A757F30D57FFDD57E78 :10002000F722757E64757F30D57FFDD57EF722750A :100030007EC8757F30D57FFDD57EF722757EC87569 :100040007FFAD57FFDD57EF722113C113C22114964 :10005000114922114E114E22757D14113CD57DFBA4 :0A00600022757D28113CD57DFB229E

:00000001FF

Trang 8

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

Trang 9

 Lệnh này chiếm 2 byte và thời gian thực hiện lệnh là 2 chu kỳ máy

 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

vì 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

Trang 10

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

Trang 11

VIẾT CHƯƠNG TRÌNH

;CHUONG TRINH DIEU KHIEN 32 LED SANG TAT - P0,P1,P2,P3

ORG 0000H NHAN1: 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 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

Trang 12

SÁNG P0 DELAY

END

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

VIEÁT CHÖÔNG TRÌNH

;CHUONG TRINH DIEU KHIEN 32 LED SANG TAT - P0,P1,P2,P3

ORG 0000H NHAN1: MOV P0,#00000000B

CALL DELAY100MS MOV P1,#00000000B CALL DELAY100MS MOV P2,#00000000B CALL DELAY100MS MOV P3,#00000000B CALL DELAY100MS

MOV P0,#11111111B CALL DELAY100MS MOV P1,#11111111B CALL DELAY100MS MOV P2,#11111111B

Trang 13

CALL DELAY100MS MOV P3,#11111111B CALL 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ỂN

VIẾT CHƯƠNG TRÌNH

;CHUONG TRINH DIEU KHIEN 1 LED CUA PORT 0 SANG TAT

ORG 0000H NHAN1: MOV P0,#11111110B

CALL DELAY100MS MOV P0,#11111111B CALL DELAY100MS JMP NHAN1

$INCLUDE(TV_DELAY.ASM)

END

CÁCH 2

;CHUONG TRINH DIEU KHIEN 1 LED CUA PORT 0 SANG TAT

ORG 0000H NHAN1: CLR P0.7 ;CLEAR BIT P0.7

CALL DELAY100MS SETB P0.7 ;SET BIT P0.7 CALL DELAY100MS

JMP NHAN1

$INCLUDE(TV_DELAY.ASM)

END

BÀI SỐ 6: CTDK 8 LED CỦA PORT0 SÁNG TẮT DẦN

Trang 14

LƯU ĐỒ ĐIỀU KHIỂN

BEGIN

TẮT 8 LED, DELAY

END

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 VIẾT CHƯƠNG TRÌNH DỮ LIỆU ĐIỀU KHIỂN CO CI SÁNG TẮT

1 1 1 1 1 1 1 1 0 8

1 ←1 1 1 1 1 1 1 0 ←0

1 ←1 1 1 1 1 1 0 0 ←0

1 ←1 1 1 1 1 0 0 0 ←0

1 ←1 1 1 1 0 0 0 0 ←0

1 ←1 1 1 0 0 0 0 0 ←0

1 ←1 1 0 0 0 0 0 0 ←0

1 ←1 0 0 0 0 0 0 0 ←0

0 ←0 0 0 0 0 0 0 0 ←0

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 1

Trang 15

0 0 0 0 0 1 1 1

0 0 0 0 1 1 1 1

0 0 0 1 1 1 1 1

0 0 1 1 1 1 1 1

0 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

0 0 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 1 C TRƯỚC KHI THỰC HIỆN 0 1 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 C SAU KHI THỰC HIỆN TẮT HẾT – HẾT SỐ 0

SÁNG HẾT – HẾT SỐ 1

LỆNG XOAY THANH GHI A SANG TRÁI “RLC A”

LỆNH LÀM CỜ C BẰNG 1 LÀ “SETB C”

LỆNH LÀM CỜ C BẰNG 1 LÀ “CLR C”

7 Lệnh xoay trái nội dung thanh ghi A :

 Cú pháp : RL A (rotate left)

 Mã lệnh :

0 0 1 0 0 0 1 1

 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 được xoay trái 1 bit minh họa như hình vẽ

A7

A6 A5 A4 A3 A2 A7 A0

C

Trang 16

Ví dụ :

Mov A,#1011 0011b ;

RL A ;lệnh thứ nhất Gía trị ban đầu của C ta không cần quan tâm đến kết quả sau khi xoay thì (A) = 0110 0111b và cờ (C) = 1 là do bit A7 bằng 1 chuyển sang

RL A ;lệnh thứ 2 Kết quả sau khi xoay thì (A) = 11001110b và cờ (C) = 0 là do bit A7 bằng 0 chuyển sang

8 Lệnh xoay trái nội dung thanh ghi A và bit carry :

 Cú pháp : RLC A

 Mã lệnh :

0 0 1 1 0 0 1 1

 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 trái 1 bit

Ví dụ 1: Giả sử cho cờ C = 0 trước khi thực hiện lệnh

Mov A ,#10110011b RLC A ;kết quả (A) = 01100110b và cờ (C) = 1

Ví dụ 2:

A7

A6 A5 A4 A3 A2 A7 A0

C

Trang 17

Setb c ;làm cờ C bằng 1 Mov A,#00000000b

RLC A ;kết quả (A) = 0000 0001b và cờ (C) = 0 Setb c ;làm cờ C bằng 1

RLC A ;kết quả (A) = 0000 0011b và cờ (C) = 0

Setb c ;làm cờ C bằng 1 RLC A ;kết quả (A) = 0111 1111b và cờ (C) = 0 Setb c ;làm cờ C bằng 1 (lần thứ 8) RLC A ;kết quả (A) = 1111 1111b và cờ (C) = 0

Setb c ;làm cờ C bằng 1 (lần thứ 9) RLC A ;kết quả (A) = 1111 1111b và cờ (C) = 1

;xxxx

clr c ;làm cờ C bằng 0 RLC A ;kết quả (A) = 1111 1110b và cờ (C) = 1

9 Lệnh xoay phải nội dung thanh ghi A :

 Cú pháp : RR A (rotate right)

 Mã lệnh :

0 0 0 0 0 0 1 1

 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 được xoay phải 1 bit 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

Trang 18

NHAN1: MOV P0,#11111111B ;8 LED TAT

CALL DELAY100MS MOV P0,#11111110B ;LED 0 SANG CALL DELAY100MS

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

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

Trang 19

JMP NHAN1

$INCLUDE(TV_DELAY.ASM)

END

CÁCH 2

LƯU ĐỒ

BEGIN

TẮT 8 LED

END

DELAY

DỊCH ‘0’ VÀO

HẾT ‘1’

S

Đ

DỊCH ‘1’ VÀO

DELAY

HẾT ‘0’

CHƯƠNG TRÌNH

ORG 0000H LB: MOV P0,#11111111B ;8 LED TAT

LB1: CALL DELAY100MS

CLR C ;XOA C DE DICH VAO MOV A,P0

RRC A ;XOAY CHI DUNG CHO TG A MOV P0,A

JC LB1 ;NHAY VE "LB1" NEU C = 1

;SANG HET - TAT DAN

MOV A,P0

Trang 20

RRC A ;XOAY CHI DUNG CHO TG A MOV P0,A

CALL DELAY100MS JNC LB2 ;NHAY VE "LB2" NEU C = 0 JMP LB

$INCLUDE(TV_DELAY.ASM)

END

GIẢI THÍCH CHƯƠNG TRÌNH

(H1) ;CHUONG TRINH DIEU KHIEN 8 LED CUA PORT 0 SANG TAT

KHÔNG CÓ CŨNG ĐƯỢC NHƯNG NẾU CÓ THÌ PHẢI BẮT ĐẦU BẰNG DẤU ;

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

HÌNH ẢNH LIÊN QUAN

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 - 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 (Trang 1)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w