You are on page 1of 8

BÀI TN 1

LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

THÍ NGHIỆM 1

Yêu cầu

Viết chương trình thực hiện việc đọc liên tục trạng thái của nút nhấn được nối đến P1.0 và hiển
thị ra led được nối tại chân P3.0 (bit thứ 0 của led thanh BL202).

Chương trình:

ORG 2000H

LAP: MOV C, P1.0

MOV P3.0, C

SJMP LAP

END

Kiểm tra

Biên dịch và thực thi chương trình để kiểm tra kết quả thực hiện.

- Kết quả thực hiện: Khi nhấn Switch nối với P1.0, đèn của Port 1.0 và 3.0 đều sáng.

Thử giải thích tại sao có đến 2 led cùng bị tác động khi nhấn hoặc thả nút.

- Giải thích: LED nối với P3.0 sáng là do code được nạp từ chương trình , còn LED tại
P1.0 sáng là do 2 đầu đều được nối : đầu (-) nối đất , đầu (+) nối với VCC.

Tổng kết xem các bit nào của 2 port có thể được dùng trong thí nghiệm trên và giải thích tại
sao.

- Các bit từ 0 đến 7 của 2 port có thể được dùng vì đây là các cổng nhập xuất nhập 8 bit
tính từ bit 0 đến 7.
BÀI TN 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

THÍ NGHIỆM 2

Biên dịch và thử nghiệm chương trình cho sẵn sau:

ORG 2000H

MAIN:

CPL P3.0

JMP MAIN

END

Kiểm tra

Biên dịch, thực thi và kiểm tra hoạt động của chương trình bằng cách đo dạng sóng trên
oscilloscope.

Câu hỏi

Theo lý thuyết, dạng sóng tạo ra trên chân P3.0 sẽ như thế nào?

- Sóng tạo ra trên chân P3.0 sẽ là sóng vuông:


BÀI TN 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

Vẽ dạng sóng đo được trên oscilloscope và so sánh với kết qua lý thuyết.

Tần số tối đa một xung tuần hoàn có chu kỳ nhiệm vụ 50% có thể đạt được là bao nhiêu?

- Lệnh JMP tốn 2Mcs, CPL tốn 1Mc => 1 chu kỳ mất 6Mcs => f max=153,846 Khz( Với tần
số thạch anh là 11.059Mhz)
BÀI TN 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

THÍ NGHIỆM 3

Yêu cầu

Viết chương trình tạo xung vuông 1 Khz, chu kỳ nhiệm vụ 50% trên P3.0

Chương trình:

ORG 2000H

LAP: CPL P3.0

MOV R7, #230

DJNZ R7, $

SJMP LAP

END

Kiểm tra

Biên dịch, thực thi và kiểm tra chương trình bằng cách sử dụng oscilloscope để kiểm tra.

Câu hỏi

Để tạo xung 1Khz, các vòng trễ tạo ra như thế nào. Tính toán chính xác dựa trên chương
trình đã viết

- Các vòng trễ được tạo ra bằng cách sử dụng câu lệnh lặp.

- Tính toán: xung 1Khz có chu kỳ là 1000 µs; nhiệm vụ 50% nên thời gian xung ở mức 1=
thời gian ở mức 0= 500 µs. Sử dụng một lệnh DJNZ mất 2 MCs= 2 × 12/11.0592= 2.17
µs => Lặp lại 500/2.17 = 230 lần.
BÀI TN 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

Vẽ lại dạng sóng đo được trên oscilloscope

Sai số nhỏ nhất có thể đạt được so với yêu cầu là bao nhiêu?

HD: Tính sai số dựa vào tần số thạch anh là 11.0592 Mhz.

- Tính sai số nhỏ nhất: 2%


BÀI TN 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

THÍ NGHIỆM 4

Yêu cầu

Viết chương trình con Delay1sIns và dùng chương trình con này để chớp/tắt LED đơn gắn
vào P1.0 sau mỗi khoảng thời gian 1s.

Chương trình:

ORG 2000H

LAP: CPL P1.0

LCALL Delay1sIns

SJMP LAP

Delay1sIns:

MOV R5,#8

L1: MOV R6,#250

L2: MOV R7,#250

DJNZ R7, $

DJNZ R6, L2

DJNZ R5,L1

RET

END

Kiểm tra

Biên dịch, thực thi và kiểm tra chương trình bằng cách quan sát LED đơn.
BÀI TN 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

Câu hỏi

Thời gian 1s được tạo ra như thế nào?

- Thời gian 1s được tạo ra bởi vòng lặp: Sử dụng 3 vòng lặp lòng vào nhau mất xấp xỉ
2×m×n×k chu kỳ máy( MCs) = 2×m×n×k µs. Tìm được m=8, n=250, k=250.

THÍ NGHIỆM 5

Yêu cầu

Viết chương trình tạo hiệu ứng quay LED: các LED đơn trên BARLED1 sáng lần lượt từ trái
sang phải sau thời gian 1s và lặp lại. Sử dụng chương trình con 1s đã viết ở trên.

Chương trình:

ORG 2000H
MOV A, #01111111b
LAP: MOV P1, A
LCALL Delay1sIns
RR A
SJMP LAP
Delay1sIns:
MOV R5,#8
L1: MOV R6,#250
L2: MOV R7,#250
DJNZ R7, $
DJNZ R6, L2
DJNZ R5,L1
RET
END
BÀI TN 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

Kiểm tra

Biên dịch, thực thi và kiểm tra chương trình bằng cách quan sát hiệu ứng trên bar led.

Câu hỏi

Led ngoài cùng bên trái kết nối đến MSB (most significant bit) hay LSB (less significant bit)
của port 1?

- Led ngoài cùng bên trái kết nối đến MSB (most significant bit) của port 1.

You might also like