单片机接口技术及实验附原理图及源程序Word文档格式.docx
《单片机接口技术及实验附原理图及源程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机接口技术及实验附原理图及源程序Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0PR0
ORG0100H
MAIN:
MOVP1,#0FFH
MOVSP,#60H
SETBEX0
SETBIT0
SETBEA
MOVC,P1.2
MOV50H,C
MOVC,P1.3
MOV51H,C
JBP1.0,NEXT1
JNBP1.0,NEXT2
NEXT1:
JBP1.1,CIRCLE1
JNBP1.1,CIRCLE2
NEXT2:
JBP1.1,CIRCLE3
JNBP1.1,CIRCLE4
CIRCLE1:
MOVA,#80H
LJMPSTEP0
CIRCLE2:
MOVA,#0C0H
CIRCLE3:
MOVA,#0AAH
CIRCLE4:
MOVA,#0E0H
STEP0:
MOVP2,A
JB50H,S1
JNB50H,S2
STEP1:
JB51H,LOOP1
JNB51H,LOOP2
S1:
LCALLDELAY1
LJMPSTEP1
S2:
LCALLDELAY2
DELAY1:
MOVR7,#100
D1:
MOVR6,#100
D2:
MOVR5,#10
D3:
DJNZR5,D3
DJNZR6,D2
DJNZR7,D1
RET
DELAY2:
MOVR7,#200
D4:
D5:
D6:
DJNZR5,D6
DJNZR6,D5
DJNZR7,D4
RET
LOOP1:
RLA
LJMPSTEP0
LOOP2:
RRA
ORG0400H
INT0PR0:
MOVC,P1.2
JBP1.0,WORK1
JNBP1.1,WORK2
WORK1:
JBP1.1,L1
JNBP1.1,L2
WORK2:
JBP1.1,L3
JNBP1.1,L4
L1:
LJMPPASS
L2:
L3:
L4:
PASS:
RETI
END
实验三七段LED数码管控制实验
1.实验采用4位一体的数码管,用P1口通过驱动芯片控制段码输出信号线,P0口
通过驱动芯片控制位选线:
(1)当开关K0接低电平时,第一位依次显示0~F,然后第二位、第三位、第四
位,再循环回第一位。
(2)当开关K0接高电平时,四位动态显示“HELP”
main:
movp2,#0ffh
setbp1.0
movdptr,#tab
movr0,#0
mova,#00h
loop1:
movr0,#00h
jnbp1.0,h
sjmploop2
h:
movp2,#0feh
lcalllight
movp2,#0fdh
lcalllight
movp2,#0fbh
lcalllight
movp2,#11101111b
sjmploop1
light:
jbp1.0,loop2
mova,r0
movca,a+dptr
incr0
movp0,a
lcalldelay1
cjner0,#16,light
ret
loop2:
movp0,#73h
lcalldelay1
jnbp1.0,loop1
movp0,#38h
lcalldelay1
jnbp1.0,loop1
movp2,#0fbh
movp0,#79h
movp2,#11101111b
movp0,#76h
jnbp1.0,loop1
sjmploop1
tab:
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
delay1:
MOVR3,#10
MOVR2,#100
MOVR1,#100
D0:
DJNZR1,D0
DJNZR2,D1
DJNZR3,D2
RET
end
实验四定时器中断实验
1.用T0定时器实现1秒定时,控制一个LED亮1秒,灭1秒,并不断循环。
org0000h
org000bh
ljmpt0pr0
movsp,#60h
movtmod,#01h
movth0,#0b8h
movtl0,#00h
movr0,#100
setbea
setbet0
setbtr0
loop:
sjmp$
ljmploop
t0pr0:
djnzr0,w
cplp2.7
w:
reti
end
2.
实现一个4位秒表:
(1)用开关K0模拟秒表的启动、停止、清零功能,按一次启动计时,按一次停
止,再按一次清零,在三个状态中循环。
(2)最低位按1/10秒计数,依次计数单位为1/10秒,1秒,1分
(3)要求K0使用外部中断,优先级高于T0的优先级
org0000h
org0003h
ljmpintx0
movr0,#1
movr1,#0
movr2,#0
movr3,#0
movr4,#0
movr5,#0
mova,#0
setbex0
setbit0
setbpx0
setbet0
k:
lcallaaa
jmpk
aaa:
mova,r2
lcallloop
lcallmm
mova,r3
lcallmm
mova,r4
mova,r5
ret
mm:
djnzacc,$
djnzacc,$
movca,a+dptr
ret
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
intx0:
incr0
cjner0,#1,st
st:
cjner0,#2,w
clrtr0
movr0,a
movr1,a
movr2,a
movr3,a
movr4,a
movr5,a
movth0,#0b8h
incr1
cjner1,#10,exit
incr2
cjner2,#10,exit
incr3
cjner3,#10,exit
incr4
cjner4,#6,exit
incr5
cjner5,#10,exit
exit:
reti
实验五脉冲宽度与周期测量实验
同时测量脉冲宽度和周期,由开关K0选择显示脉冲宽度还是显示脉冲周期。
ORG0000H
limpmain
ljmpt
movtmod,#oah
movth0,#48h
movtl0,#48h
setbet0
jbp1.0,b0
loop0:
jbp3.2,loop0
jnbp3.2,loop1
jbp3.2,loop2
loop3:
jnbp3.2,loop3
loop4:
jbp3.2,loop4
b0:
jbp3.2,b0
b1:
inbp3.2,b1
b2:
jbp3.2,b2
mova,tl0
subba,#48h
movb,#2
divab
movr1,b
movb,#10
movr3,b
adda,#10
movp2,#11111110b
mova,r1
lcall
lcallz
movp2,#11111101b
movp2,#11111011b
movp2,#11110111b
:
z:
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h.7fh,6fh
db0bfh,86h,0d8h,0cfh,0e6h,0edh,0fdh,87h,0ffh,0efh
org0200h
t:
incr0
实验六串行通信实验
利用串行口方式0实现一个七段数码管的显示控制,轮流显示0~9十个数码
org0000h
ajmpmain
movscon,#00h
movdptr,#table
movr0,#10
clrp1.0
NEXT:
djnzr0,send
ajmpmain
send:
clra
movca,a+dptr
movsbuf,a
jnbti,$
clrti
incdptr
acalldelay
ajmpnext
delay:
movr1,#50
loop1:
movr2,#100
loop2:
movr3,#50
djnzr3,$
djnzr2,loop2
djnzr1,loop1
table:
DB3Fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh