Tải bản đầy đủ (.docx) (14 trang)

bài tập thi vi xử lý bách khoa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (49.56 KB, 14 trang )

ĐỀ 30
;chuong trinh cong 2 so 4 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 thanh ghi R0 voi 1 so 2 byte trong 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 trong 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 3 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 1 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 1 don vi
DJNZ
R7,loop
;Giam R7 1 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 1 byte cho truoc trong B tim trong 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 ra tu p0.0 p0.1
; xung chi phat ra khi 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 trong bo nho ngoai
;dia chi bat dau tu 8000H, n<256 co the dung bo dem R0-R7 8bit
n equ 50


mov dptr,#8000h
mov R7,#n
mov A,#00h
lap:
movx @dptr,A
inc dptr
djnz R7,lap
ret
END
;viet chuong trinh xoa n byte trong bo nho ngoai
;dia chi bat dau tu 8000H, 256;n>65536 ta phoi hop nhieu thanh ghi 8 bit
n equ 510
mov dptr,#8000h
mov R6,#2
lapngoai:
mov R7,#255
laptrong:

mov A,#0
movx @dptr,A
inc dptr
djnz R7,laptrong
djnz R6,lapngoai
ret
END
ĐỀ 22
;viet chuong trinh con doi n so BCD trong bo nho ngoai tu dia chi 4000H sang 2n byte dang
ASCII
;cat tu dia chi 6000H
;45->34 35
n equ 20
mov R7,#n
mov R0,#10h
mov dptr,#4000h
lap:
movx A,@dptr
;Luu gia tri ma DPTR tro toi vao A
anl A,#0fh
;xoa nua cao
add A,#30h
;35h
mov @R0,A
inc R0
; Tro den vi tri tiep theo
movx A,@dptr
swap A
anl A,#0fh ;xoa nua thap
add A,#30h

;34h
mov @R0,A
inc dptr
inc R0


djnz R7,lap
mov dptr,#6000h
lap2:
dec R0
mov A,@R0
n --> 1
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 khi bit 0 cua thanh 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 do 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 9
ĐỀ 19
;dao vi tri 2 nua byte cua n o nho tro boi DPTR,R3=n
;thanh ghi thay doi: khong
push Acc
push 3
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 3

pop Acc
ret
END
ĐỀ 18
;ta0 byte checksum trong bo nho(n<65536) bang add cac byte
;dptr-> o nho, R2(H) R3(L): do dai sau
;output: byte checksum trong A
;thanh ghi thay doi: khong
tao_checksum:
push 1
push 2
push 3
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 3
pop 2
pop 1
END
ĐỀ 17
;doc 10 byte tu p1 cua mcs-51 theo che do 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 1 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 do 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 1 khi 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 0 tao ngat de tao xung vuong 50Hz tai bit P1.5
;thach anh tan so 12Mhz => tan so timer 1Mhz
; so nhip dem trong thoi gian muc cao la 10000 => dung mode 1 dem 16 bit
;gia tri nap vao thanh ghi là 65535-10000=55536D=D8F0h
mov tmod,#02h ; chon timer 0, che do 1
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 1 so 1 byte(trong B) cho truoc trong 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 thanh cong ra doi thoai
; p1.0=OBF(tich cuc cao),p1.1=ack(thap)
;gui 10 byte trong bo nho dia chi dau trong dptr ra cong theo che do 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 trong dem dia chi dau trong dptr
;p0 là cong noi tiep, so lieu san sang khi p2.0=1 doc xong gui tin hieu tra loi bang 1 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 thanh chu hoa(neu dang o chu thuong)
;co dia chi dau trong R0, do dai là R7
;chu hoa là 41H-5a,chu thuong là 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 2 so 5 byte dàn ASCII ket qua dang ASCII luu vao so thu 1
; truong hop ket qua 6 byte ?
; byte LSB so thu 1 tai R0, LSB so thu 2 tai R1
;giong trong danh may
sobyte equ 5
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 0 tao thanh mach chia tan so che do counter dau ra 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 0
mov tmod,#00000101b ; timer 0, che do counter mode 1 auto reload
mov tl0,#0F1h
mov th0,#0FFh
setb tr0
loop:
JNB TF0,loop

clr TF0
CPL P1.0
SJMP loop
END
ĐỀ 07
; dich 1 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 con doi 2n chu so thap phna dang ascii thanh 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 3 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 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
; luu y truong hop co nho, gia su n=20
;dia chi so dau trong R0, so thu 2 trong R1, byte cao la LSB
DC_so1
EQU 13h
DC_so2
EQU 23h
sobyte
EQU 4
CongNbyte:
MOV
r0,#DC_so1
hang 1
MOV r1,#DC_so2
2
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 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
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 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 tu 0 len 1
;dem xong dat lai bit P0.7 bang 1

clr p0.7
clr p0.5


mov tmod,#00000100
;timer 0 mode 0: Counter che do 8 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



×