Thi cuối kì vi xử lý đại học bách khoa hà nội, đề thi đầy đủ và chính xác so với yêu cầu bài toán đề ra. sinh viên có thể tham khảo để học tốt vi xử lý Thi cuối kì vi xử lý đại học bách khoa hà nội, đề thi đầy đủ và chính xác so với yêu cầu bài toán đề ra. sinh viên có thể tham khảo để học tốt vi xử lý
ĐỀ 30 ;chuong trinh cong so bytes ;bai1 ;dia chi so 1: 49 ->54 ;dia so 2: 60->64 ;MSB tai o nho co dia chi nho org 50h mov R0,#54H mov R1,#64H mov R2,#4 clr C lap: mov A,@R0 addc A,@R1 mov @R0,A dec R0 dec R1 DJNZ R2,lap END ĐỀ29 ;dao dau n byte ; r1 dia chi dau ; r2 dia chi cuoi mov R1,#50H mov R2,#100H lap: mov A,@R1 cpl A inc A mov @R1,A inc R1 cjne R1,#100h,lap END ĐỀ 28 ;nhan ghi R0 voi so byte bo nho ;coi byte cao la LSB mov r1,#21h nhan_R0: mov b,r0 mov a,@r1 mul ab mov r7,a mov r6,b dec r1 ;r7 chua byte thap ;r6 chua byte cao mov b,r0 mov a,@r1 mul ab add a,r6 mov r6,a ;cat lsb vao r6 mov A,B addc A,#0 mov r5,A ;cat msb vao r5 END ĐỀ 27 ;dich so m byte bo nho di n vi tri theo lenh RL ;R0 dia chi dau byte thap 20h->22h ; bit cao nhat cua byte cao duoc dich vao bit thap nhat cua byte thap ;gia su co byte, quay 10 lan mov R7,#10h dich: mov R0,#20h ;nhap dia chi byte cao mov a,@R0 rlc a ;lay co nho cy mov R0,#22h ; lay byte thap mov R6,#3 lap: mov a,R0 rlc a mov @R0,a dec R0 djnz R6,lap djnz R7,dich here: sjmp here ĐỀ 26 ;DE26 (DONE) ;Tinh gia tri trung binh cua 10 so byte ;So dau tien o gia tri thap nhat ;gia tri trung binh luu o R2 GiatriTB: MOV R0,#30h R0 MOV R7,#10 MOV R2,#0 MOV R3,#0 loop: MOV A,@R0 MOV B,#10 DIV AB vao A, so du luu vao B ADD A,R2 ;nhap dia chi so dau tien vao ;nhap bo dem ;luu thuong so ;luu so du ;chia A cho B, ket qua luu ;Cong cac gia tri thuong so MOV R2,A ;va luu vao R2 MOV A,B ADD A,R3 ;Cong cac so du va luu vao R3 MOV R3,A INC R0 ;Tang R0 them don vi DJNZ R7,loop ;Giam R7 don vi, nhay den nhan loop neu R7#0 hieuchinh: MOV A,R3 MOV B,#10 DIV AB ADD A,R2 MOV R2,A ĐỀ25 ;tim so lan lap cua byte cho truoc B tim n byte bo nho ; R1= dia chi dau R2=do dai mov R7,#0 lap: mov A,@R1 cjne A,B,tiep inc R7 tiep: djnz R2,lap here: sjmp here END ĐỀ 24 ;tao 10 xung, tan so bat ki phat tu p0.0 p0.1 ; xung chi phat p1.1=0 mov R7,#10 setb P1.1 mov P0,#00h loop: mov R6,250 ; tao delay wait: jb P1.1,wait cpl P0.0 cpl P0.1 delay: djnz R6,delay ;cau lenh het 2us =>delay 500us cpl P0.0 cpl P0.1 djnz R7,loop END ĐỀ 23 ;viet chuong trinh xoa n byte bo nho ngoai ;dia chi bat dau tu 8000H, n movx @dptr,A inc dptr CJNE R0,#10,lap2 ;tro den #6000 de luu cac so dang ASCII ;Luu lan luot cac so ASCII vao @DPTR Tu so thu END ĐỀ 21 ;viet chuong trinh doc 16byte tu adc, cat vao bo nho bat dau boi R0 ;doc so lieu bit cua ghi trang thai ADC_status =1 ;bit phai xoa bang phan mem ;coi p0 la port in ;chan wr(p2.0) noi voi soc, rd(p2.1) noi voi OE, cs(p2.2), int(p2.3) voi EOC mov r7,#16 clr P2.2 ;chon ADC lap: clr P2.1 setb p2.0 NOP NOP clr p2.0 ;dung chuyen doi ;kiem tra suon len cua EOC wait0: jb p2.3,wait0 ;doi EOC dat tich cuc thap wait1: jnb p2.3,wait1 ;doi EOC dat tich cuc cao setb p2.1 ;cho phep doc tu ADC NOP NOP mov @R0,P0 NOP inc R0 clr P2.1 ; dung doc ADC djnz R7,lap ĐỀ 20 ;cong 10 so BCD, ket qua o dang ASCII ;input: R1 dia chi dau, R3 dai, output: sumhi equ 59h ; dia chi o nho sumlo equ 60h mov R0,#30h mov R3,#10 clr C mov A,#0 mov sumhi,#30h ;noi dung o nho lap: add A,@R1 da A jnc khongnho inc sumhi khongnho: inc R1 djnz R3,lap mov sumlo,A ;hieu chinh ascii sumlo o bai ĐỀ 19 ;dao vi tri nua byte cua n o nho tro boi DPTR,R3=n ;thanh ghi thay doi: khong push Acc push push dph push dpl clr A lap: movx A,@dptr swap A movx @dptr,A inc dptr djnz R3,lap pop dpl pop dph pop pop Acc ret END ĐỀ 18 ;ta0 byte checksum bo nho(n o nho, R2(H) R3(L): dai sau ;output: byte checksum A ;thanh ghi thay doi: khong tao_checksum: push push push push dph push dpl push Acc mov R1,#0 lap: movx A,@dptr add A,R1 mov R1,A inc dptr dec R3 cjne R3,#0FFh,jump dec R2 ;giam R2 neu R3 giam tu 00h xuong 0FFh jump: cjne R2,#0,lap cjne R3,#0,lap pop Acc pop dpl pop dph pop pop pop END ĐỀ 17 ;doc 10 byte tu p1 cua mcs-51 theo che doi thoai ;p0.1=ibf,p0.2=stb, so lieu doc duoc cat vao bo nho tro boi DPTR setb P0.2 mov dptr,#9000h mov R7,#10 lap: jb p0.1,lap mov A,P1 movx @DPTR,A clr P0.2 setb P0.2 inc dptr djnz R7,lap END ĐỀ16 ; viet chuong trinh mcs-51 nhan chuoi ki tu tu cong noi tiep bat dau ki tu #STX,ket thuc la #EOT ;cat vao bo nho tro boi dptr ;kiem tra tinh san sang cua so lieu mov TMOD,#20h ; chon timer 1, che 2, tao baudrate setb TCON.6 mov SCON,#50h ; chon mode 2, cho phep thu STX equ 30h EOT equ 3Fh mov SBUF,#STX wait: jnb RI,wait ;cho co RI len bo dem bao day clr RI ;xoa Ri bang phan mem mov A,SBUF ;dua du lieu tu bo dem sang A movx @dptr,A inc dptr cjne A,#EOT,wait here: sjmp here END ĐỀ 15 ;dieu khien timer tao ngat de tao xung vuong 50Hz tai bit P1.5 ;thach anh tan so 12Mhz => tan so timer 1Mhz ; so nhip dem thoi gian muc cao la 10000 => dung mode dem 16 bit ;gia tri nap vao ghi 65535-10000=55536D=D8F0h mov tmod,#02h ; chon timer 0, che setb p1.5 lap: mov tl0,#0f0h mov th0,#0d8h setb tr0 wait: jnb tf0,wait clr tf0 clr tr0 cpl p1.5 sjmp lap END ĐỀ 14 ;tim dia chi offset cua so byte(trong B) cho truoc mien nho dia chi 1000->1200 ;truong hop khong tim thay, tim thay nhieu so ;chua debug duoc mov dptr,#1000h mov R0,#0 ;dem so bien tim thay mov R1,#20h ;luu gia tri vi tri cua bien tim thay mov R7,#0 ;la bien dem lap: movx A,@dptr xrl A,B cjne A,#0,continue ; nhay den nhan neu k trung inc R0 mov A,dph mov @R1,A inc R1 mov A,dpl mov@R1,A inc R1 continue: inc R7 inc dptr cjne R7,#200,lap END ĐỀ 13 ; viet chuong trinh dieu khien cong p2 cua mcs-51 cong doi thoai ; p1.0=OBF(tich cuc cao),p1.1=ack(thap) ;gui 10 byte bo nho dia chi dau dptr cong theo che bat tay setb p1.1 clr p1.0 mov r7,#10 lap: movx A,@dptr mov P2,A wait: jb p1.1,wait wait2: jnb p1.0,wait2 inc dptr djnz r7,lap end ĐỀ 12 ; nhan 100 byte so lieu tu cong noi tiep mcs-51 ;cong duoc dinh nghia san che do, kiem tra tinh san sang cua cong ;so lieu cat dem dia chi dau dptr ;p0 cong noi tiep, so lieu san sang p2.0=1 doc xong gui tin hieu tra loi bang xung am qua p2.1 setb p2.1 mov R7,#100 lap: doi: jnb p2.0,doi clr p2.0 mov A,p0 movx @dptr,A clr P2.1 setb P2.1 inc dptr djnz R7,lap END ;gui tin hieu ack bao nhan xong giu lieu ĐỀ 11 ; viet chuong trinh doi n ky tu chu hoa(neu dang o chu thuong) ;co dia chi dau R0, dai R7 ;chu hoa 41H-5a,chu thuong 61H-7a lap: mov A,@R0 subb A,#061h ;anl A,#10000000b ;cjne A,#0,chutieptheo ;nhay neu co cy k phat len jb Acc.7,chutieptheo subb a,#20h mov @R0,a chutieptheo: inc R0 djnz r7,lap END ĐỀ 10 ĐỀ 09 ;cong so byte dàn ASCII ket qua dang ASCII luu vao so thu ; truong hop ket qua byte ? ; byte LSB so thu tai R0, LSB so thu tai R1 ;giong danh may sobyte equ mov R0,#20h mov R1,#30h mov R7,#sobyte clr C loop1: mov A,@R0 swap A anl A,#0f0h mov @R0,A mov A,@R1 swap A anl A,#0f0h mov @R1,A jnc khongnho add A,#10h khongnho: add A,@R0 da A swap A mov @R0,A inc R0 inc R1 djnz R7,loop1 mov R0,#20h mov R7,#sobyte ;doi sang ma ascii loop2: mov A,@R0 add A,#30H mov@R0,A inc R0 djnz R7,loop2 ĐỀ 08 ; viet dieu khien timer tao mach chia tan so che counter dau bit p1.0 ;f=f/n => cho timer dem den n/2 thi cpl p1.0 ; vi du chia 30 : dem tu fff1h ->ffffh ;lowbyte equ F1h ;highbyte equ FFh start: setb p1.0 ;mov IE,#10000010b ; cho phep ngat timer mov tmod,#00000101b ; timer 0, che counter mode auto reload mov tl0,#0F1h mov th0,#0FFh setb tr0 loop: JNB TF0,loop clr TF0 CPL P1.0 SJMP loop END ĐỀ 07 ; dich so n byte di m vi tri theo cach cua lenh RR ;R0 dia chi dau byte thap 20h->22h ; bit thap nhat cua byte thap duoc dich vao bit cao nhat cua byte cao ;gia su co byte, quay 10 lan mov R7,#10h dich: mov R0,#22h ;nhap dia chi byte thap mov a,@R0 rrc a ;lay co nho cy mov R0,#20h ; lay byte cao mov R6,#3 lap: mov a,@R0 rrc a mov @R0,a dec R0 djnz R6,lap djnz R7,dich here: sjmp here ĐỀ 06 ; viet chuong trinh doi 2n chu so thap phna dang ascii n byte dang BCD ;input R0, output: R1 byte lsb la byte cao ; BCD 0->9 ascii:30->39 mov r7,#20 lap: mov A,@R0 anl A,#0fh ;xoa bo chu so nam dau tien mov @R1,A dec R0 mov A,@R0 anl A,#0fh swap A add A,@R1 mov @R1,A dec R1 dec R0 djnz R7,lap ; xoa bo chu so tiep theo END ĐỀ 05 ;viet chuong trinh tru so byte bo nho, ket qua cat vao so bi tru ;R0: dia chi dau so bi tru, R1: so tru ; thay doi:PSW clr C push Acc mov R7,#5 lap: mov A,@R0 subb A,@R1 dec R0 dec R1 djnz R7,lap pop Acc END ĐỀ 04 ; viet chuong trinh cong so BCD n chu so bo nho ket qua cat so hang dau ; luu y truong hop co nho, gia su n=20 ;dia chi so dau R0, so thu R1, byte cao la LSB DC_so1 EQU 13h DC_so2 EQU 23h sobyte EQU CongNbyte: MOV r0,#DC_so1 hang MOV r1,#DC_so2 MOV r7,#sobyte clr C loop: MOV A,@R0 ADDC A,@R1 DA A MOV @R0,ADDC DEC R0 DEC R1 DJNZ R7,loop ;r0 tro toi byte thap nhat cua so ;r1 tro toi byte thap nhat cua so hang ;so lan loop ;nap so hang vao ghi A ;cong voi so hang ;cat kq vao o nho tro boi R0 ;giam R0 don vi ;giam R1 don vi ;giam R7 don vi va kt, re nhanh neu R7=#0 here: SJMP here ĐỀ 03 ;dem cac so duong mien nho ngoai tu 1000H->2000H so dem R2 va R3 ( R3 la byte cao) ;so duong la so co bit D7=0 mov dptr,#1000h mov R2,#0 mov R3,#0 mov R0,#4 ;nap bo dem loop1: mov R1,#250 loop2: movx A,@dptr anl A,#10000000b cjne a,#00h,sotieptheo inc R2 jnc sotieptheo inc R3 sotieptheo: inc dptr djnz R0,loop1 djnz R1,loop2 END ĐỀ 02 ;viet chuong trinh dem cac so am mien nho ngoai tro boi DPTR ;do dai R3, so dem R4 ; so am la D7=1 mov R4,#0 loop: movx A,@dptr anl A,#10000000b cjne A,#10000000b,sotieptheo inc R4 sotieptheo: inc dptr djnz R3,loop end ĐỀ 01 ;viet chuong trinh dem 100 xung tu bit P0.6 ; bat dau dem bit P0.5 chuyen tu len ;dem xong dat lai bit P0.7 bang clr p0.7 clr p0.5 mov tmod,#00000100 ;timer mode 0: Counter che bit mov ie,#10000010 ;cho phep ngat Timer0 mov TH0,#0ffh mov TL0,#09bh wait: jnb p0.5,wait setb tr0 loop: jnb TF0,loop clr TF0 setb P0.7 [...]... R7,loop ;r0 tro toi byte thap nhat cua so ;r1 tro toi byte thap nhat cua so hang ;so lan loop ;nap so hang 1 vao thanh ghi A ;cong voi so hang 2 ;cat kq vao o nho tro boi R0 ;giam R0 1 don vi ;giam R1 1 don vi ;giam R7 1 don vi va kt, re nhanh neu R7=#0 here: SJMP here ĐỀ 03 ;dem cac so duong trong mien nho ngoai tu 1000H->2000H so dem trong R2 va R3 ( R3 la byte cao) ;so duong la so co bit D7=0 mov dptr,#1000h... swap A add A,@R1 mov @R1,A dec R1 dec R0 djnz R7,lap ; xoa bo chu so 3 tiep theo END ĐỀ 05 ;viet chuong trinh tru 2 so 5 byte trong bo nho, ket qua cat vao so bi tru ;R0: dia chi dau so bi tru, R1: so tru ; thay doi:PSW clr C push Acc mov R7,#5 lap: mov A,@R0 subb A,@R1 dec R0 dec R1 djnz R7,lap pop Acc END ĐỀ 04 ; viet chuong trinh con cong 2 so BCD n chu so trong bo nho ket qua cat trong so hang dau... so n byte di m vi tri theo cach cua lenh RR ;R0 dia chi dau byte thap 20h->22h ; bit thap nhat cua byte thap duoc dich vao bit cao nhat cua byte cao ;gia su co 3 byte, quay 10 lan mov R7,#10h dich: mov R0,#22h ;nhap dia chi byte thap mov a,@R0 rrc a ;lay co nho cy mov R0,#20h ; lay byte cao mov R6,#3 lap: mov a,@R0 rrc a mov @R0,a dec R0 djnz R6,lap djnz R7,dich here: sjmp here ĐỀ 06 ; viet chuong trinh... sotieptheo inc R3 sotieptheo: inc dptr djnz R0,loop1 djnz R1,loop2 END ĐỀ 02 ;viet chuong trinh con dem cac so am trong mien nho ngoai tro boi DPTR ;do dai trong R3, so dem trong R4 ; so am la D7=1 mov R4,#0 loop: movx A,@dptr anl A,#10000000b cjne A,#10000000b,sotieptheo inc R4 sotieptheo: inc dptr djnz R3,loop end ĐỀ 01 ;viet chuong trinh dem 100 xung tu bit P0.6 ; bat dau dem khi bit P0.5 chuyen ... mov@R0,A inc R0 djnz R7,loop2 ĐỀ 08 ; viet dieu khien timer tao mach chia tan so che counter dau bit p1.0 ;f=f/n => cho timer dem den n/2 thi cpl p1.0 ; vi du chia 30 : dem tu fff1h ->ffffh ;lowbyte... ;nap so hang vao ghi A ;cong voi so hang ;cat kq vao o nho tro boi R0 ;giam R0 don vi ;giam R1 don vi ;giam R7 don vi va kt, re nhanh neu R7=#0 here: SJMP here ĐỀ 03 ;dem cac so duong mien nho ngoai... MOV A,B ADD A,R3 ;Cong cac so du va luu vao R3 MOV R3,A INC R0 ;Tang R0 them don vi DJNZ R7,loop ;Giam R7 don vi, nhay den nhan loop neu R7#0 hieuchinh: MOV A,R3 MOV B,#10 DIV AB ADD A,R2 MOV