《单片机接口技术与实验》
姓名:
学号:
年级:
专业:电子信息科学与技术
实验二并行口输入输出实验——循环彩灯控制
一、实验功能
(1).P1 口接8 个开关,P0 口接8 个灯,每个开关对应一个灯,实时读取开关状态,开关闭合时,灯亮。开关断开时,灯灭。
二、实验原理图
注意:因为P0口作为输出口时必须接上拉电阻,为简化起见,此处接到P2口上
三、实验程序
org 0000h
ljmp main
org 0100h
main: mov p1,#0ffh
mov p2,p1
ajmp main
end
(2)
一、实验功能
用5 个开关K0~K4,控制P0 口所接8 个灯的循环,各开关的功能要求如下:(1)K1~K2 分别选择灯的四种闪动方式;
(2)K3 用于控制灯的循环方式(顺时针或逆时针);
(3)K4 用于选择灯的两种循环速度
(4)K0 用于引发外部中断,在外部中断子程序中,读取通过K1-K4 所设定的循环
彩灯的工作方式,并按所设定的工作方式控制彩灯运行。
二、实验原理图
三、实验流程图
四、实验程序
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0PR0
ORG 0100H MAIN: MOV P1,#0FFH MOV SP,#60H SETB EX0
SETB IT0
SETB EA
MOV C,
MOV 50H,C
MOV C,
MOV 51H,C
JB ,NEXT1
JNB ,NEXT2 NEXT1: JB ,CIRCLE1
JNB ,CIRCLE2 NEXT2: JB ,CIRCLE3 JNB ,CIRCLE4 CIRCLE1: MOV A,#80H
LJMP STEP0 CIRCLE2: MOV A,#0C0H LJMP STEP0 CIRCLE3: MOV A,#0AAH LJMP STEP0 CIRCLE4: MOV A,#0E0H LJMP STEP0 STEP0: MOV P2,A
JB 50H,S1
JNB 50H,S2 STEP1: JB 51H,LOOP1 JNB 51H,LOOP2
S1: LCALL DELAY1 LJMP STEP1
S2: LCALL DELAY2 LJMP STEP1 DELAY1: MOV R7,#100 D1: MOV R6,#100 D2: MOV R5,#10
D3: DJNZ R5,D3
DJNZ R6,D2
DJNZ R7,D1
RET
DELAY2: MOV R7,#200 D4: MOV R6,#100 D5: MOV R5,#10
D6: DJNZ R5,D6
DJNZ R6,D5
DJNZ R7,D4
RET
LOOP1: RL A
LJMP STEP0 LOOP2: RR A
LJMP STEP0 ORG 0400H
INT0PR0:
MOV C,
MOV 50H,C
MOV C,
MOV 51H,C
JB ,WORK1
JNB ,WORK2
WORK1: JB ,L1
JNB ,L2
WORK2: JB ,L3
JNB ,L4
L1: MOV A,#80H
LJMP PASS
L2: MOV A,#0C0H
LJMP PASS
L3: MOV A,#0AAH
LJMP PASS
L4: MOV A,#0E0H
LJMP PASS
PASS: RETI
END
实验三七段 LED 数码管控制实验
一、实验功能
1.实验采用4 位一体的数码管,用P1 口通过驱动芯片控制段码输出信号线,P0 口
通过驱动芯片控制位选线:
(1)当开关K0 接低电平时,第一位依次显示0~F,然后第二位、第三位、第四
位,再循环回第一位。
(2)当开关K0 接高电平时,四位动态显示“HELP”
二、实验原理图
三、实验流程图
四、实验程序
org 0000h
ljmp main
org 0100h
main:
mov p2,#0ffh setb
mov dptr,#tab mov r0,#0
mov a,#00h
loop1: mov r0,#00h jnb ,h
sjmp loop2
h: mov p2,#0feh lcall light
mov p2,#0fdh lcall light
mov p2,#0fbh
lcall light
mov p2,#b
lcall light
sjmp loop1
light: jb ,loop2
mov a,r0
movc a,@a+dptr
inc r0
mov p0,a
lcall delay1
cjne r0,#16,light
mov r0,#0
ret
loop2: mov p2,#0feh
mov p0,#73h
lcall delay1
jnb ,loop1
mov p2,#0fdh
mov p0,#38h
lcall delay1
jnb ,loop1
mov p2,#0fbh
mov p0,#79h
lcall delay1
jnb ,loop1
mov p2,#b
mov p0,#76h
lcall delay1
jnb ,loop1
sjmp loop1
tab: db
3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
delay1:
MOV R3,#10
D2: MOV R2,#100
D1: MOV R1,#100
D0: DJNZ R1,D0
DJNZ R2,D1
DJNZ R3,D2
RET
end
实验四定时器中断实验
一、实验功能
1.用 T0 定时器实现1 秒定时,控制一个LED 亮1 秒,灭1 秒,并不断循环。
二、实验原理图
三、实验流程图
四、实验程序
org 0000h ljmp main org 000bh ljmp t0pr0 org 0100h main: mov sp,#60h mov tmod,#01h mov th0,#0b8h mov tl0,#00h mov r0,#100 setb ea setb et0 setb tr0 loop: sjmp $ ljmp loop t0pr0: djnz r0,w
cpl
mov r0,#100
w: mov th0,#0b8h
mov tl0,#00h
reti
end
2.
一、实验功能
实现一个4 位秒表:
(1)用开关K0 模拟秒表的启动、停止、清零功能,按一次启动计时,按一次停
止,再按一次清零,在三个状态中循环。
(2)最低位按1/10 秒计数,依次计数单位为1/10 秒,1 秒,1 分
(3) 要求K0 使用外部中断,优先级高于T0 的优先级
二、实验原理图
三、实验流程图
四、实验程序
org 0000h
ljmp main
org 0003h
ljmp intx0
org 000bh
ljmp t0pr0
org 0100h
main: mov tmod,#01h mov th0,#0b8h mov tl0,#00h mov p2,#0ffh mov r0,#1
mov r1,#0
mov r2,#0
mov r3,#0
mov r4,#0
mov r5,#0
mov a,#0
mov dptr,#tab setb ea
setb ex0
setb it0
setb tr0
setb px0
setb et0
k: lcall aaa
jmp k
aaa: mov p2,#0feh mov a,r2
lcall loop lcall mm
mov p2,#0fdh mov a,r3
lcall loop lcall mm
mov p2,#0fbh mov a,r4
lcall loop lcall mm
mov p2,#b
mov a,r5
lcall loop
lcall mm
ret
mm: djnz acc,$
djnz acc,$
ret
loop: movc a,@a+dptr
mov p0,a
ret
tab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh intx0: inc r0
cjne r0,#1,st
setb tr0
reti
st: cjne r0,#2,w
clr tr0
reti
w: mov a,#0
mov r0,a
mov r1,a
mov r2,a
mov r3,a
mov r4,a
mov r5,a
reti
t0pr0: mov th0,#0b8h
mov tl0,#00h
inc r1
cjne r1,#10,exit
mov r1,#0
inc r2
cjne r2,#10,exit
mov r2,#0
inc r3
cjne r3,#10,exit
mov r3,#0
inc r4
cjne r4,#6,exit
mov r4,#0
inc r5
cjne r5,#10,exit
mov r5,#0
exit: reti
end
实验五脉冲宽度与周期测量实验
一、实验功能
同时测量脉冲宽度和周期,由开关K0 选择显示脉冲宽度还是显示脉冲周期。
二、实验原理图
三、实验流程图