实验四P1口实验.doc
文本预览下载声明
实验四 P1口实验
一、实验目的:
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
3.学习P1口既做输入又作为输出的使用方法。
二、实验设备:
微机、Keil2、Proteus7.10
三、实验内容:
1. P1口既做输入又作为输出,编写程序,使发光二极管以不同方式点亮。
2.设计完成一个七键的电子琴。
四、实验原理:
P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。80C51中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个I/O输入。
可以用第一个实验做验证。先按要求编好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
在第一个实验中应利用JMP @A+DPTR,实现转移。该方法的优点是设计简单,转移表短,但转移表大小长度必须小于256字节。
再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,二是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振要求为12MHZ,则一个机器周期为1us。现要写一个延时程序,可大致写出如下:
MOV R7,#X1
LOOP2: MOV R6,#X2
LOOP1: MOV R5, #X3
DJNZ R5, $
DJNZ R6,LOOP1
DJNZ R7,LOOP2
请自行求出X1,X2,X3值。
五、实验步骤:
1.设计电路开关K1接P1.0;K2接P1.1;4个发光二极管(L1~L4)接P1.2~P1.5。
编写程序,实现如下功能。
汽车转向灯功能:
??? (1)K1接高电平K2接低电平时,(L3、L4)灭,(L1、L2)以一定频率闪烁(4Hz),
即左转向;
??? (2)K1接低电平K2接高电平时,(L1、L2)灭,(L3、L4)以一定频率闪烁(4Hz);
即右转向;
??? (3)K1、K2同时接低电平时,发光二极管全灭;
??? (4)K1、K2同时接高电平时,发光二极管全亮。
2.试设计电路并编写程序完成一个七键电子琴的功能。要求能产生1~7的声音每个声音响0.5秒并能显示音阶。
六、实验报告要求:
1.在实验报告中请将实验中所设计的实验电路图附上。
2.在实验报告中请将实验中所编写的实验程序的程序框图及源代码附上。
261.6 277.2 293.7 311.1 329.6 349.2 370.0
源代码
ORG 0000H
AJMP START
ORG 0030H
START:
CLR A
CLR C
MOV 33H,P1
MOV 30H,#00H
MOV A,#03H
ANL A,33H
SUBB A,#00H
JZ DDD
SUBB A,#01H
JZ BBB
SUBB A,#01H
JZ AAA
SUBB A,#01H
JZ CCC
AAA:
MOV C,30H
MOV P1.2,C
MOV P1.3,C
SETB P1.4
MOV C,30H
MOV P1.5,C
ACALL DELAY
MOV C,30H
MOV P1.4,C
SETB P1.5
ACALL DELAY
MOV 33H,P1
MOV A,#03H
ANL A,33H
SUBB A,#02H
JZ AAA
SJMP START
BBB:
MOV C,30H
MOV P1.4,C
MOV P1.5,C
SETB P1.2
MOV C,30H
MOV P1.3,C
ACALL DELAY
MOV C,30H
MOV P1.2,C
SETB P1.3
ACALL DELAY
MOV 33H,P1
MOV A,#03H
ANL A,33H
SUBB A,#01H
JZ BBB
SJMP START
CCC:
MOV C,30H
MOV P1.2,C
MOV P1.3,C
MOV P1.4,C
MOV P1.5,C
MOV 33H,P1
MOV A,#03H
ANL A,33H
SUBB A,#03H
JZ CCC
SJMP START
DDD:
SETB P1.2
SETB P1.3
SETB P1.4
SETB P1.5
MOV 33H,P1
MOV A,#03H
ANL A,33H
显示全部