0

BÀI tập lớn vi xử lí

32 7 0
  • BÀI tập lớn vi xử lí

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Tài liệu liên quan

Thông tin tài liệu

Ngày đăng: 23/06/2022, 23:19

BÀI TẬP LỚN NHÓM 1 Phan Thanh An MSSV 2012564 Huỳnh Kỳ Anh MSSV 1912566 Bài tập 1 1A Cho 4 đèn LED sáng trên port 1 Độ sáng giảm dần theo thứ tự , đèn thứ nhất sáng 100% đèn thứ hai sáng 80% đèn thứ ba 3 sáng 60% đèn thứ tư sáng 40% Code ORG 2000H LOOP MOV P1, 11110000B ; cho 4 đèn P1 3, P1 2, P1 1, P1 0 đều sáng CALL DELAY ; sau 25 chu kì CALL DELAY ORL P1,11111000B ; tắt đèn P1 3, P1 3 sáng trong 25 chu kì => sáng 40% CALL DELAY ; sau 35 chu kì ORL P1,11111100B ; tắt đèn P1 2, P1 2 sáng. BÀI TẬP LỚN NHÓM Phan Thanh An MSSV: 2012564 Huỳnh Kỳ Anh MSSV: 1912566 Bài tập 1: 1A: Cho đèn LED sáng port Độ sáng giảm dần theo thứ tự , đèn thứ sáng 100% đèn thứ hai sáng 80% đèn thứ ba sáng 60% đèn thứ tư sáng 40% Code : ORG 2000H MOV P1, #11110000B ; cho đèn P1.3, P1.2, P1.1, P1.0 sáng CALL DELAY ; sau 2/5 chu kì CALL DELAY ORL P1,#11111000B ; tắt đèn P1.3, P1.3 sáng 2/5 chu kì => sáng 40% CALL DELAY ; sau 3/5 chu kì ORL P1,#11111100B ; tắt đèn P1.2, P1.2 sáng 3/5 chu kì => sáng 60% CALL DELAY ; sau 4/5 chu kì ORL P1,#11111110B ; tắt đèn P1.1, P1.1 sáng 4/5 chu kì => sáng 80% CALL DELAY ; sau 5/5 cu kì đèn P1.0 sáng => sáng 100% SJMP LOOP ; lặp lại DELAY: MOV R7,#250 ; chương trình tạo delay 1/5 chu kì DL: MOV R6,#2 DJNZ R6,$ DJNZ R7,DL LOOP: RET END 1B: Cho đèn đèn led chạy (ta thấy giống rắn mà đầu sáng nhiều sáng ) Code: ORG 2000H MOV R0,#11110000B ; đèn sáng MOV R1,#11111000B ; đèn sáng MOV R2,#11111100B ; đèn sáng MOV R3,#11111110B ; đèn sáng AGAIN: MOV R4,#100 ; lặp vòng lặp LOOP 100 lần LOOP: MOV P1,R0 ; đèn sáng CALL DELAY ; sau chu kì CALL DELAY MOV A,P1 ORL A,R1 MOV P1,A CALL DELAY MOV A,P1 ORL A,R2 MOV P1,A CALL DELAY MOV A,P1 ORL A,R3 ; tắt đèn, sáng chu kì => độ sáng = 40% ; sau chu kì ; tắt đèn, sáng chu kì => độ sáng = 60% ; sau chu kì ; tắt đèn, sáng 4/5 chu kì => độ sáng = 80% MOV P1,A CALL DELAY ; sau 5/5 chu kì đèn ngồi sáng => 100% DJNZ R4,LOOP ; lặp lại 100 lần MOV A,R0 ; dịch phải R0 tạo hiệu ứng chạy RR A MOV R0,A MOV A,R1 RR A MOV R1,A MOV A,R2 RR A MOV R2,A MOV A,R3 RR A MOV R3,A SJMP AGAIN ; quay lại từ đầu DELAY: MOV R7,#250 ; chương trình tạo delay 1/5 chu kì DL: MOV R6,#2 DJNZ R6,$ DJNZ R7,DL RET END ; dịch phải R1 tạo hiệu ứng chạy ; dịch phải R2 tạo hiệu ứng chạy ; dịch phải R3 tạo hiệu ứng chạy Bài tập : (Bắt buộc) 2A: Viết chương trình đếm từ tới Hiển thị led đoạn hàng đơn vị Cứ sau giây tăng lên số sau tăng tới lặp lại từ 0.(Dùng dùng phần cứng Kit thí nghiệm ) Code : ORG 2000H MOV DPTR,#0000H ; nạp địa LED đoạn vào DPTR LOOP: MOV A,#0E0H ; giá trị ban đầu = chọn LED đơn vị AGAIN1: MOV R5,#8 ; lặp lại lần 8x0.125 = 1s AGAIN2: MOVX @DPTR,A ; xuất giá trị A LED đoạn CALL ; delay DELAY DJNZ R5,AGAIN2 ; lặp lại cho đủ 1s INC A ; tăng A lên đơn vị CJNE A,#0EAH,AGAIN1 ; giá trị khác 10 tiếp tục xuất LED SJMP LOOP ; A = 10 quay lại từ đầu giá trị = DELAY: MOV R7,#250 ; delay 0.125 s DL1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DL1 RET END 2B: Viết chương trình đếm từ tới Hiển thị led đoạn hàng đơn vị Cứ sau giây tăng lên số sau tăng tới lặp lại từ Nhưng tự thiết kế phần cứng khơng dùng phần cứng kit thí nghiệm (Thiết kế sơ đồ phần cứng Proteus Và chạy mô phần mềm Khi viết chương trình khơng dùng lệnh MOVX ) Thiết kế phần cứng: Code: ORG 2000H LOOP: MOV A,#10H ; giá trị ban đầu = 0, chọn LED hàng đơn vị AGAIN1: MOV R5,#8 ; lặp lại lần, 8x0.125 = 1s AGAIN2: MOV P1,A ; xuất giá trị A LED CALL DELAY ; delay 0.125s DJNZ R5,AGAIN2 ; lặp lại cho đủ 1s INC A ; tăng A lên đơn vị CJNE A,#1AH,AGAIN1 ; giá trị khác 10 tiếp tục xuất LED SJMP LOOP ; giá trị = 10 quay lại từ đầu giá trị = DELAY: MOV R7,#250 ; chương trình tạo delay 0.125s DL1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DL1 RET END Bài tập : 3A: Viết chương trình đếm từ 00 tới 99 Hiển thị led đoạn Cứ sau 0.1 giây tăng lên số sau Tới 99 lặp lại từ 00.(Dùng dùng phần cứng Kit thí nghiệm ) Code: ORG 2000H MOV R0,#0E0H ; chọn LED 0, giá trị MOV R1,#0D0H ; chọn LED 1, giá trị MOV R2,#0B0H ; chọn LED 2, giá trị MOV R3,#070H ; chọn LED 3, giá trị LOOP1: MOV R5,#25 ; lặp 25 lần, 25x4 = 100ms LOOP2: MOV DPTR,#0000H ; nạp địa LED đoạn vào DPTR MOV A,R0 ; xuất LED0 LOOP: MOVX @DPTR,A CALL DELAY ; delay MOV A,R1 ; xuất LED1 MOVX @DPTR,A DELAY: MOV DL1: CALL DELAY ; delay DJNZ R5,LOOP2 ; lặp cho đủ 100ms INC R0 ; tăng giá trị đơn vị lên CJNE R0,#0EAH,LOOP1 ; giá trị đơn vị khác 10 tiếp tục xuất LED MOV R0,#0E0H ; giá trị đơn vị = 10 gán giá trị đơn vị = INC R1 ; tăng giá trị hàng chục CJNE R1,#0DAH,LOOP1 ; hàng chục khác 10 tiếp tục xuất LED SJMP LOOP ; giá trị hàng chục = 10 quay lại giá trị 00 R6,#8 ; delay 4ms MOV R7,#250 DJNZ R7,$ DJNZ R6,DL1 RET END 3B: Viết chương trình đếm từ 00 tới 99 Hiển thị led đoạn Cứ sau 0.1 giây tăng lên số sau tăng tới 99 lặp lại từ 00 Nhưng tự thiết kế phần cứng Không dùng phần cứng kit thí nghiệm (Thiết kế sơ đồ phần cứng Proteus Và chạy mô phần mềm này,Khi viết chương trình khơng dùng lệnh MOVX) Thiết kế phần cứng: Code: ORG 0000H MOV R0,#10H ; LED0, giá trị MOV R1,#20H ; LED1, giá trị LOOP1: MOV R5,#25 ; lặp 25 lần, 25x4 = 100ms LOOP2: MOV A,R0 ; xuất giá trị LED0 P1 MOV P1,A CALL DELAY ; delay 4ms MOV A,R1 ; xuất giá trị LED1 P1 MOV P1,A CALL DELAY ; delay 4ms DJNZ R5,LOOP2 ; lặp lại cho đủ 100ms INC R0 ; tăng hàng đơn vị CJNE R0,#1AH,LOOP1 ; hàng đơn vị khác 10, tiếp tục xuất LED MOV R0,#10H ; hàng đơn vị = 10, gán hàng đơn vị = INC R1 ; tăng hàng chục CJNE R1,#2AH,LOOP1 ; hàng chục khác 10, tiếp tục xuất SJMP LOOP ; hàng chục = 10, quay lại từ đầu giá trị 00 LOOP: DELAY: DL1: MOV R6,#8 ; delay 4ms MOV R7,#250 DJNZ R7,$ DJNZ R6,DL1 RET END Bài tập : 4A: Một cân điện tử bán mít Tố nữ đặc sản hoạt động sau: Trái kg giá giá 10.0 usd Trái từ 1kg đến 1,2 kg giá 12.0 usd Trái từ 1,2 kg đến 1,5 kg giá 14.5 usd Trái từ 1,5 kg đến 1,8 kg giá 20.0 usd Trái từ 1,8 kg đến 2,2 kg giá 18.0 usd Trái từ 2,2 kg trở lên giá 16.5 usd Cân điện tử lần cân trái cân tối đa 25,5 kg Hãy viết chương trình dựa phần cứng KIT thí nghiệm VXL để hiển thị khối lượng giá trái mít Tố nữ cân lên LCD .Khối lượng lấy từ giá trị ADC (0 - 255) tương đương với - 22.5 kg Code: MAIN: RANK0: LCD_E BIT P3.4 LCD_RS BIT P3.5 LCDADDR EQU 6000H ORG 2000H MOV DPTR, #LCDADDR ; nạp địa LCD vào DPTR ACALL CLEAR ; xóa hình ACALL INIT_LCD ; cấu hình LCD CALL READADC ; đọc giá trị ADC MOV A,#0C0H ; xuống hàng cột CALL WRITECOM ; viết lệnh lên LCD CJNE R0,#10,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 10 JNC RANK1 ; R0 >= 10 MOV A,#0 ; R0 < 10, xuất string SJMP DISPLAY CJNE R0,#12,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 12 JNC RANK2 ; R0 >= 12 MOV A,#9 ; R0 < 12, xuất string SJMP DISPLAY CJNE R0,#15,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 15 JNC RANK3 ; R0 >= 15 MOV A,#18 ; R0 < 15, xuất string SJMP DISPLAY CJNE R0,#18,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 18 JNC RANK4 ; R0 >= 18 MOV A,#27 ; R0 < 18,xuất string SJMP DISPLAY CJNE R0,#22,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 22 JNC RANK5 ; R0 >= 22 MOV A,#36 ; R0 < 22, xuất string SJMP DISPLAY RANK5: MOV A,#45 ; xuất string DISPLAY: CALL DISPLAYSTRING ; gọi chương trình xuất chuỗi lên LCD CALL DISPLAYADC ; gọi chương trình tách số ADC RANK1: RANK2: RANK3: RANK4: INIT_LCD: MOV A, #38H ; chương trình cấu hình LCD ACALL WRITECOM MOV A, #0EH ACALL WRITECOM MOV A, #06H ACALL WRITECOM MOV A, #0CH ACALL WRITECOM RET CLEAR: MOV A, #01H ; chương trình xóa hình ACALL WRITECOM RET WRITECOM: MOV DPTR, #LCDADDR SETB LCD_E CLR LCD_RS ; chương trình viết lệnh lên LCD MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET WRITETEXT: ; chương trình xuất kí tự lên LCD MOV DPTR, #LCDADDR SETB LCD_E SETB LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET DISPLAYSTRING:PUSH 0H LOOP: MOV DPTR, #MESSAGE ; lấy địa chuỗi MOV R0,A ; cất A vào R0 EXIT: ; chương trình xuất chuỗi lên LCD MOVC A,@A+DPTR ; lấy kí tự JZ EXIT ; kí tự = “0” ACALL WRITETEXT ; xuất kí tự lên LCD MOV A,R0 ; lấy lại giá trị cũ INC A ; lấy kí tự SJMP LOOP ; lặp lại POP 0H ; lấy lại R0 DPTR, #4000H ; nạp địa ADC vào DPTR RET READADC: MOV MOVX @DPTR, A ; bắt đầu chuyển đổi ACALL DELAY_ADC ; chờ ADC MOVX A, @DPTR ; đọc giá trị chuyển đổi MOV R0,A ; lưu vào R0 ; chương trình chờ LCD RET WAIT_LCD: MOV R6,#10 DL1: MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 RET DELAY_ADC: MOV R4, #100 ; chương trình chờ ADC DJNZ R4, $ RET DISPLAYADC: MOV A,R0 ; chương trình tách số giá trị đọc từ ADC MOV B,#10 ; chia R0 cho 10 DIV AB MOV R0, B ; hàng đơn vị MOV B,#10 ; chia kết tiếp cho 10 DIV AB MOV R1, B ; hàng chục MOV B,#10 ; chia tiếp kết cho 10 DIV AB MOV R2, B ; hàng trăm CLR TI ; xóa cờ TI MOV SBUF,A ; xuất data A serial port JNB TI, $ ; chờ xuất xong RET PHAT: RET ; return SO_SANH: RANK0: RANK1: CJNE R0,#10,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 10 JNC RANK1 ; R0 >= 10 MOV A,#0 ; R0 < 10, xuất string SJMP THOAT CJNE R0,#12,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 12 JNC RANK2 ; R0 >= 12 MOV A,#9 ; R0 < 12, xuất string SJMP THOAT RANK2: CJNE R0,#15,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 15 JNC RANK3 ; R0 >= 15 MOV A,#18 ; R0 < 15, xuất string SJMP THOAT CJNE R0,#18,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 18 JNC RANK4 ; R0 >= 18 MOV A,#27 ; R0 < 18,xuất string SJMP THOAT CJNE R0,#22,$+3 ; so sánh R0 (giá trị đọc từ ADC) với 22 JNC RANK5 ; R0 >= 22 MOV A,#36 ; R0 < 22, xuất string SJMP THOAT RANK5: MOV A,#45 THOAT: RET MESSAGE: USD",0 DB "10.0 USD",0,"12.0 USD",0,"14.5 USD",0,"20.0 USD",0,"18.0 USD",0,"16.5 RANK3: RANK4: ; xuất string END Bài tập : Hãy thực tập 4A Nhưng tự thiết kế phần cứng.Thiết kế sơ đồ phần cứng Proteus Và chạy mô phần mềm Khi viết chương trình khơng dùng lệnh MOVX khơng dùng phần cứng kit thí nghiệm Thiết kế phần cứng: Code: LCD_E BIT P3.1 LCD_RS BIT P3.0 START BIT P3.2 OE BIT P3.3 EOC BIT P3.4 ORG 0000H MAIN: ACALL CLEAR ; xóa hình ACALL INIT_LCD ; cấu hình LCD CALL READADC ; đọc ADC MOV A,#0C0H ; xuống hàng cột RANK0: RANK1: RANK2: RANK3: RANK4: RANK5: CALL WRITECOM ; ghi lệnh lên LCD CJNE R0,#10,$+3 ; so sánh R0(giá trị đọc từ ADC) với 10 JNC RANK1 ; R0 >= 10 MOV A,#0 ; R0 < 10, xuất chuỗi SJMP DISPLAY CJNE R0,#12,$+3 ; so sánh R0(giá trị đọc từ ADC) với 12 JNC RANK2 ; R0 >= 12 MOV A,#9 ; R0 < 12, xuất chuỗi SJMP DISPLAY CJNE R0,#15,$+3 ; so sánh R0(giá trị đọc từ ADC) với 15 JNC RANK3 ; R0 >= 15 MOV A,#18 ; R0 < 15, xuất chuỗi SJMP DISPLAY CJNE R0,#18,$+3 ; so sánh R0(giá trị đọc từ ADC) với 18 JNC RANK4 ; R0 >= 18 MOV A,#27 ; R0 < 18, xuất chuỗi SJMP DISPLAY CJNE R0,#22,$+3 ; so sánh R0(giá trị đọc từ ADC) với 22 JNC RANK5 ; R0 >= 22 MOV A,#36 ; R0 < 22, xuất chuỗi SJMP DISPLAY MOV A,#45 ; xuất chuỗi DISPLAY: NEXT: CALL DISPLAYSTRING ; xuất chuỗi LCD CALL DISPLAYADC ; tách số từ giá trị đọc từ ADC MOV A,#80H ; hàng cột1 CALL WRITECOM ; viết lệnh lên LCD MOV A,R2 ; lưu hàng trăm vào A JZ NEXT ; hàng trăm = 0, ko xuất hàng trăn ADD A,#30H ; khác 0, cộng với 30H để mã ASCII ACALL WRITETEXT ; viết kí tự lên LCD MOV A,R1 ; tương tự xuất hàng chục lên LCD ADD A,#30H ACALL WRITETEXT MOV A,#46 ; xuất kí tự dấu chấm “.” Lên LCD ACALL WRITETEXT MOV A,R0 ADD A,#30H ; xuất hàng đơn vị lên LCD ACALL WRITETEXT UPDATE: MOV A,#75 ; xuất kí tự “K” lên LCD CALL WRITETEXT MOV A,#71 CALL WRITETEXT MOV R3,0H ; lưu giá trị đơn vị cũ vào R3 CALL READADC ; đọc ADC ; xuất kí tự “G” lên LCD INIT_LCD: CALL DISPLAYADC ; tách số giá trị đọc từ ADC MOV A,R3 ; lưu giá trị cũ vào A CJNE A,0H,MAIN ; giá trị cũ khác giá trị mới, xuất giá trị SJMP UPDATE ; giá trị cũ = giá trị mới, kiểm tra lại MOV A, #38H ; chương trình cấu hình LCD ACALL WRITECOM MOV A, #0EH ACALL WRITECOM MOV A, #06H ACALL WRITECOM MOV A, #0CH ACALL WRITECOM RET CLEAR: MOV A, #01H ; chương trình xóa hình ACALL WRITECOM RET WRITECOM: ; chương trình viết lệnh lên LCD SETB LCD_E CLR LCD_RS MOV P2, A CLR LCD_E ACALL WAIT_LCD RET WRITETEXT: ; chương trình viết kí tự lên LCD SETB LCD_E SETB LCD_RS MOV P2, A CLR LCD_E ACALL WAIT_LCD RET DISPLAYSTRING:PUSH 0H ; chương trình xuất chuỗi lên LCD LOOP: MOV DPTR, #MESSAGE MOV R0,A MOVC A,@A+DPTR JZ EXIT ACALL WRITETEXT EXIT: MOV A,R0 INC A SJMP LOOP POP 0H RET READADC: SETB START ; chương trình đọc ADC, SET chân START CLR START ; bắt đầu chuyển đổi ACALL DELAY_ADC ; chờ ADC chuyển đổi SETB OE ; cho phép đọc liệu MOV A,P1 MOV R0,A ; lưu giá trị đọc vào R0 RET WAIT_LCD: MOV R6,#10 DL1: MOV R7, #250 DJNZ R7, $ ; delay chờ LCD DJNZ R6,DL1 RET DELAY_ADC: MOV R4, #100 ; delay chờ ADC DJNZ R4, $ RET DISPLAYADC: MOV A,R0 ; tách số giá trị đọc từ ADC MOV B,#10 DIV AB MOV R0, B MOV B,#10 DIV AB MOV R1, B MOV B,#10 DIV AB MOV R2, B RET MESSAGE: USD",0 DB "10.0 USD",0,"12.0 USD",0,"14.5 USD",0,"20.0 USD",0,"18.0 USD",0,"16.5 END Bài tập : viết chương trình làm Đồng hồ điện tử hiển thị LCD ( phút giây) Đồng hồ bắt đầu chạy ở 00 :00 phút : 00 giây Thiết kế phần cứng: Code: MAIN: LOOPP: LCD_RS BIT P3.0 LCD_E BIT P3.1 ORG 0000H MOV R0,#0 ; giá trị giây, lúc đầu giay = MOV R1,#0 ; giá trị phút, lúc đầu phút = MOV R2,#0 ; giá trị giờ, lúc đầu = CALL CLEAR ; xóa hình LCD CALL INIT_LCD ; cấu hình cho LCD MOV A,R2 ; lưu giá trị vào A CALL TACH_SO ; tách số giá trị xuất LCD XUAT: INIT_LCD: MOV A,#0 CALL DISPLAYSTRING MOV A,R1 ; lưu giá trị phút vào A CALL TACH_SO ; tách số giá trị phút xuất LCD MOV A,#5 ; xuất chuỗi “PHUT” LCD CALL DISPLAYSTRING MOV A,R0 ; lưu giá trị giây vào A CALL TACH_SO ; tách số giá trị giây xuất LCD MOV A,#11 ; xuất chuỗi “GIAY” LCD CALL DISPLAYSTRING INC R0 ; tăng giây lên CJNE R0,#60,XUAT ; giây khác 60, xuất LCD MOV R0,#0 ; giây 60, gán giây = INC R1 ; tăng phút lên CJNE R1,#60,XUAT ; phút khác 60, xuất LCD MOV R1,#0 ; phut = 60, phút = INC R2 ; tăng lên CJNE R2,#24,XUAT ; khác 24, xuất LCD MOV R2,#0 ; = 24, = CALL DELAY ; delay giây SJMP LOOPP ; xuât LCD MOV A, #38H ; chương trình cấu hình LCD ACALL WRITECOM MOV A, #0EH ACALL WRITECOM ; xuất chuỗi “GIO” MOV A, #06H ACALL WRITECOM MOV A, #0CH ACALL WRITECOM RET CLEAR: MOV A, #01H ; chương trình xóa hình ACALL WRITECOM RET WRITECOM: SETB LCD_E CLR LCD_RS MOV P2, A CLR LCD_E ; chương trình viết lệnh lên LCD ACALL WAIT_LCD RET WRITETEXT: ; chương trình viết kí tự lên LCD SETB LCD_E SETB LCD_RS MOV P2, A CLR LCD_E ACALL WAIT_LCD RET DISPLAYSTRING:PUSH 0H ; chương trình xuất chuỗi lên LCD LOOP: MOV DPTR, #MESSAGE MOV R0,A MOVC A,@A+DPTR JZ EXIT ACALL WRITETEXT EXIT: MOV A,R0 INC A SJMP LOOP POP 0H RET WAIT_LCD: MOV R6,#10 DL1: MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 ; chương trình chờ LCD RET TACH_SO: BO_QUA: MOV B,#10 ; chương tình tách số hiển thị lên LCD DIV AB ; chia A cho 10 JZ BO_QUA ; A= khơng hiển thị phần chục LCD ADD A,#30H ; A khác 0, cộng thêm 30H để mã ASCII CALL WRITETEXT ; viết kí tự lên LCD MOV A,B ; xuất phần đơn vị LCD ADD A,#30H CALL WRITETEXT RET DELAY: MOV R6,#250 DLDL: MOV R7,#250 DLDLDL: MOV R5,#8 DJNZ R5,$ ; delay 1s DJNZ R7,DLDLDL DJNZ R6,DLDL RET MESSAGE: DB "GIO:",0,"PHUT:",0,"GIAY",0 END ... USD",0,"16.5 RANK3: RANK4: ; xuất string END Bài tập : Hãy thực tập 4A Nhưng tự thiết kế phần cứng.Thiết kế sơ đồ phần cứng Proteus Và chạy mô phần mềm Khi vi? ??t chương trình khơng dùng lệnh MOVX khơng... MOV R7,#250 ; chương trình tạo delay 0.125s DL1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DL1 RET END Bài tập : 3A: Vi? ??t chương trình đếm từ 00 tới 99 Hiển thị led đoạn Cứ sau 0.1 giây tăng lên số sau Tới... tạo hiệu ứng chạy ; dịch phải R2 tạo hiệu ứng chạy ; dịch phải R3 tạo hiệu ứng chạy Bài tập : (Bắt buộc) 2A: Vi? ??t chương trình đếm từ tới Hiển thị led đoạn hàng đơn vị Cứ sau giây tăng lên số
- Xem thêm -

Xem thêm: BÀI tập lớn vi xử lí,