Câu 10 : ết CT con đổi n ký tự Vithành chữ hoa nếu đang là chữ thường.. Biết chuỗi ký tự trong bộ nhớ có địa chỉ đầu trong R0 , độ dài trong R7.TO_UPPER:MOV A,@R0LCALL TESTJNC NOT_LOWER1
Trang 1Bài tập dài Vi xử lý
Họ và tên : Trần Tùng Sơn MSSV : 20202510 Lớp : EE2-07-k65
Mã lớp học : 141854 Giảng viên : Nguyễn Tuấn Ninh
Trang 2Bài 1: ết CT đếm số âm trong miềVi n nhớ 200 byte từ ô nhớ 123H tại RAM ngoài
ORG 30H
MOV DPTR, #123H
MOV R0,0
MOV R1, #200
lap1:
MOVX A, @DPTR
RLC A
JNC lap2
INC R0
lap2:
INC DPTR
DJNZ R2,lap1
END
Trang 3Câu 2: ết CT chuyển 2 mảng dữ Vi liệu 8 byte Biết mảng 1 có địa chỉ 1000H trong RAM ngoài và mảng 2
có địa chỉ 70H trong RAM trong ORG 30H
MOV DPTR,#1000H
MOV R0, #70H
MOV R2, #8
Lap:
MOVX A,@DPTR
XCH A,@R0
MOVX @DPTR, A
INC DPTR
INC R0
DJNZ R2,lap
END
Trang 4Câu 3: ết CT cộng hai số BCD 4 Vi chữ số trong RAM trong, kết quả cất vào sô thứ 2 Biết số ứ 1 đặt tại ô th nhớ 70H, và số thứ 2 đặt tại ô nhớ 60H
ORG 30H
MOV R0,#70H
MOV R1,#60H
MOV R2,#2
CLR C
Lap:
MOV A,@R1
ADDC A,@R0
DA A
MOV @R1,A
INC R1
INC R0
DJNZ R2, Lap
JC,Tran
MOV R1,00H
SJMP END
Tran:
MOV R1,00H
END:
END
Trang 5Câu 4: ết CT tính trung bình 8 byte Vi
trong Ram ngoài từ ô nhớ 1234H
Thương được lưu trữ trong R0 số dư
được lưu trữ trong R1
ORG 30H
MOV DPTR,#1234H
MOV R0,#00H
MOV R1,#00H
MOV R2,#8
Lap:
MOVX A,@DPTR
MOV B,#8
DIV AB
ADD A,R0
MOV R0,A
MOV A,B
ADD A,R1
MOV R1,A
INC DPTR
DJNZ R2,Lap
MOV A,R1
MOV B,#8
DIV AB
ADD A,R0
MOV R0,A
MOV A,B
MOV R1,A END
Trang 6Câu 5: ết CT sử dụng Timer tạo Vi xung tần số 1Hz tại chân P1.5 Biết xung nhịp thạch anh MHz ( 12 Ton =50%, Toff = 50%)
ORG 30H
MOV TMOD, #01H
Lap:
MOV R2, #10
Lap1:
MOV TH0, #3CH
MOV TL0, #0AFH
SETB TR0
Wait:
JNB TF0,Wait
CLR TR0
DJZN R2, Lap1
CPL P1.5
SJMP Lap
END
Trang 7Câu 6: ết CT tạo xung 10Hz tạVi i chân P1.0 Biết xung nhịp thạch anh 12MHz (Ton =70% và Toff=30%) ORG 30H
MOV TMOD, #01H
SETB P1.0
Bat:
MOV R2, #7
SJMP lap
Tat:
MOV R2, #3
lap
MOV TH0, #0D8H
MOV TL0, #0EFH
SETB TR0
Wait:
JNB TF0,Wait
CLR TR0
DJNZ R2, lap
JNB P1.0, Tat
SJMP Bat
END
Trang 8Câu 7: ết CT con đọc 400 byte dữ Vi liệu từ cổng nối tiếp và cất vào vùng nhớ có địa chỉ đầu 100H.biết cổng nối tiếp đã được khởi tạo sẵn, cổng cho phép đọc khi cờ RI =1, và cờ RI sẽ tự xóa khi đọc xong 1 byte
MOV R0,#200
MOV R1,#2
MOV DPTR,#100H
Lap:
JNB RI, Lap
MOV A,SBUF
MOVX @DPTR,A
CLR RI
INC DPTR
DJNZ R0, Lap
MOV R0,#200
DJNZ R1, Lap
RET
Trang 9Câu 8: ết CT điều khiển đèn giao Vi thông tại 1 ngã tư theo yêu cầu sau: Biết điều khiển 0 là đèn sáng , 1 là đèn tắt
MAIN:
MOV A,#25
MOV P1,#11011110B
LJMP DELAY
MOV A,#3
MOV P1,#11011101B
LJMP DELAY
MOV A,#33
MOV P1,11110011B
LJMP DELAY
MOV A,#3
MOV P1,11101011B
LJMP DELAY
LJMP MAIN
DELAY:
MOV TMOD,#01H
CLR TF0
MOV R0,#20
LAP:
MOV TH0,#3CH
MOV TL0,#0AFH
Trang 10SETB TR0
WAIT
JNB TF0,WAIT
CLR TR0
CLR TF0
DJNZ R0,LAP
RET
Câu 9 : ết CT hiêVi n thi trên 2 LED 7 thanh đếm lùi từ 20s với sơ đô phân cứng SV tư đề xuât
Trang 11Sử dụng Port2 của VĐK làm port dữ ệu, và 2 chân P3.0 và P3.1 điều khiển quét li LED
ORG 0000H
MAIN:
MOV R0,#20
DEM_LUI:
MOV R1,#125
LCALL HIEN_THI
DJNZ R0,DEM_LUI
SJMP MAIN
HIEN_THI:
MOV A,R0
MOV B,#10
DIV AB
LCALL GIAI_MA
Trang 12MOV P2,A
SETB P3.0
MOV A,#4
LCALL DELAY_A_MS CLR P3.0
MOV A,B
LCALL GIAI_MA MOV P2,A
SETB P3.1
MOV A,#ON
LCALL DELAY_A_MS CLR P3.1
DJNZ R1,HIEN_THI RET
DELAY_A_MS: MOV TMOD,#01H LOOP: CLR TF0 MOV TH0,#0FCH MOV TL0,#18H SETB TR0
WAIT:
JNB TF0,WAIT CLR TR0
DJNZ 0E0H,LOOP RET
Trang 13MOV DPTR,#MA_SO
MOVC A,@A+DPTR
RET
MA_SO:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
Trang 14Câu 10 : ết CT con đổi n ký tự Vi
thành chữ hoa (nếu đang là chữ
thường) Biết chuỗi ký tự trong bộ
nhớ có địa chỉ đầu trong R0 , độ dài trong R7
TO_UPPER:
MOV A,@R0
LCALL TEST
JNC NOT_LOWER1
SUBB A,#20H
MOV @R0,A
NOT_LOWER1:
INC R0
DJNZ R7,TO_UPPER
RET
TEST:
SETB C
CJNE A,#122,NOT_EQ1
SETB C
SJMP EXIT
NOT_EQ1:
JNC EXIT
CLR C
CJNE A,#97
SETB C
SJMP EXIT
NOT_EQ2