LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN 1.1 THÍ NGHIỆM .3 1.2 THÍ NGHIỆM .3 1.3 THÍ NGHIỆM .4 1.4 THÍ NGHIỆM .5 CHƯƠNG HIỂN THỊ LED ĐOẠN 2.1 THÍ NGHIỆM .6 2.2 THÍ NGHIỆM .7 2.3 THÍ NGHIỆM .8 2.4 THÍ NGHIỆM .8 CHƯƠNG GIAO TIẾP LCD VÀ ADC 10 3.1 THÍ NGHIỆM .10 3.2 THÍ NGHIỆM .11 3.3 THÍ NGHIỆM 3, 13 CHƯƠNG LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT 17 4.1 THÍ NGHIỆM .17 4.2 THÍ NGHIỆM .17 4.3 THÍ NGHIỆM .18 4.4 THÍ NGHIỆM .19 CHƯƠNG LẬP TRÌNH NGẮT .23 5.1 THÍ NGHIỆM .23 5.2 THÍ NGHIỆM .24 5.3 THÍ NGHIỆM .25 5.4 THÍ NGHIỆM .27 CHƯƠNG LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN 1.1 THÍ NGHIỆM 1.1.1 Yê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
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HCM KHOA ĐIỆN – ĐIỆN TỬ BÁO CÁO THÍ NGHIỆM VI XỬ LÝ Hướng dẫn: Nguyễn Khắc Phương Tuấn Nhóm thực hiện: TỪ VƯƠNG DIỄM MAI 1712116 NGUYỄN MINH LONG 1710177 PHẠM MINH KHƠI 1711821 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2019 MỤC LỤC CHƯƠNG LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN 1.1 THÍ NGHIỆM .3 1.2 THÍ NGHIỆM .3 1.3 THÍ NGHIỆM .4 1.4 THÍ NGHIỆM .5 CHƯƠNG HIỂN THỊ LED ĐOẠN 2.1 THÍ NGHIỆM .6 2.2 THÍ NGHIỆM .7 2.3 THÍ NGHIỆM .8 2.4 THÍ NGHIỆM .8 CHƯƠNG GIAO TIẾP LCD VÀ ADC 10 3.1 THÍ NGHIỆM .10 3.2 THÍ NGHIỆM .11 3.3 THÍ NGHIỆM 3, 13 CHƯƠNG LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT 17 4.1 THÍ NGHIỆM .17 4.2 THÍ NGHIỆM .17 4.3 THÍ NGHIỆM .18 4.4 THÍ NGHIỆM .19 CHƯƠNG LẬP TRÌNH NGẮT .23 5.1 THÍ NGHIỆM .23 5.2 THÍ NGHIỆM .24 5.3 THÍ NGHIỆM .25 5.4 THÍ NGHIỆM .27 CHƯƠNG LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN 1.1 THÍ NGHIỆM 1.1.1 Yê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) 1.1.2 Code ORG 2000H %% bắt đầu chương trình địa chỉa 2000H LOOP: %% khởi tạo vòng lặp SETB P1.0 %% set chân P1.0, nhấn nút trả MOV C, P1.0 %% đọc giá trị chân P1.0 vào bit carry MOV P3.0,C %% đọc giá trị cờ carry xuất P3.0 SJMP LOOP %% nhảy vòng lặp END %% kết thúc 1.2 THÍ NGHIỆM 1.2.1 Yêu cầu Viết chương trình tạo xung vng Hz, chu kỳ nhiệm vụ 50% P1.0 1.2.2 Code ORG 2000H CONT: CPL P1.0 %% đảo bit P3.0 ACALL DELAY05MS %% gọi chương trình delay 0.5ms SJMP CONT %% nhảy cont DELAY05MS: %% chương trình delay 0.5ms MOV R7,#230 %% move R7 giá giá trị 230 LOOP: DJNZ R7,LOOP %% giảm R7 xuống chưa quay trở lại vòng lặp RET END Vòng trễ tạo với thời gian trễ 0.5ms Mỗi vòng lặp DJNZ có thời gian thực thi chu kì máy, chu kì máy có thời gian 12 chu kì thạch anh Gọi n số lần lặp: 0.5(10^-3)=2n.Tmáy=2n.12Txtal=24n.(1/11059200) => n=230.4 => chọn n=230 1.3 THÍ NGHIỆM 1.3.1 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 1.3.2 Code ORG 2000H LOOP: %% bắt đầu vòng lặp CPL P1.0 %% đảo bit P1.0 ACALL DELAY1SINS %% gọi chương trình delay1sins SJMP LOOP %% nhảy vòng lặp DELAY1SINS: MOV R7,#7 LOOP1: MOV R6,#250 LOOP2: MOV R5,#250 LOOP3: DJNZ R5,LOOP3 %% R5 chưa quay vòng lặp DJNZ R6,LOOP2 %% R6 chưa quay vòng lặp DJNZ R7,LOOP1 %% R7 chưa quay vịng lặp RET END 1.4 THÍ NGHIỆM 1.4.1 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 1.4.2 Code ORG 2000H CPL P1.6 LOOP: %% tạo vòng lặp ACALL DELAY1SINS CPL P1.0 %% đảo bit P1.0 CPL P1.6 ACALL DELAY1SINS %%gọi lại CPL P1.7 chương trình delay1sins ACALL DELAY1SINS CPL P1.0 CPL P1.7 CPL P1.1 SJMP LOOP ACALL DELAY1SINS lặp CPL P1.1 DELAY1SINS: %% chương trình CPL P1.2 delay1sins ACALL DELAY1SINS MOV R7,#7 CPL P1.2 LOOP1: CPL P1.3 MOV R6,#250 ACALL DELAY1SINS LOOP2: CPL P1.3 MOV R5,#250 CPL P1.4 LOOP3: ACALL DELAY1SINS DJNZ R5,LOOP3 CPL P1.4 DJNZ R6,LOOP2 CPL P1.5 DJNZ R7,LOOP1 ACALL DELAY1SINS RET CPL P1.5 END CHƯƠNG %% nhảy lại vịng HIỂN THỊ LED ĐOẠN 2.1 THÍ NGHIỆM 2.1.1 Yêu cầu 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 2.1.2 Code Viết chương trình DisplayLed0 hiển thị lên LED đoạn số giá trị chứa ghi R0 DISPLAYLED0: %%chương trình displayled0 MOV A,R0 %% đưa giá trị R0 vào ghi A ADD A,#0E0H %% cộng E0H với R0 ( E: cho dẫn led0, R0: số BCD) MOV DPTR,#0000H %% trỏ DPTR đến địa IC 573 led đoạn MOVX @DPTR,A RET %% ghi giá trị IC 573 %% kết thúc chương trình 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 ORG 2000H MOV R0,#9 %% lưu R0=9 ACALL DISPLAYLED0 %% gọi chương trình displayled0 DISPLAYLED0: MOV A,R0 ADD A,#0E0H MOV DPTR,#0000H MOVX @DPTR,A END 2.2 THÍ NGHIỆM 2.2.1 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 2.2.2 Code ORG 2000H MOV R0,#0 chương trình displayled0 %% số LOOP: INC R0 %% tăng R0 lên đơn vị %% khởi tạo vòng lặp ACALL DISPLAYLED0 ACALL DELAY1S %% gọi chương trình delay1s %% gọi CJNE R0,#10,LOOP %%R0 khác 10 quay lại loop để thị số timer0 mode (16 bit) MOV R0,#0 MOV TH0,#HIGH(-50000) %% R0=10 nạp lại cho R0 %%đặt timer0 đến tới 50000MC SJMP LOOP %% quay lại vòng lặp để tiếp tục MOV TL0,#LOW(-50000) SETB TR0 DISPLAYLED0: %% chương trình %%cho chạy timer0 displayled0 JNB TF0,$ MOV A,R0 tràn ADD A,#0E0H CLR TF0 %%xóa cờ báo tràn MOV DPTR,#0000H CLR TR0 %%dừng timer0 MOVX @DPTR,A DJNZ R7,TIMELOOP %%lặp lại 20 RET lần 0.05s cho đủ 1s DELAY1S: %% chương trình delay1s RET %%chờ cho timer0 %%kết thúc chương trình MOV TMOD, #01H %%cài đặt END 2.3 THÍ NGHIỆM 2.3.1 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ố 2.3.2 Code ORG 2000H MOV R1,#03 ;R1 chứa vị trí led MOV R0,#07 ;R0 chứa giá trị led LAP: MOV A,R1 MOV DPTR,#TABLE MOVC A,@A+DPTR ORL A,R0 MOV DPTR,#0 MOVX @DPTR,A SJMP LAP TABLE: DB 0E0H,0D0H,0B0H,70H ;bảng giá trị chọn led END 2.4 THÍ NGHIỆM 2.4.1 u cầu 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 cịn 100 ms Quan sát tượng Tính tốn thời gian trễ cho khơng cịn 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 2.4.2 Code ORG 2000H MOV R0,#01H MAIN: ACALL XUAT MOV R1,#00H ACALL DL MOV R0,#04H SJMP MAIN ACALL XUAT ; ACALL DL ;chương trình xuất giá trị chứa R0 MOV R1,#01H vị trí led chứa R1 MOV R0,#03H XUAT: ACALL XUAT MOV A,R1 ACALL DL MOV DPTR,#TABLE MOV R1,#02H MOVC A,@A+DPTR MOV R0,#02H ORL A,R0 ACALL XUAT MOV DPTR,#0 ACALL DL MOVX @DPTR,A MOV R1,#03H RET TABLE: DB 0E0H,0D0H,0B0H,70H ; SETB TR1 JNB TF1,$ CLR TF1 ; chương trình tạo trễ quét led CLR TR1 DL: RET MOV TMOD,#10H MOV TL1,#LOW(-1000) END MOV TH1,#HIGH(-1000) - Khi giảm thời gian delay 100ms, LED đoạn chớp tắt nhanh - Khi loại bỏ hàm delay, LED đoạn không quan sát led sáng LCALL NHAPLENH 51 nen so du lon nhat la 500 RET CJNE R4,#1,TIEP1 ; DIV AB du lon hon 255 XUAT1KYTU: ADD A,#5 MOV DPTR,#6000H MOV R4,A SETB EN SJMP TIEP2 SETB RS DIV AB CLR EN ; phan du nho hon 255 LCALL DL5MS MOV R4,A RET TIEP2: ; - MOV A,#8AH ACALL NHAPLENH XUATDIENAP: MOV A,R4 MOV A,#88H ADD A,#48 LCALL NHAPLENH ACALL XUAT1KYTU MOV A,R5 RET MOV B,#51 ; - DIV AB ;ma ASCII gia tri dien ap phan nguyen HIENTHI: MOV A,#80H ACALL XUAT1KYTU ACALL NHAPLENH MOV A,#10 MOV R3,#0 ; phan du nhan voi 10 MOV R4,B LP: MOV A,R3 MOV DPTR,#TABLE so cao chuyen vao R4, neu gia tri vuot MOVC A,@A+DPTR qua 255 thi B co gtri JZ EXIT MOV B,#51 cong TIEP1: MOVX @DPTR,A MUL AB ; them vao A gia tri 255:51=5 CLR EN ADD A,#48 ; neu so ; ; vi chia ACALL XUAT1KYTU INC R3 SJMP LP TABLE: DB "VOLT: EXIT: RET END , V",0 CHƯƠNG LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT 4.1 THÍ NGHIỆM 4.1.1 u cầu Viết chương trình tạo sóng vng Hz chân P1.0 sử dụng timer chế độ 4.1.2 Code ORG 2000H LOOP: %% bắt đầu vòng lặp CPL P1.0 %% đảo bit P1.0 ACALL DELAY05MS %%gọi lại ct SJMP LOOP %% nhảy lại vòng lặp DELAY05MS: %% ct delay 0.5ms MOV TMOD,#01H %% cài đặt timer chế độ MOV TH0,#HIGH(-461) %%nạp giá trị 461 MC cho timer (MC=1.0851us) MOV TL0,#LOW(-461) SETB TR0 %% cho timer0 chạy JNB TF0,$ %% chờ đến timer0 tràn CLR TF0 %% xóa cờ ngắt CLR TR0 %% dừng timer0 RET END 4.2 THÍ NGHIỆM 4.2.1 u cầu Viết chương trình tạo sóng vng Hz chân P1.0 sử dụng timer chế độ 4.2.2 Code ORG 2000H MOV TMOD,#02H %%khai báo timer0 mode MOV TH0,#-46 %% nạp giá trị 46MC cho timer0 SETB TR0 %% chạy timer0 LOOP: %% khởi tạo vòng lặp JNB TF0,$ %% chờ cho timer tràn CLR TF0 %% xóa cờ ngắt timer CPL P1.0 %% đảo bit P1.0 SJMP LOOP %% nhảy lại vòng lặp END 4.3 THÍ NGHIỆM 4.3.1 Yêu cầu Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính thơng qua HyperTerminal với tốc độ baud 19200 bps SW 310 (gắn vào P1.0) nhấn 4.3.2 Code ORG 2000H JZ LAP MOV TMOD,#20H ;cài đặt port nối tiếp vào tốc độ baud LCALL XUAT SJMP TTUC MOV TH1,#-3 ; - SETB TR1 MOV SCON,#42H ; xuất port nt MOV PCON,#80H XUAT: LAP: JNB TI,$ MOV R7,#0 CLR TI MOV DPTR,#TABLE MOV SBUF,A TTUC: JB P1.0,$ RET ;chờ phím nhấn LCALL DL100MS ; chống rung phím JNB P1.0,$ ; DL100MS: MOV R4,#2 ;chờ phím nhả MOV A,R7 INC R7 MOVC A,@A+DPTR LAP1: MOV TMOD,#01H MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ RET CLR TF0 ; - CLR TR0 TABLE: DB "HELLO,WORLD",0 DJNZ R4,LAP1 END 4.4 THÍ NGHIỆM 4.4.1 Yêu cầu Viết chương trình nhận ký tự từ máy tính gửi đến EME-MC8 thơng qua HyperTerminal (bằng cách gõ ký tự bàn phím chương trình HyperTerminal) hiển thị lên LCD sau: Nếu ký tự chữ hiển thị lên LCD; Enter xuống hàng; ESC xóa hình LCD; Backspace xóa ký tự bên trái dấu nháy 4.4.2 Code ORG 2000H LCALL KTRABACK RS BIT P3.5 SJMP MAIN EN BIT P3.3 ; - MOV TMOD,#20H MOV TH1,#-3 MOV SCON,#50H KTRABACK: MOV PCON,#80H CJNE A,#08H,OUT1 SETB TR1 LCALL XOAKYTU CLR F0 ;bien trang thai OUT1: hang(enter) LCALL KHOIDONGLCD RET ; XOAKYTU: MAIN: LCALL INCHAR LCALL KTRACHAR LCALL KTRAENTER LCALL KTRAESC DEC R1 ; chuyển trỏ vị trí vị trí trước JB F0,H1 trỏ MOV R0,#00H ; kiểm tra hàng SJMP GOTO H1: SJMP OUT4 MOV R0,#01H HANG1: GOTO: MOV R0,#01 LCALL GOTOXY tro len hang tren MOV A,#0FEH ;thay ký MOV R1,#00 tự ký tự trắng LCALL GOTOXY LCALL XUAT1KYTU DEC R1 ;cho OUT4: ; trỏ tự động tăng lên nên phải giảm vị trí RET ; - LCALL GOTOXY RET ; - KTRAESC: - CJNE A,#27H,OUT3 ; ktra mã ASCII phím ESC LCALL CLRLCD KTRAENTER: OUT3: CJNE A,#13H,OUT2 RET ;kiểm tra mã ASCII phím enter ; - LCALL CHUYENHANG - OUT2: CLRLCD: RET MOV A,#01H ; - LCALL NHAPLENH MOV R1,#0 CHUYENHANG: CPL F0 ; khoi dong lai đếm vị trí cột trỏ tên LCD ; đảo cờ vị trí hàng RET trỏ JB F0,HANG1 ;kiem tra vi tri tro ; LCALL KHOIDONGLCD MOV R1,#0 KTRACHAR: CJNE A,#30H,$+3 ; nhận MOV DPTR,#6000H ký tự mã ASCII khoảng hiển thị CLR EN SETB EN JC THOAT SETB RS CJNE A,#7FH,$+3 MOVX @DPTR,A JNC THOAT CLR EN CLR C LCALL DL5MS LCALL XUAT1KYTU INC R1 THOAT: RET RET ; ; - DL5MS: MOV TMOD,#10H INCHAR: MOV TL1,#LOW(-5000) JNB RI,$ ; nhận ký tự từ port nối tiếp MOV TH1,#HIGH(-5000) SETB TR1 CLR RI JNB TF1,$ MOV A,SBUF CLR TF1 RET CLR TR1 ; - RET ; NHAPLENH: KHOIDONGLCD: MOV DPTR,#6000H MOV A,#01H CLR EN LCALL NHAPLENH SETB EN MOV A,#0EH CLR RS LCALL NHAPLENH MOVX @DPTR,A MOV A,#02H CLR EN LCALL NHAPLENH LCALL DL5MS MOV A,#06H RET LCALL NHAPLENH ; - MOV A,#38H XUAT1KYTU: LCALL NHAPLENH RET ; GOTOXY: PUSH ACC MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR ORL A,R1 LCALL NHAPLENH POP ACC TABLE: DB 80H,0C0H RET END CHƯƠNG CHƯƠNG LẬP TRÌNH NGẮT 6.1 THÍ NGHIỆM 6.1.1 Yêu cầu Viết chương trình làm song song công việc sau: Nhận byte từ máy tính xuất ngược lại (echo) lên hình terminal Bật LED gắn vào P1.1 SW 317 (gắn vào P1.0) nhấn, tắt LED phím nhả 6.1.2 Code ORG 2000H SETB TR1 LJMP MAIN ;nhảy đến chương trình MAIN ORG 2023H ; ;địa cho ngắt serial port LJMP SERIAL ;timer hoạt động ;chương trình bật tắt P1.1 LAP: ;nhảy MOV C,P1.0 đến chương trình phục vụ ngắt MOV P1.1,C timer tràn SJMP LAP MAIN: ; - MOV P1,#02H ; tắt led P1.1 MOV TMOD,#20H ;chương trình phục vụ ngắt ;tạo timer chế độ MOV TH1,#-3 -SERIAL: JNB RI,TRANFER ;gán trị cho ;nếu RI báo ngắt chuyển dl vào A xuất dl, timer tao toc baud TI báo ngắt xóa TI quay lại MOV SCON,#52H chương trình sẵn sàng nhận byte MOV PCON,#80H ;tăng gấp đôi giá kế trị baud MOV A,SBUF MOV IE,#90H toàn cục ngắt nối tiếp ;cho phép ngắt ;chuyển liệu vào A MOV SBUF,A ;xuất liệu CLR RI ;xóa RI để sẵn sáng nhận byte byte kế EXIT: SJMP EXIT RETI TRANFER: END CLR TI ;trở từ ISR ;xóa cờ TI sẵn sàng suất 6.2 THÍ NGHIỆM 6.2.1 Yêu cầu Viết chương trình hiển thị lên LED đoạn số có chữ số, ký số chứa ô nhớ 20H, 21H, 22H 23H Ơ nhớ 20H chứa số hàng nghìn 6.2.2 Code ORG 2000H timer hoạt động LJMP MAIN0 ;nhảy ; - đến chương trình MAIN0 - ORG 2030H ;chương trình chờ timer tràn MAIN1: MAIN0: MOV R1,#20H MOV 20H,#71H ;trị để khởi động led số ; trị để khởi động led số ; trị để khởi động led số led ; ; trị để khởi động led số MOV TMOD,#20H MOV IE,#88H ;chương trình quét led HLED: ;khởi động timer chế độ LL: MOV A,@R1 ;cho phép MOV DPTR, #0000h MOV TH0,#HIGH(-5000) ;gán trị cho MOVX @DPTR, A timer MOV R4,#20 ;cho phép ;lấy trị ô nhớ 20H gán vào led ngắt toàn cục ngắt timer SETB TR0 ;gọi chương trình LJMP MAIN1 MOV 22H,#0D3H MOV 23H,#0E5H nhớ 20H vào R1 LCALL HLED MOV 21H,#0B2H ;gán trị ô đọc kịp số ;tạo trễ cho led NHAY: MOV R3,#250 tương ứng với led khác ;và lên led CJNE R1,#24H,LL ;quay lại nhãn LL DJNZ R3,$ đến đủ led DJNZ R4,NHAY RET INC R1 ;tăng R1 lên trị END 6.3 THÍ NGHIỆM 6.3.1 u cầu Viết chương trình đếm số lần nhấn phím SW317, hiển thị lên LED đoạn 6.3.2 Code ORG 2000H SETB TF0 LJMP MAIN0 ;nhảy ; - đến chương trình MAIN0 để cài đặt timer ;chương trình ORG 200BH ; vecto ngắt timer0 ;ép ngắt timer0 MAIN1: MOV R1,#20H LJMP IRS_T0 LCALL HLED ;hiện led ;nhảy đến chương trình phục vụ ngắt SJMP MAIN1 T0 ; - MAIN0: MOV 20H,#70H ;trị khởi động led IRS_T0: MOV 21H,#0B0H ;trị khởi động led CLR TR0 ;ngừng timer MOV 22H,#0D0H ;trị khởi động led MOV 23H,#0E0H ; chuong trình phục vụ ngắt timer0 JNB P1.0,DEM0 ;nhấn phím nhảy đến DEM0 ;trị khởi động led MOV TMOD,#01H MOV TH0,#HIGH(-50000) ;khởi động timer chế độ MOV IE,#82H ngắt toàn cục timer KTHUC: trị timer khởi động lại timer MOV TL0,#LOW(-50000) ;cho phép SETB TR0 RETI ;gán lại ; - MOV 21H,#0B0H MOV 22H,#0D0H ;chương trình cập nhật led MOV 23H,#0E0H DEM0: LCALL DELAY ;gọi hàm tạo trễ để chống rung phím INC 23H DEM1: NOP ;tăng trị led lên LJMP KTHUC ;nhảy nhản KTHUC để thực tiếp chương trình MOV A,23H ;gán vào A CJNE A,#0EAH,DEM1 ;tăng đến trị 10 ; ; chương trình quét led MOV 23H,#0E0H ;thì quay HLED: LL: MOV A,@R1 INC 22H ;và tăng ADD A,R0 hàng chục lên đơn vị MOV DPTR, #0000H MOV A,22H MOVX @DPTR, A ;tương tự với led lại, led hàng trăm led hàng MOV R4,1 nghìn NHAY: MOV R3,1 CJNE A,#0DAH,DEM1 DJNZ R3,$ MOV 22H,#0D0H DJNZ R4,NHAY INC R1 INC 21H CJNE R1,#24H,LL MOV A,21H RET CJNE A,#0BAH,DEM1 ; - MOV 21H,#0B0H DELAY: INC 20H MOV R6,#200 MOV A,20H TTRE: CJNE A,#7AH,DEM1 MOV R7,#250 MOV 20H,#70H DJNZ R7,$ DJNZ R6,TTRE END RET 6.4 THÍ NGHIỆM 6.4.1 Yêu cầu Viết chương trình thực đồng hồ bấm giây, hiển thị lên LED đoạn Hai LED thể số giây, LED thể phần trăm giây Khi SW310 nhấn, đồng hồ reset SW 311 nhấn, đồng hồ bắt đầu chạy SW 312 nhấn, đồng hồ dừng lại 6.4.2 Code ORG 2000H LJMP MAIN0 ORG 200BH LJMP TM0 MAIN0: MOV P1,#07H ;đưa bít P1.0, ;P1.1, P1.2 lên múc cao JB P1.0,$ ;đợi nhã phím để bắt LCALL DELAY ;đầu chương trình MOV 20H,#70H MOV 21H,#0B0H MOV 22H,#0D0H MOV 23H,#0E0H MOV TMOD,#01H MOV IE,#82H MOV TH0,#HIGH(-7000) MOV TL0,#LOW(-7000) SETB TR0 MAIN1: MOV R1,#20H ;chương trình qt led ACALL HLED HLED: JNB P1.1,LLAI1 ;nhã phím thìLL: nhảy ;đến LLAI1 để cài lại led MOV A,@R1 SJMP MAIN1 MOV DPTR, #0000h LLAI1: MOVX @DPTR, A MOV A,#0E0H MOV R4,#20 MOV DPTR, #0000h NHAY: MOV R3,#250 MOVX @DPTR, A DJNZ R3,$ LJMP MAIN0 DJNZ R4,NHAY ; - INC R1 CJNE R1,#24H,LL ; chuong trình phục vụ ngắt timer0 RET TM0: ; - CLR TR0 JNB P1.2,DUNG ;nhấn phím, nhảy ;đến DUNG DELAY: MOV R5,#2 LCALL DEM0 TTRE1: TRA: MOV R6,#200 MOV TH0,#HIGH(-7000) TTRE: MOV TL0,#LOW(-7000) MOV R7,#250 SETB TR0 DJNZ R7,$ RETI DJNZ R6,TTRE DUNG: ;dừng đếm hiển thịDJNZ R5,TTRE1 lên ;led giá trị tức thời CLR P1.2 RET ;xóa bit để ngừng hẳn việc ;đếm ;chương trình đếm SJMP TRA DEM0: ; - INC 23H MOV A,23H CJNE A,#0EAH,DEM1 MOV 23H,#0E0H INC 22H MOV A,22H CJNE A,#0DAH,DEM1 MOV 22H,#0D0H INC 21H MOV A,21H CJNE A,#0BAH,DEM1 MOV 21H,#0B0H INC 20H MOV A,20H CJNE A,#76H,DEM1 MOV 20H,#70H MOV 21H,#0B0H MOV 22H,#0D0H MOV 23H,#0E0H DEM1: RET END ... 1.1 THÍ NGHIỆM .3 1.2 THÍ NGHIỆM .3 1.3 THÍ NGHIỆM .4 1.4 THÍ NGHIỆM .5 CHƯƠNG HIỂN THỊ LED ĐOẠN 2.1 THÍ NGHIỆM .6 2.2 THÍ NGHIỆM... THÍ NGHIỆM .17 4.2 THÍ NGHIỆM .17 4.3 THÍ NGHIỆM .18 4.4 THÍ NGHIỆM .19 CHƯƠNG LẬP TRÌNH NGẮT .23 5.1 THÍ NGHIỆM .23 5.2 THÍ... .7 2.3 THÍ NGHIỆM .8 2.4 THÍ NGHIỆM .8 CHƯƠNG GIAO TIẾP LCD VÀ ADC 10 3.1 THÍ NGHIỆM .10 3.2 THÍ NGHIỆM .11 3.3 THÍ NGHIỆM 3,