BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN THÍ NGHIỆM u cầu Viết chương trình thực việc đọc liên tục trạng thái nút nhấn nối đến P1.0 hiển thị led nối chân P3.0 (bit thứ led 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 thực thi chương trình để kiểm tra kết thực - Kết thực hiện: Khi nhấn Switch nối với P1.0, đèn Port 1.0 3.0 sáng Thử giải thích có đến led bị tác động nhấn thả nút - Giải thích: Khi nhấn Switch nối với Port 1.0 Cathode LED nối với P1.0 nối Ground, Anode nối với VCC nên LED sáng LED nối với P3.0 sáng chương trình nạp vào vi xử lý Tổng kết xem bit port dùng thí nghiệm giải thích - Các bit từ đến port dùng cổng nhập xuất nhập bit tính từ bit đến BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN THÍ NGHIỆM Biên dịch thử nghiệm chương trình cho sẵn sau: ORG 2000H CPL P3.0 JMP MAIN MAIN: END Kiểm tra Biên dịch, thực thi kiểm tra hoạt động chương trình cách đo dạng sóng oscilloscope Câu hỏi Theo lý thuyết, dạng sóng tạo chân P3.0 nào? - Sóng tạo chân P3.0 sóng vng: BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN Vẽ dạng sóng đo oscilloscope so sánh với kết qua lý thuyết Tần số tối đa xung tuần hồn có chu kỳ nhiệm vụ 50% đạt bao nhiêu? - Lệnh JMP tốn 2Mcs, CPL tốn 1Mc => chu kỳ 6Mcs => f max=153,846 Khz( Với tần số thạch anh 11.059Mhz) BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN THÍ NGHIỆM Yêu cầu Viết chương trình tạo xung vng Khz, chu kỳ nhiệm vụ 50% 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 kiểm tra chương trình cách sử dụng oscilloscope để kiểm tra Câu hỏi Để tạo xung 1Khz, vòng trễ tạo Tính tốn xác dựa chương trình viết - Các vịng trễ tạo cách sử dụng câu lệnh lặp - Tính tốn: xung 1Khz có chu kỳ 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 lệnh DJNZ mt MCs= ì 12/11.0592= 2.17 às => Lặp lại 500/2.17 = 230 lần BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN Vẽ lại dạng sóng đo oscilloscope Sai số nhỏ đạt so với yêu cầu bao nhiêu? HD: Tính sai số dựa vào tần số thạch anh 11.0592 Mhz - Tính sai số nhỏ nhất: 2% BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN THÍ NGHIỆM Yêu cầu Viết chương trình Delay1sIns dùng chương trình để chớp/tắt LED đơn gắn vào P1.0 sau 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 kiểm tra chương trình cách quan sát LED đơn BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN Câu hỏi Thời gian 1s tạo nào? - Thời gian 1s tạo vòng lặp: Sử dụng vòng lặp lòng vào xấp xỉ 2×m×n×k chu kỳ máy( MCs) = 2×m×n×k µs Tìm m=8, n=250, k=250 THÍ NGHIỆM u cầu Viết chương trình tạo hiệu ứng quay LED: LED đơn BARLED1 sáng từ trái sang phải sau thời gian 1s lặp lại Sử dụng chương trình 1s viết 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 LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN Kiểm tra Biên dịch, thực thi kiểm tra chương trình cách quan sát hiệu ứng bar led Câu hỏi Led bên trái kết nối đến MSB (most significant bit) hay LSB (less significant bit) port 1? - Led bên trái kết nối đến MSB (most significant bit) port ... hỏi Để tạo xung 1Khz, vòng trễ tạo Tính tốn x? ?c dựa chương trình vi? ??t - Các vịng trễ tạo cách sử dụng câu lệnh lặp - Tính tốn: xung 1Khz có chu kỳ 1000 µs; nhiệm vụ 50% nên thời gian xung mức 1=... so sánh với kết qua lý thuyết Tần số tối đa xung tuần hồn có chu kỳ nhiệm vụ 50% đạt bao nhiêu? - Lệnh JMP tốn 2Mcs, CPL tốn 1Mc => chu kỳ 6Mcs => f max=153,846 Khz( Với tần số thạch anh 11.059Mhz)... Tỡm c m=8, n=250, k=250 TH NGHIM Yêu cầu Vi? ??t chương trình tạo hiệu ứng quay LED: LED đơn BARLED1 sáng từ trái sang phải sau thời gian 1s lặp lại Sử dụng chương trình 1s vi? ??t Chương trình: ORG 2000H
Trang 1Viế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: Khi nhấn Switch nối với Port 1.0 thì Cathode của LED nối với P1.0 được nối Ground, trong khi đó Anode được nối với VCC nên LED sáng LED nối với P3.0 sáng là
do chương trình trên đã được nạp vào vi xử lý
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
Trang 2THÍ NGHIỆM 2
Biên dịch và thử nghiệm chương trình cho sẵn sau:
MAIN:
CPL P3.0
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:
Trang 3Vẽ 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 => fmax=153,846 Khz( Với tần
số thạch anh là 11.059Mhz)
Trang 4THÍ 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
Trang 5Sai 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%
Trang 6Yê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
Trang 72×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
Trang 8Kiể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