Tải bản đầy đủ (.pdf) (22 trang)

vi xử lý hệ thống bài thực hành vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (896.81 KB, 22 trang )



KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư



N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H
I

I


M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H



















Giáo trình thực hành vi xử lý. 56 Biên soạn: Phạm Quang Trí


MỘT SỐ ðIỂM CẦN CHÚ Ý
KHI KẾT NỐI MẠCH VÀ VIẾT CHƯƠNG TRÌNH


A. Khi kết nối mạch:


• Tên của từng port xuất nhập trên mô hình.
• Thứ tự các bit (từ LSB ñến MSB) tại các port xuất nhập trên mô hình.
• Khi kết nối phải ñảm bảo sao cho bit 0 của port vi ñiều khiển ñúng vị trí bit 0 của ñối tượng

cần ñiều khiển.
• Khi kết nối ñúng vị trí bit 0 thì các bit còn lại sẽ ñúng vị trí.
• Tất cả các chương trình mẫu trong hệ thống này ñều ñược kiểm tra rất kỹ theo ñúng như kết
nối mạch ñược trình bày.
• Nếu một yêu cầu nào ñó không ñúng thì hãy xem lại phần kết nối và chương trình.

B. Khi viết chương trình:


• Số 0 thường ñược ñánh nhầm là chữ O.
• Thường ñánh thiếu tiền tố # và hậu tố H ñi kèm trong một số trường hợp.
• Sau lệnh END thì không còn một hàng hay một ký tự nào (kể cả ký tự trắng) nếu không
chương trình biên dịch sẽ báo lỗi. Lỗi này có thể bỏ qua.
• Hãy dùng phím TAB ñể viết chương trình cho thẳng hàng. ðiều này rất có ích cho bạn khi
cần xem lại và kiểm tra lỗi chương trình ñược nhanh chóng.
• Hiện nay các phần mềm biên dịch ñều có hỗ trợ tính năng kiểm tra lỗi lập trình, nhưng việc
kiểm tra lỗi này chỉ dựa trên việc kiểm tra cú pháp (kiểm tra lỗi chính tả). Cho nên, có
trường hợp việc kiểm tra chương trình không thấy xuất hiện lỗi nhưng chương trình vẫn
không hoạt ñộng ñược là do phương pháp lập trình không chính xác. Vì vậy ñể chương trình
viết ra hoạt ñộng tốt thì ñòi hỏi: CÚ PHÁP phải ñúng và PHƯƠNG PHÁP phải ñúng
• Nếu nhập một chương trình nào ñó trong tài liệu mà chương trình chạy không ñúng như yêu
cầu thì hãy xem kỹ lại có ñánh ñầy ñủ tất cả các lệnh trong chương trình hay chưa? Có thiếu
sót gì không? Kết nối mạch có theo như hướng dẫn hay không? Tất cả các chương trình
trong tài liệu hướng dẫn ñã ñược chạy thử và luôn luôn ñúng.





ðỌC KỸ HƯỚNG DẪN SỬ DỤNG TRƯỚC KHI THỰC HÀNH











KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I



U
U


H
H
Ư
Ư


N
N
G
G


D
D


N
N


T
T
H
H
Í
Í



N
N
G
G
H
H
I
I


M
M


-
-


T
T
H
H


C
C



H
H
À
À
N
N
H
H

















A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Giáo trình thực hành vi xử lý. 58 Biên soạn: Phạm Quang Trí

A. MỤC ðÍCH:


• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi ñiều khiển và sử dụng mô
hình thí nghiệm ñể kiểm chứng.
• ðiều khiển thiết bị ngoại vi bằng các port của vi ñiều khiển.
• ðiều khiển việc hiển thị bằng cách sử dụng LED ñơn.
• Viết các chương trình con tạo thời gian trễ sử dụng trong các ứng dụng ñiều khiển.

B. YÊU CẦU:

• Nắm vững tập lệnh của vi ñiều khiển MCS-51.
• Biết cách viết các chương trình ñiều khiển LED ñơn ở các chế ñộ khác nhau.
• Nắm ñược sơ ñồ và nguyên lý hoạt ñộng của khối LED ñơn trên mô hình thí nghiệm.
• Nắm ñược nguyên lý ñiều khiển LED ñơn ở các chế ñộ khác nhau.
• Biết cách tính toán các thông số delay của Timer trong vi ñiều khiển.
• Biết cách viết các chương trình tạo thời gian trễ với các khoảng thời gian bất kỳ.



A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 1: Chương trình điều khiển 8 LED được nối với Port0 sáng tắt (có sử dụng bộ đệm đảo).
Giáo trình thực hành vi xử lý. 59 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J95 (INPUT 1) ở khối đệm dữ liệu.
• Dùng dây bus 8 nối J96 (OUTPUT 1) ở khối đệm dữ liệu với J12 (BAR LED 2) ở khối dãy LED.
• Dùng hai dây bus 3 nối J103 (POWER) ở khối dãy LED và J109 (POWER) ở khối đệm dữ liệu với nguồn
+5V ở khối nguồn.
ĐỆM - ĐẢO
DỮ LIỆU
LED DÃY

BAR LED 2 BAR LED 1POWER
NGUỒN
+5V
VI ĐIỀU KHIỂN
A0 A7
SELECT
CHIP
CLOCK
OUT
POWER
SW
8
3
8

1.2 Sơ đồ ngun lý của hệ thống:
D7
D0
D1
D2
D3
D4
D5
D6
AD7 AD7
AD0
D0AD0 AD0
AD1 AD1
AD2 AD2
AD3 AD3

AD4 AD4
AD5 AD5
AD6 AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D7
D6
D5
D4
D3
D2
D1
D0
D1
D2
D3
D4
D5
D6
D7
XTAL2
18
XTAL1
19
ALE

30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3

4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9

22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D1
R2
330
+5V
D2
R3

330
+5V
D3
R4
330
+5V
D4
R5
330
+5V
D5
R6
330
+5V
D6
R7
330
+5V
D7
R8
330
+5V
D8
R9
330
+5V
1B
1
2B
2

3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10

U2
ULN2803
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN LED ĐƠN
2
3
4
5
6
7
8
9
1
RP2
10K
+5V

A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN

Bài 1: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng tắt (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 60 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
DELAY500MS
CẤT TẠM GIÁ TRỊ CỦA R0 VÀO
STACK
NẠP GIÁ TRỊ VÒNG LẶP
(R0) = 100
DEL:
GIÃM SỐ LẦN LẶP
SỐ LẦN LẶP ≠ 0
(CHƯA LẶP XONG)
ð
S
LẤY LẠI GIÁ TRỊ CHO R0 TỪ
STACK
RET
KHỞI ðỘNG TIMER
(TIMER 0, MODE 1)
(TMOD) = 01H
NẠP GIÁ TRỊ CHO TIMER
(T
DELAY
= 20000.T
MÁY
)
(TH0/TL0) = -5000 = EC78H
CHƯA ðỦ THỜI GIAN
(TF0) = 0
ð

S
CHO TIMER HOẠT ðỘNG
(TR0) = 1
DỪNG TIMER
(TR0) = 0
XÓA CỜ TRÀN TIMER
(TF0) = 0
DELAY500MS:
ðIỀU KHIỂN LED TẮT
(P0) = 00000000B / 0 = TẮT
BEGIN
GỌI CTC TẠO TRỄ
DELAY500MS
ðIỀU KHIỂN LED SÁNG
(P0) = 11111111B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
CHOPTAT:
A1

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY500MS


MOV P0,#0FFH ;LED SANG
LCALL DELAY500MS

SJMP CHOPTAT ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H
RET


END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi ñiều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt ñộng.
1.7 Nạp chương trình vào vi ñiều khiển.
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 1: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng tắt (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 61 Biên soạn: Phạm Quang Trí
1.8 Sử dụng vi ñiều khiển vừa nạp gắn vào socket tương ứng trên khối vi ñiều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt ñộng, nếu kết quả hoạt ñộng không ñúng yêu
cầu của ñề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 ñến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port3 sáng tắt.
• Bài 2:
Hãy viết chương trình ñiều khiển 16 LED ñược nối với hai Port (Port0 và Port1) sáng tắt.
• Bài 3:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port0 sáng, 8 LED ñược nối với Port1 tắt rồi
sau ñó 8 LED ñược nối với Port0 tắt, 8 LED ñược nối với Port1 sáng.
• Bài 4:
Nếu muốn thay ñổi tốc ñộ sáng tắt nhanh hay chậm thì bạn phải làm gì? Thử thực hiện xem ?
• Bài 5:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 2: Chương trình ñiều khiển ñếm lên nhị phân 8 bit và hiển thị trên 8 LED ñược nối với Port0 (có sử dụng
bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 62 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:

1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED DEM LEN NHI PHAN
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H

MOV P0,#00H ;LED TAT
LCALL DELAY500MS
LAP:

INC P0 ;TANG NHI PHAN
LCALL DELAY500MS

SJMP LAP ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:


MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H

RET

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển ñếm lên nhị phân 8 bit và hiển thị trên 8 LED ñược nối với Port3.
• Bài 2:
Hãy viết chương trình ñiều khiển ñếm lên nhị phân 16 LED ñược nối với hai Port (Port0 và Port1).
• Bài 3:
Hãy viết chương trình ñiều khiển tương tự như hai bài tập 1 và 2 nhưng là ñếm xuống.
• Bài 4:
Nếu muốn thay ñổi tốc ñộ ñếm nhanh hay chậm thì bạn phải làm gì? Thử thực hiện xem ?

• Bài 5:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 3: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng dần và tắt hết (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 63 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
• Cách 1:

ðIỀU KHIỂN LED TẮT
(P0) = 0 / 0 = TẮT
BEGIN
GỌI CTC TẠO TRỄ
DELAY500MS
ðIỀU KHIỂN 1 LED SÁNG
(P0) = 00000001B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
A3.1
ðIỀU KHIỂN 2 LED SÁNG
(P0) = 00000011B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
ðIỀU KHIỂN 3 LED SÁNG
(P0) = 00000111B / 1 = SÁNG
GỌI CTC TẠO TRỄ

DELAY500MS
ðIỀU KHIỂN 4 LED SÁNG
(P0) = 00001111B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
ðIỀU KHIỂN 5 LED SÁNG
(P0) = 00011111B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
ðIỀU KHIỂN 6 LED SÁNG
(P0) = 00111111B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
ðIỀU KHIỂN 7 LED SÁNG
(P0) = 01111111B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
ðIỀU KHIỂN 8 LED SÁNG
(P0) = 11111111B / 1 = SÁNG
GỌI CTC TẠO TRỄ
DELAY500MS
MAIN:
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG DAN VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).

;***************************************************
ORG 00H
MAIN:

MOV P0,#00000000B ;HIEN THI 0 LED
LCALL DELAY500MS

MOV P0,#00000001B ;HIEN THI 1 LED
LCALL DELAY500MS

MOV P0,#00000011B ;HIEN THI 2 LED
LCALL DELAY500MS

MOV P0,#00000111B ;HIEN THI 3 LED
LCALL DELAY500MS

MOV P0,#00001111B ;HIEN THI 4 LED
LCALL DELAY500MS

MOV P0,#00011111B ;HIEN THI 5 LED
LCALL DELAY500MS

MOV P0,#00111111B ;HIEN THI 6 LED
LCALL DELAY500MS

MOV P0,#01111111B ;HIEN THI 7 LED
LCALL DELAY500MS

MOV P0,#11111111B ;HIEN THI 8 LED
LCALL DELAY500MS


SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 3: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng dần và tắt hết (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 64 Biên soạn: Phạm Quang Trí
JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H

RET

END

• Cách 2:
NẠP GIÁ TRỊ BIẾN LẶP
(R0) = 0
BEGIN
NẠP ðỊA CHỈ VÙNG DỮ LIỆU
(DPTR) = DATADISP
NẠP ðỊA CHỈ OFFSET
(A) = (R0)
LẤY DỮ LIỆU
(A) = (@A+DPTR)
A3.2
XUẤT DỮ LIỆU RA PORT
(P0) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
TĂNG BIẾN LẶP
(R0) = (R0) + 1
MAIN:
LOOP:
CHƯA ðỦ
(R0) ≠ 9
ð
S
VÙNG DỮ LIỆU DATADISP
00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************


;CHUONG TRINH DIEU KHIEN 8 LED SANG DAN VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:

MOV R0,#00H ;BIEN DEM SO TRANG THAI HIEN THI
MOV DPTR,#DATADISP ;NAP DIA CHI VUNG DU LIEU
LOOP:

MOV A,R0
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG NHO
MOV P0,A ;HIEN THI
LCALL DELAY500MS

INC R0 ;LAY DU LIEU KE TIEP
CJNE R0,#9,LOOP ;KIEM TRA SO DU TRANG THAI HIEN THI
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)


MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H

RET
;****************************************************
DATADISP: ;VUNG DU LIEU HIEN THI

DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
• Cách 3:
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 3: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng dần và tắt hết (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 65 Biên soạn: Phạm Quang Trí

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG DAN VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).

;***************************************************
ORG 00H
MAIN:

MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
LAP:

SETB C ;C=1
MOV P0,A ;HIEN THI
LCALL DELAY500MS

RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC LAP ;CHUA SANG HET THI LAM TIEP
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$


CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H
RET

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port3 sáng dần và tắt hết.
• Bài 2:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port2 sáng hết và tắt dần.
• Bài 3:
Hãy viết chương trình ñiều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port1 sáng dần và tắt dần.
• Bài 5:
Hãy viết chương trình ñiều khiển 16 LED ñược nối với hai Port (Port2 và Port3) sáng dần và tắt dần.
• Bài 6:
Hãy viết chương trình ñiều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 4: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng ñuổi (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 66 Biên soạn: Phạm Quang Trí

1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
• Cách 1:

NẠP GIÁ TRỊ BIẾN LẶP
(R0) = 0
BEGIN
NẠP ðỊA CHỈ VÙNG DỮ LIỆU
(DPTR) = DATADISP
NẠP ðỊA CHỈ OFFSET
(A) = (R0)
LẤY DỮ LIỆU
(A) = (@A+DPTR)
A4.1
XUẤT DỮ LIỆU RA PORT
(P0) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
TĂNG BIẾN LẶP
(R0) = (R0) + 1
MAIN:
LOOP:
ð
S
VÙNG DỮ LIỆU DATADISP
01H,02H,04H,08H,10H,20H,40H,80H

CHƯA ðỦ
(R0) ≠ 8
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG DUOI
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:

MOV R0,#00H ;BIEN DEM SO TRANG THAI HIEN THI
MOV DPTR,#DATADISP ;NAP DIA CHI VUNG DU LIEU
LOOP:

MOV A,R0

MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG NHO
MOV P0,A ;HIEN THI
LCALL DELAY500MS

INC R0 ;LAY DU LIEU KE TIEP
CJNE R0,#8,LOOP ;KIEM TRA SO DU TRANG THAI HIEN THI
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H


MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H

RET
;****************************************************
DATADISP: ;VUNG DU LIEU HIEN THI
DB 01H,02H,04H,08H,10H,20H,40H,80H

END
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 4: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng ñuổi (có sử dụng bộ ñệm ñảo).

Giáo trình thực hành vi xử lý. 67 Biên soạn: Phạm Quang Trí
• Cách 2:

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG DUOI
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:

MOV A,#01H ;KHOI DONG GIA TRI BAN DAU
LAP:

MOV P0,A ;HIEN THI
LCALL DELAY500MS

RL A ;DICH BIT 1 SANG TRAI
SJMP LAP ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)


MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H

RET

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port3 sáng ñuổi.
• Bài 2:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port1 tắt ñuổi.
• Bài 3:
Hãy viết chương trình ñiều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4:
Hãy viết chương trình ñiều khiển 16 LED ñược nối với hai Port (Port0 và Port1) sáng ñuổi.
• Bài 5:
Hãy viết chương trình ñiều khiển 16 LED ñược nối với hai Port (Port2 và Port3) tắt ñuổi.

• Bài 6:
Hãy viết chương trình ñiều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 5: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng dồn (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 68 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
• Cách 1:

NẠP GIÁ TRỊ BIẾN LẶP
(R0) = 0
BEGIN
NẠP ðỊA CHỈ VÙNG DỮ LIỆU
(DPTR) = DATADISP
NẠP ðỊA CHỈ OFFSET
(A) = (R0)
LẤY DỮ LIỆU
(A) = (@A+DPTR)
A5.1
XUẤT DỮ LIỆU RA PORT
(P0) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS

TĂNG BIẾN LẶP
(R0) = (R0) + 1
MAIN:
LOOP:
ð
S
VÙNG DỮ LIỆU DATADISP
01H,02H,04H,08H,10H,20H,40H,80H
81H,82H,84H,88H,90H,0A0H,0C0H
0C1H,0C2H,0C4H,0C8H,0D0H,0E0H
0E1H,0E2H,0E4H,0E8H,0F0H
0F1H,0F2H,0F4H,0F8H
0F9H,0FAH,0FCH
0FDH,0FEH
0FFH
CHƯA ðỦ
(R0) ≠ 36
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG DON VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:

MOV R0,#00H ;BIEN DEM SO TRANG THAI HIEN THI

MOV DPTR,#DATADISP ;NAP DIA CHI VUNG DU LIEU
LOOP:

MOV A,R0

MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG NHO
MOV P0,A ;HIEN THI
LCALL DELAY500MS

INC R0 ;LAY DU LIEU KE TIEP
CJNE R0,#36,LOOP ;KIEM TRA SO DU TRANG THAI HIEN THI
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0


CLR TF0
DJNZ R0,LOOP2
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 5: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng dồn (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 69 Biên soạn: Phạm Quang Trí
POP 00H

RET
;****************************************************
DATADISP: ;VUNG DU LIEU HIEN THI

DB 01H,02H,04H,08H,10H,20H,40H,80H

DB 81H,82H,84H,88H,90H,0A0H,0C0H

DB 0C1H,0C2H,0C4H,0C8H,0D0H,0E0H

DB 0E1H,0E2H,0E4H,0E8H,0F0H

DB 0F1H,0F2H,0F4H,0F8H

DB 0F9H,0FAH,0FCH

DB 0FDH,0FEH

DB 0FFH

END


• Cách 2:

NẠP SỐ LẦN DỊCH BIT
(R0) = 08H
BEGIN
TRẠNG THÁI DÃY LED Ở LẦN
DỒN ðẦU TIÊN
(R1) = 00000000B / 0 = TẮT
A5.2
MAIN:
LAP2:
NẠP SỐ LẦN PHẢI DỊCH BIT
(R2) = (R0)
NẠP TRẠNG THÁI DỊCH BIT
ðẦU TIÊN
(R3) = 000000001B / 1 = SÁNG
LAP1:
NẠP TRẠNG THÁI DỊCH BIT
(A) = (R3)
KẾT HỢP TRẠNG THÁI DÃY
LED VÀ TRẠNG THÁI DỊCH BIT
HIỆN TẠI
(A) = (R3) + (R1)
XUẤT DỮ LIỆU RA PORT
(P0) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
DỊCH TRÁI (R3)
RL A / SÁNG ðUỔI
GIÃM SỐ LẦN DỊCH BIT (R2)

SỐ LẦN DỊCH BIT ≠ 0
(CHƯA DỊCH BIT XONG)
ð
S
GIÃM SỐ LẦN PHẢI DỊCH BIT
(R0) = (R0) - 1
THAY ðỔI TRẠNG THÁI DÃY
LED CHO LẦN DỒN KẾ TIẾP
(DỊCH PHẢI BIT 1 VÀO R1)
SỐ LẦN PHẢI DỊCH ≠ 0
(CHƯA ðỦ 8 LẦN)
ð
S
ðIỀU KHIỂN TẮT CÁC LED
(P0) = 00H / 0 = TẮT
GỌI CTC TẠO TRỄ
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG DON VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:

MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN

LAP2:
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 5: Chương trình ñiều khiển 8 LED ñược nối với Port0 sáng dồn (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 70 Biên soạn: Phạm Quang Trí
MOV R2,00H

MOV R3,#01H
LAP1:

MOV A,R3

ORL A,R1

MOV P0,A ;HIEN THI
ACALL DELAY500MS

MOV A,R3 ;DON LED
RL A

MOV R3,A

DJNZ R2,LAP1 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1

RRC A

MOV R1,A


CJNE R0,#00H,LAP2 ;CHUA HOAN TAT CHU TRINH? QUAY LAI
MOV P0,#00H ;HIEN THI TAT HET
ACALL DELAY500MS

SJMP MAIN ;QUAY LAI TU DAU KHI DA XONG
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H


RET

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port3 sáng dồn.
• Bài 2:
Hãy viết chương trình ñiều khiển 8 LED ñược nối với Port2 tắt dồn.
• Bài 3:
Hãy viết chương trình ñiều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4:
Hãy viết chương trình ñiều khiển 16 LED ñược nối với hai Port (Port1 và Port3) sáng dồn.
• Bài 5:
Hãy viết chương trình ñiều khiển 16 LED ñược nối với hai Port (Port2 và Port0) tắt dồn.
• Bài 6:
Hãy viết chương trình ñiều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 6: Chương trình ñiều khiển 8 LED ñược nối với Port0 hoạt ñộng bằng cách tổng hợp các phương pháp ñiều
khiển ñã thực tập (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 71 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.


A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 6: Chương trình ñiều khiển 8 LED ñược nối với Port0 hoạt ñộng bằng cách tổng hợp các phương pháp ñiều
khiển ñã thực tập (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 72 Biên soạn: Phạm Quang Trí
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED HOAT DONG TONG HOP
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:

ACALL CHOPTAT

ACALL DEMLEN

ACALL SANGDUOI

ACALL SANGDAN

ACALL SANGDON

SJMP MAIN
;****************************************************
CHOPTAT: ;CTC SANG TAT
MOV R7,#5 ;SO LAN THUC HIEN
SOLAN1:

MOV P0,#00H ;LED TAT

LCALL DELAY500MS

MOV P0,#0FFH ;LED SANG
LCALL DELAY500MS

DJNZ R7,SOLAN1 ;GIAM SO LAN THUC HIEN BAI
RET ;QUAY LAI
;****************************************************
DEMLEN: ;CTC DEM LEN NHI PHAN
MOV R7,#2 ;SO LAN THUC HIEN
SOLAN2:

MOV P0,#00H ;LED TAT
LCALL DELAY500MS
LAP1:

INC P0 ;TANG NHI PHAN
LCALL DELAY500MS

MOV A,P0

CJNE A,#00H,LAP1

DJNZ R7,SOLAN2 ;GIAM SO LAN THUC HIEN BAI
RET ;QUAY LAI
;****************************************************
SANGDUOI: ;CTC SANG DUOI
MOV R7,#5 ;SO LAN THUC HIEN
SOLAN3:


MOV A,#01H ;KHOI DONG GIA TRI BAN DAU
CLR C
LAP2:

MOV P0,A ;HIEN THI
LCALL DELAY500MS

RLC A ;DICH BIT 1 SANG TRAI
JNC LAP2 ;QUAY LAI
DJNZ R7,SOLAN3 ;GIAM SO LAN THUC HIEN BAI
RET
;****************************************************
SANGDAN: ;CTC SANG DAN
MOV R7,#5 ;SO LAN THUC HIEN
SOLAN4:

MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
LAP3:

SETB C ;C=1
MOV P0,A ;HIEN THI
LCALL DELAY500MS

RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC LAP3 ;CHUA SANG HET THI LAM TIEP
DJNZ R7,SOLAN4 ;GIAM SO LAN THUC HIEN BAI
RET ;QUAY LAI
;****************************************************
SANGDON: ;CTC SANG DON
MOV R7,#3 ;SO LAN THUC HIEN

SOLAN5:
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN
LAP4:
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 6: Chương trình ñiều khiển 8 LED ñược nối với Port0 hoạt ñộng bằng cách tổng hợp các phương pháp ñiều
khiển ñã thực tập (có sử dụng bộ ñệm ñảo).
Giáo trình thực hành vi xử lý. 73 Biên soạn: Phạm Quang Trí
MOV R2,00H

MOV R3,#01H
LAP5:

MOV A,R3

ORL A,R1

MOV P0,A ;HIEN THI
ACALL DELAY500MS

MOV A,R3 ;DON LED
RL A

MOV R3,A

DJNZ R2,LAP5 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1


RRC A

MOV R1,A

CJNE R0,#00H,LAP4 ;CHUA HOAN TAT CHU TRINH? QUAY LAI
MOV P0,#00H ;HIEN THI TAT HET
ACALL DELAY500MS

DJNZ R7,SOLAN5 ;GIAM SO LAN THUC HIEN BAI
RET
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0


DJNZ R0,LOOP2

POP 00H

RET

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển sao cho phần sáng tắt của chương trình ví dụ trên ñược thực hiện
10 lần (các phần khác không thay ñổi).
• Bài 2:
Hãy viết chương trình ñiều khiển sao cho phần ñếm lên nhị phân chương trình ví dụ trên ñược thực
hiện 10 lần (các phần khác không thay ñổi).
• Bài 3:
Hãy viết chương trình ñiều khiển sao cho phần sáng dần và tắt dần của chương trình ví dụ trên ñược
thực hiện 10 lần (các phần khác không thay ñổi).
• Bài 4:
Hãy viết chương trình ñiều khiển sao cho phần sáng ñuổi của chương trình ví dụ trên ñược thực hiện
10 lần (các phần khác không thay ñổi).
• Bài 5:
Hãy viết chương trình ñiều khiển sao cho phần sáng dồn của chương trình ví dụ trên ñược thực hiện
10 lần (các phần khác không thay ñổi).
• Bài 6:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 7: Chương trình con ñiều khiển tạo thời gian trễ 200

µ
µµ
µ
s, 20ms, 2s sử dụng Timer.
Giáo trình thực hành vi xử lý. 74 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
• Ứng dụng chương trình tạo thời gian trễ 200
µ
µµ
µ
s:
DELAY200US
A7.1
CẤT TẠM GIÁ TRỊ CỦA R0, R1
VÀO STACK
NẠP GIÁ TRỊ VÒNG LẶP 1
(R0) = 20
NẠP GIÁ TRỊ VÒNG LẶP 2
(R1) = 10
DEL:
GIÃM SỐ LẦN LẶP 2
SỐ LẦN LẶP 2 ≠ 0
(CHƯA LẶP XONG)
ð
S

GIÃM SỐ LẦN LẶP 1
SỐ LẦN LẶP 1 ≠ 0
(CHƯA LẶP XONG)
ð
S
LẤY LẠI GIÁ TRỊ CHO R0, R1 TỪ
STACK
RET
DELAY200US:

;***************************************************

;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY200US

MOV P0,#0FFH ;LED SANG
LCALL DELAY200US

SJMP CHOPTAT ;QUAY LAI
;***************************************************

;CHUONG TRINH CON TAO THOI GIAN TRE
;***************************************************
;TIME DELAY: 200US

;***************************************************
;TUONG DOI: TIME = [R0]*[R1]*2T
;CHINH XAC: TIME = 2T+2T+1T+(1T+2T*[R1]+2T)*[R0]+2T+2T+2T
; VOI T LA CHU KY MAY
;***************************************************
DELAY200US:

PUSH 00H

PUSH 01H

MOV R0,#10
DEL:

MOV R1,#10

DJNZ R1,$

DJNZ R0,DEL

POP 01H

POP 00H

RET
END
• Ứng dụng chương trình tạo thời gian trễ 20ms:
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 7: Chương trình con ñiều khiển tạo thời gian trễ 200
µ

µµ
µ
s, 20ms, 2s sử dụng Timer.
Giáo trình thực hành vi xử lý. 75 Biên soạn: Phạm Quang Trí
DELAY20MS
A7.2
KHỞI ðỘNG TIMER
(TIMER 0, MODE 1)
(TMOD) = 01H
NẠP GIÁ TRỊ CHO TIMER
(T
DELAY
= 20000.T
MÁY
)
(TH0/TL0) = -20000 = B1E0H
CHƯA ðỦ THỜI GIAN
(TF0) = 0
ð
S
RET
CHO TIMER HOẠT ðỘNG
(TR0) = 1
DỪNG TIMER
(TR0) = 0
XÓA CỜ TRÀN TIMER
(TF0) = 0
DELAY20MS:

;***************************************************


;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY20MS

MOV P0,#0FFH ;LED SANG
LCALL DELAY20MS

SJMP CHOPTAT ;QUAY LAI
;***************************************************

;CHUONG TRINH CON TAO THOI GIAN TRE
;***************************************************
;TIME DELAY: 20MS
;***************************************************
;TUONG DOI: TIME = (|TH0,TL0|)*T
;CHINH XAC: TIME = 2T+2T+2T+1T+(|TH0,TL0|)*T+1T+1T++2T
; VOI T LA CHU KY MAY
;***************************************************
DELAY20MS:

MOV TMOD,#01H

MOV TH0,#HIGH(-20000)


MOV TL0,#LOW(-20000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

RET
END
• Ứng dụng chương trình tạo thời gian trễ 2s:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY2S

MOV P0,#0FFH ;LED SANG
LCALL DELAY2S

SJMP CHOPTAT ;QUAY LAI
;***************************************************
;CHUONG TRINH CON TAO THOI GIAN TRE
;***************************************************

;TIME DELAY: 2S
;***************************************************
A. HỆ THỐNG ðIỀU KHIỂN LED ðƠN
Bài 7: Chương trình con ñiều khiển tạo thời gian trễ 200
µ
µµ
µ
s, 20ms, 2s sử dụng Timer.
Giáo trình thực hành vi xử lý. 76 Biên soạn: Phạm Quang Trí
;TUONG DOI: TIME = (|TH0,TL0|)*[R0]*T
;CHINH XAC: TIME = 2T+1T+2T+(2T+2T+1T+(|TH0,TL0|)*T+1T+1T+2T)*[R0]+2T+2T
; VOI T LA CHU KY MAY
;***************************************************
DELAY2S:

PUSH 00H

MOV R0,#200

MOV TMOD,#01H
DEL:

MOV TH0,#HIGH(-10000)

MOV TL0,#LOW(-10000)

SETB TR0

JNB TF0,$


CLR TR0

CLR TF0

DJNZ R0,DEL

POP 00H

RET
END
DELAY2S
A7.3
CẤT TẠM GIÁ TRỊ CỦA R0 VÀO
STACK
NẠP GIÁ TRỊ VÒNG LẶP
(R0) = 200
DEL:
GIÃM SỐ LẦN LẶP
SỐ LẦN LẶP ≠ 0
(CHƯA LẶP XONG)
ð
S
LẤY LẠI GIÁ TRỊ CHO R0 TỪ
STACK
RET
KHỞI ðỘNG TIMER
(TIMER 0, MODE 1)
(TMOD) = 01H
NẠP GIÁ TRỊ CHO TIMER
(T

DELAY
= 10000.T
MÁY
)
(TH0/TL0) = -10000 = D8F0H
CHƯA ðỦ THỜI GIAN
(TF0) = 0
ð
S
CHO TIMER HOẠT ðỘNG
(TR0) = 1
DỪNG TIMER
(TR0) = 0
XÓA CỜ TRÀN TIMER
(TF0) = 0
DELAY2S:

1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình con ñiều khiển tạo thời gian trễ 250µs sử dụng Timer.
• Bài 2:
Hãy viết chương trình con ñiều khiển tạo thời gian trễ 1ms sử dụng Timer.
• Bài 3:
Hãy viết chương trình con ñiều khiển tạo thời gian trễ 100ms sử dụng Timer.
• Bài 4:
Hãy viết chương trình con ñiều khiển tạo thời gian trễ 1s sử dụng Timer.
• Bài 5:
Hãy viết chương trình con ñiều khiển tạo thời gian trễ 3s sử dụng Timer.
• Bài 6:

Hãy viết chương trình con ñiều khiển tạo thời gian trễ 10s sử dụng Timer.
• Bài 7:
Hãy viết chương trình con ñiều khiển tạo thời gian trễ 1 phút sử dụng Timer.
• Bài 8:
Hãy viết chương trình con ñiều khiển tạo thời gian trễ 1 giờ sử dụng Timer.
• Bài 9:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

×