MỤMỤC TIC TIÊUÊU:: Nắm đư Nắm được cácợc cách sử dụh sử dụng kit ng kit thí ngthí nghiệmhiệm, phần m, phần mềm lập tềm lập trình.rình.. Nắm đư Nắm được cácợc cách lập th lập trình gr
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
Giảng viên hướng dẫn:
Sinh viên thực hiện :
Nhóm 4 Nguyễn Công Sang 1914915
TP.HCM, Ngày 20 tháng 11 năm 2022
Trang 2BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
I
I MỤMỤC TIC TIÊUÊU::
Nắm đư Nắm được cácợc cách sử dụh sử dụng kit ng kit thí ngthí nghiệmhiệm, phần m, phần mềm lập tềm lập trình.rình
Nắm đư Nắm được cácợc cách lập th lập trình grình giao tiiao tiếp IO pếp IO port.ort
Nắm đư Nắm được cácợc cách lập th lập trình trình tạo thờạo thời gian i gian trễ dùtrễ dùng các lng các lệnh.ệnh
MOV P3.0, CSJMP
LAP END Kiểm tr
Kiểm traa
Biên dịch và thực thi chương trình để kiểm tra kết quả thực hiện
Trang 3Channel A: chân P1.0, Channel B: chân P3.0
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: Vì chân P1.0 cũng được nối đến một led trên led thanh BL204 nênngoài led được nối với chân P3.0 bị tác động khi nhấn/thả nút nhấn thì led nối chânP1.0 cũng bị tác động
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
Về nút nhấn: tất cả 8 nút nhấn kết nối với 8 bit trên Port 1 đều có thể sử dụng
Về led hiển thị: trừ
Về led hiển thị: trừ 2 led nối với chân P3.6 và chân P3.7 đều có thể sử dụng đ2 led nối với chân P3.6 và chân P3.7 đều có thể sử dụng để làmể làmled hiển thị (Khi sử dụng Port 1 và Port 3 vì chương trình được download xuốngRAM
RAM ngoài, do đó khi ngoài, do đó khi chạy chương tchạy chương trình vi xử lý làm việrình vi xử lý làm việc ở chế độ giao tiếp bộc ở chế độ giao tiếp bộnhớ ngoài Để giao tiếp bộ nhớ ngoài thì 2 tín hiện RD (P3.7) và WR (P3.6) được
sử dụng vì vậy chương trình không thể sử dụng 2 chân P3.6 và P3.7 như là chânI/O port)
Trang 4Viết chương trình con Delay1s.
Dùng chương trình con đã viết để chớp/tắt LED đơn gắn vào P1.0 saumỗi khoảng thời gian 1s
Thay đổi chương trình con để tần số chớp tắt bây giờ là 1KHz
Chương trình:
O
ORRGG 22000000HHLOOP: CPL P1.0
ACALLDelay1s SJMPLOOP
Delay1s:
MOV R5, #8L
LPP11:: MMOOV V RR66,,
##22550 0 LLPP22:: MMOOV V RR77,,
#250
DJNZ R7, $DJNZ R6, LP2DJNZ R5, LP1RET
ENENDD Kiểm tr Kiểm tra:a:
Biên dịch, thực thi và kiểm tra chương trình bằng cách quan sát LED đơn.Time/div = 0.25s, V/div = 1V cho Channel A: chân P1.0
Trang 5Câu hỏiCâu hỏi ::
Thời gian 1s được tạo ra như thế nào? Tính toán chính xác dựa trên chươngtrình đã viết
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
Sai số nhỏ nhất có thể đạt được so với yêu cầu là bao nhiêu?
T miminn = 3(m + 1)*k + 3 = 6753 MC = 6,753 ms
Khi tần số chớp tắt là 1Khz, cho biết hiện tượng trên LED?
LED chớp tắt nhanh hơn
Sinh viên thay đổi chương trình con như thế nào để được tần số chớp tắt là1KHz?
DELAY_0.5ms:
Trang 6MOV R7, #250DJNZ R7, $RET
SETB P1.1ACALLDELAY_300ms CLRP1.1
ACALLDELAY_700ms SJMPLOOP
DELAY_300ms:
MOV R5, #6L
LPP11:: MMOOV V RR66,,
##22000 0 LLPP22:: MMOOV V RR77,,
#250
DJNZ R7, $DJNZ R6, LP2DJNZ R5, LP1RET
DELAY_700ms:
Trang 7MOV R5, #14L
LPP33:: MMOOV V RR66,,
#200
Trang 8LPP44:: MMOOV V RR77, , ##225500
DJNZ R7, $DJNZ R6, LP4DJNZ R5, LP3RET
ENENDD Kiểm tr Kiểm tra:a:
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
Channel A: chân P1.0, Channel B: chân P3.0
Trang 9 Tại mỗi thời gian tạo trễ, các chân P1.0 và P1.1 xuất tín hiệu như thế nào?
Tại mỗi thời gian tạo trễ chân P1.1 đảo tín hiệu xuất ra 1 lầnSau tổng 2 thời gian tạo trễ 0.3s và 0.7s thì chân P1.0 đảo tín hiệu xuất ra 1 lần
Để tạo các xung thỏa yêu cầu bài toán, các vòng trễ được viết như thế nào?DELAY_300ms:
MOV R5, #6L
LPP11:: MMOOV V RR66,,
##22000 0 LLPP22:: MMOOV V RR77,,
#250
DJNZ R7, $DJNZ R6, LP2
DJNZ R5, LP1RET
DELAY_700ms:
MOV R5, #14L
Trang 10Delay1s đã viết ở trên.
Chương trình:
Trang 11ORG 2000HSTART: MOV A, #11111110BMOV R1,#8
LOOP:
MOV P1, ACLR CRLC ACALL Delay1sDJNZ R1, LOOP
SJMP STARTDelay1s:
MOV R5,#8
RR66,,##22550 0 LL22::
DJNZ R7, $DJNZ R6,DJNZ R6,L
L2 2 DDJJNNZZR5,L1 RETEN
ENDD Kiểm tr Kiểm tra:a:
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
Trang 12Câu hỏi:
Led ngoài cùng bên trái kết nối đến MSB (most significant bit) hay LSB (less
Trang 13significant bit) của port 1?
Led ngoài cùng bên trái kết nối đến LSB (less significant bit) của port 1
MAAIINN:: MMOOV V RR00, , ##99
CALLDISPLAYLED SJMPMAIN
DISPLAYLED:
MOV A, #0E0HADD A, R0MOV DPTR,
#0000H MOVX
@DPTR, A ACALLDELAY RET
D
DEELLAAYY:: MMOOV V RR77, , ##22L
L11:: MMOOV V RR66,,
#250
DJNZ R6, $
Trang 14DJNZ R7, L1
Trang 15RETEND Kiểm tr
MAAIINN:: MMOOV V RR00,,
#0E0H START:
Trang 16MOV A, R0
Trang 17MOV DPTR, #0000HMOVX @DPTR, AACALL DELAY1sINC R0
CJNE R0, #0EAH, STARTSJMP MAIN
MOV R7, #8L
L11:: MMOOV V RR66, , ##225500L
L22:: MMOOV V RR55,,
#250 DJNZR5, $ DJNZR6, L2 DJNZR7, L1 RETEND
Kiểm tr Kiểm tra:a:
Biên dịch, thực thi và kiểm tra chương trình
Trang 18Câu hỏi:
Vẽ lưu đồ giải thuật của chương trình
Vòng lặp nhảy theo thứ tự:
Nếu R0 sa Nếu R0 sau khi tănu khi tăng 1 g 1 nhỏ hơn nhỏ hơn hoặc bằng hoặc bằng 9, 9, nhảy đến vnhảy đến vị trí STAị trí START: gọi chưRT: gọi chươngơngtrình con xuất giá trị chứa trong R0 lên LED 0
Nếu R0 sau khi tăng bằng 10 (lớn h Nếu R0 sau khi tăng bằng 10 (lớn hơn 9), nhảy để ơn 9), nhảy để vị trí MAIvị trí MAIN: thực hiện xóa R0N: thực hiện xóa R0
về 0 và sau đó tiếp tục vòng lặp ở trên
MAAIINN:: MMOOV V RR00, , ##11
MOV R1, #33
CALLDISPLAYLED SJMPMAIN
DISPLAYLED:
CJNE R1, #0, KHAC0
Trang 19MOV A, #0E0HADD A, R0
Trang 20MOV DPTR,
#0000H MOVX
@DPTR, A ACALL
DELAY RETK
KHHAACC00:: CCJJNNE E RR11, , ##11, , KKHHAACC11
MOV A, #0D0HADD A, R0MOV DPTR,
#0000H MOVX
@DPTR, A ACALLDELAY RET
K
KHHAACC11:: CCJJNNE E RR11, , ##22, , KKHHAACC22
MOV A, #0B0HADD A, R0MOV DPTR,
#0000H MOVX
@DPTR, A ACALLDELAY RET
K
KHHAACC22:: CCJJNNE E RR11, , ##33, , KKTT
MOV A, #070HADD A, R0MOV DPTR, #0000HMOVX @DPTR, AACALL DELAYK
KTT:: RREETTDELAY:
Trang 21MOV R7, #8L
L11:: MMOOV V RR66, , ##225500L
L22:: MMOOV V RR55,,
#250 DJNZR5, $ DJNZR6, L2 DJNZR7, L1 RETEND
Kiểm tr Kiểm tra:a:
Biên dịch, thực thi và kiểm tra chương trình
Trang 22 Nắm được p Nắm được phương phhương pháp quét LEáp quét LED 7 đoD 7 đoạn.ạn.
Yêu cầu:
Viết chương trình hiển thị số 1 lên LED7 đoạn 0, sau đó 1s hiển thị số 2 lên LED 7đoạn 1, sau đó 1s hiển thị số 3 lên LED 7 đoạn 2, sau đó 1s hiển thị số 4 lên LED 7đoạn 3 Quá trình này lặp đi lặp lại Việc hiển thị này sử dụng chương trình conDisplayLED đã viết ở trên
Giảm thời gian trễ xuống còn 100 ms Quan sát hiện tượng
Tính toán thời gian trễ sao cho không còn thấy LED nhấp nháy và áp dụng vào chươngtrình
Giảm thời gian trễ xuống bằng 0 (không sử dụng hàm delay) Quan sát hiện tượng.Chương trình:
Trang 23ORG 2000HSTART: MOV R0, #1MOV R1, #0
LOOP: CALL DISPLAYLEDCALL DELAY
INCR0INC R1CALLDISPLAYLEDCALL DELAYINC
R0INC R1CALLDISPLAYLEDCALL DELAYINC
R0INC R1CALLDISPLAYLEDCALL DELAYINC
R0INC R1
Trang 24CJNE R1, #4, LOOPSJMP START
DISPLAYLED:
CJNE R1, #0, KHAC0MOV A, #0E0H
ADD A, R0MOV DPTR, #0000H
Trang 25MOVX @DPTR, AACALL DELAYRET
K
KHHAACC00:: CCJJNNE E RR11, , ##11, , KKHHAACC11
MOV A, #0D0HADD A, R0MOV DPTR,
#0000H MOVX
@DPTR, A ACALLDELAY RET
K
KHHAACC11:: CCJJNNE E RR11, , ##22, , KKHHAACC22
MOV A, #0B0HADD A, R0MOV DPTR,
#0000H MOVX
@DPTR, A ACALLDELAY RET
K
KHHAACC22:: CCJJNNE E RR11, , ##33, , KKTT
MOV A, #070HADD A, R0MOV DPTR, #0000HMOVX @DPTR, AACALL DELAYK
KTT:: RREETTDELAY:
MOV R7, #10
Trang 26LL:: MMOOV V RR66,,
#250 DJNZR6, $ DJNZ
R7, L RETEND
Kiểm tr Kiểm tra:a:
Biên dịch, thực thi và kiểm tra chương trình
Trang 27Khi giảm rất nhỏ thời gian trễ, Khi giảm rất nhỏ thời gian trễ, LED không còn sáng nữa Vì thời LED không còn sáng nữa Vì thời gian giữa mỗi lầngian giữa mỗi lầnhiển thị số lên LED rất
hiển thị số lên LED rất nhỏ làm nhỏ làm cho LED không đủ thcho LED không đủ thời gian để ời gian để làm sáng đèn nênlàm sáng đèn nên
ta không thấy LED sáng nữa