BÀI TN HIỂN THỊ LED ĐOẠN THÍ NGHIỆM Viết chương trình DisplayLed0 hiển thị lên LED đoạn số giá trị chứa ghi R0 Viết chương trình hiển thị số lên LED đoạn số cách cho R0 gọi chương trình DisplayLed0 Code1: DisplayLed0: MOV A,#0E0H ADD A, R0 MOV DPTR, #0000H MOVX @DPTR,A RET Code2: ORG 2000H MAIN: MOV R0,#9 LCALL DisplayLed0 DisplayLed0: MOV A,#0E0H ADD A, R0 MOV DPTR, #0000H MOVX @DPTR,A RET END BÀI TN HIỂN THỊ LED ĐOẠN THÍ NGHIỆM Yêu cầu Viết chương trình hiển thị lên LED đoạn số số từ đến sau khoảng thời gian 1s Code: ORG 2000H MAIN: MOV R0,#0 LOOP: LCALL DisplayLed0 LCALL Delay1s INC R0 CJNE R0,#10,LOOP SJMP MAIN DisplayLed0: MOV A,#0E0H ADD A, R0 MOV DPTR, #0000H MOVX @DPTR,A RET Delay1s: MOV R7,#8 LAP2: MOV R6,#240 LAP1: MOV R5,#240 DJNZ R5, $ DJNZ R6, LAP1 DJNZ R7, LAP2 RET END THÍ NGHIỆM BÀI TN HIỂN THỊ LED ĐOẠN Yêu cầu Viết chương trình DisplayLED xuất giá trị chứa ghi R0 lên LED đoạn có số thứ tự chứa ghi R1 R0 nằm tầm từ 0-9 R1 tầm từ 0-3 Sau dùng chương trình viết chương trình xuất giá trị lên LED đoạn số Viết chương trình con: Cách 1: DisplayLED: MOV DPTR,#TABLE MOV A,R1 MOVC A,@A+DPTR ADD A,R0 MOV DPTR, #0000H MOVX @DPTR, A RET TABLE: DB 0E0H, 0D0H, 0B0H,70H Cách 2: DisplayLED: MOV B, R1; Đưa nội dung R1 vào B INC B; Tăng giá trị B lên MOV A, #11110111B SHIFTLOOP: RL A ; Xoay trái A ;bit số 0, bốn bit cao BÀI TN HIỂN THỊ LED ĐOẠN DJNZ B,SHIFTLOOP ; Giảm B 1, khác quay lại nhãn SHIFTLOOP ANL A, PUSH ACC; Cất Acc vào StackPointer MOV A, R0; Đưa nội dung R0 vào A ANL A, #0FH; Giữ lại bit thấp A MOV R0, A; Đua nội dung A vào R0 POP ACC ;Lấy lại A từ StackPointer ORL A, #0F0H ; Nếu B giảm đến giữ lại bit cao A R0; Cộng A với R0, lưu vào A RET CHƯƠNG TRÌNH CHÍNH: ORG 0000H MOV R1,#3 MOV R0,#1 LCALL DisplayLED SJMP $ DisplayLED: MOV DPTR, #0000H MOVX @DPTR, A RET END Câu hỏi Giải thích ý nghĩa lệnh đoạn chương trình hướng dẫn THÍ NGHIỆM Yêu cầu BÀI TN HIỂN THỊ LED ĐOẠN Viết chương trình hiển thị số lên LED7 đoạn 0, sau 1s hiển thị số lên LED đoạn 1, sau 1s hiển thị số lên LED đoạn 2, sau 1s hiển thị số lên LED đoạn Quá trình lặp lặp lại Việc hiển thị sử dụng chương trình DisplayLED viết Giảm thời gian trễ xuống 100 ms Quan sát tượng Tính tốn thời gian trễ cho khơng thấy LED nhấp nháy áp dụng vào chương trình Giảm thời gian trễ xuống (khơng sử dụng hàm delay) Quan sát tượng Kiểm tra CODE: ORG 0000H MAIN: MOV R1,#0 MOV R0,#1 LOOP: LCALL DisplayLED LCALL Delay1s INC R1 INC R0 CJNE R1,#4,LOOP SJMP MAIN DisplayLED: MOV DPTR,#TABLE MOV A,R1 BÀI TN HIỂN THỊ LED ĐOẠN MOVC A,@A+DPTR ADD A,R0 MOVX @DPTR, A RET Delay1s: MOV R7,#8 LAP2: MOV R6,#240 LAP1: MOV R5,#240 DJNZ R5, $ DJNZ R6, LAP1 DJNZ R7, LAP2 RET TABLE: DB 0E0H, 0D0H, 0B0H,70H END Câu hỏi Thời gian trễ để khơng cịn thấy LED nhấp nháy theo lý thuyết? Giải thích cách tính - Cách tính: Với tần số thạch anh sử dụng 11.0592 MHz , ta có: MC= 12/ 11.0592 MHz= 1.085 µs Xét sơ đồ sau: BÀI TN HIỂN THỊ LED ĐOẠN LED T LED T LED T LED T Ta thấy, khoảng cách lần LED X sáng/tắt 4T Mà theo lý thuyết, số lần LED sáng tắt lớn 24 lần giây mắt người coi LED sáng liên tục Suy ra, thời gian trễ lớn cần tìm là: 1s=24*4T T= 10 416 µs= 9600 MCs Khi giảm nhỏ thời gian trễ, tượng xảy gì? Giải thích - Hiện tượng: Khơng thấy LED đoạn sáng - Giải thích: Tần số chớp tắt q nhanh, mắt người khơng nhìn Bài tập thêm: Hiển thị LED từ đến 9999: CODE: ORG 0000H MAIN: BÀI TN HIỂN THỊ LED ĐOẠN MOV 00H,#0 ;GTLED0 MOV 01H,#0 ;GTLED1 MOV 02H,#0 ;GTLED2 MOV 03H,#0 ;GTLED3 BACK: MOV R4,#0 ; CHON LED ;CHON R5 LAM BIEN TRUNG GIAN MOV R5, 00H LCALL DisplayLED LCALL Delay INC R4 MOV R5, 01H LCALL DisplayLED LCALL Delay INC R4 MOV R5, 02H LCALL DisplayLED LCALL Delay INC R4 MOV R5, 03H LCALL DisplayLED LCALL Delay LCALL GIATRI SJMP BACK BÀI TN HIỂN THỊ LED ĐOẠN GIATRI: INC 00H CJNE R0,#10, NEXT0 INC 01H MOV 00H,#0 CJNE R1,#10, NEXT0 INC 02H MOV 00H,#0 MOV 01H,#0 CJNE R2, #10, NEXT0 INC 03H MOV 00H,#0 MOV 01H,#0 MOV 02H,#0 CJNE R3, #10, NEXT0 SJMP MAIN NEXT0: RET DisplayLED: MOV DPTR,#TABLE MOV A,R4 MOVC A,@A+DPTR ADD A,R5 BÀI TN HIỂN THỊ LED ĐOẠN MOVX @DPTR, A RET Delay: MOV R7,#20 LAP: MOV R6,#240 DJNZ R6, $ DJNZ R7, LAP RET TABLE: DB 0E0H, 0D0H, 0B0H,70H END ... @DPTR,A RET Delay1s: MOV R7,#8 LAP2: MOV R6, #24 0 LAP1: MOV R5, #24 0 DJNZ R5, $ DJNZ R6, LAP1 DJNZ R7, LAP2 RET END THÍ NGHIỆM BÀI TN HIỂN THỊ LED ĐOẠN Yêu cầu Vi? ??t chương trình DisplayLED xuất... cịn thấy LED nhấp nháy theo lý thuyết? Giải thích cách tính - Cách tính: Với tần số thạch anh sử dụng 11.05 92 MHz , ta có: MC= 12/ 11.05 92 MHz= 1.085 µs Xét sơ đồ sau: BÀI TN HIỂN THỊ LED ĐOẠN LED... MOV DPTR, #0000H MOVX @DPTR, A RET END Câu hỏi Giải thích ý nghĩa lệnh đoạn chương trình hướng dẫn THÍ NGHIỆM Yêu cầu BÀI TN HIỂN THỊ LED ĐOẠN Vi? ??t chương trình hiển thị số lên LED7 đoạn 0, sau