没有合适的资源?快使用搜索试试~ 我知道了~
单片机实验P1口实验一简单I/O口扩展实验一
5星 · 超过95%的资源 需积分: 47 104 下载量 47 浏览量
2011-06-20
21:56:19
上传
评论 6
收藏 94KB DOC 举报
温馨提示
试读
12页
1. P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2. P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。
资源推荐
资源详情
资源评论
单片机实验
实验说明:实验一和二做一次 实验三和四做一次 实验五和六分别做一次
实验地点:自动化综合实验楼 419 谢建凯 13971311572
实验一 P1 口实验一
一、实验目的:
1. 学习 P1 口的使用方法。
2. 学习延时子程序的编写和使用。
二、实验设备:
EL-MUT-II 型实验箱,8051CPU 板
三、实验内容:
1. P1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2. P1 口做输入口,接八个按纽开关,以实验箱上 74LS273 做输出口,编写程序
读取开关状态,在发光二极管上显示出来。
四、实验原理:
P1 口为准双向口,P1 口的每一位都能独立地定义为输入位或输出位。作为输入位时
必须向锁存器相应位写入“1”,该位才能作为输入。8031 中所有口锁存器在复位时均置
为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。
可以用第二个实验做一下实验。先按要求编好程序并调试成功后,可将 P1 口锁存
器中置“0”,此时将 P1 做输入口,会有什么结果。
再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一
是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。
本 实 验 系 统 晶 振 为 6.144MHZ , 则 一 个 机 器 周 期 为 12÷6.144us 即
1÷0.512us。现要写一个延时 0.1s 的程序,可大致写出如下:
MOV R7,#X (1)
DEL1:MOV R6,#200 (2)
DEL2:DJNZ R6,DEL2 (3)
DJNZ R7,DEL1 (4)
上 面 MOV 、 DJNZ 指 令 均 需 两 个 机 器 周 期 , 所 以 每 执 行 一 条 指 令 需 要
1÷0.256us,现求出 X 值:
1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10⁶
指令(1) 指令(2) 指令(3) 指令(4)
所需时间 所需时间 所需时间 所需时间
X=(0.1××10⁶-
1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH
经计算得 X=127。代入上式可知实际延时时间约为 0.100215s,已经很精确了。
五、实验步骤:
执行程序 1 时:P1.0~P1.7 接发光二极管 L1~L8。
执行程序 2 时:P1.0~P1.7 接按纽开关 K1~K8;74LS273 的 SO0~SO7 接发
光二极管 L1~L8;74LS273 的片选端 CS273 接 CS0(由程序所选择的入口地址而定,
与 CSO~CS7 相应的片选地址请查看第一部分系统资源,以后不赘述)。
六、参考程序:
循环点亮发光二极管
NAME T1_1 ;P1 口输实验
ORG 0000H
LJMP START
ORG 4100H
START: MOV A,#01H
LOOP: RL A ; 左移一位,点亮下一个发光二极管
MOV P1,A
LCALL DELAY ;延时 0.1 秒
JMP LOOP
DELAY: MOV R1,#127 ; 延时 0.1 秒
DEL1: MOV R2,#200
DEL2: DJNZ R2,DEL2
DJNZ R1,DEL1
RET
END
通过发光二极管将 P1 口的状态显示
NAME T1_2 ;P1 口输入实验
OUT_PORT EQU 0CFA0H
ORG 0000H
LJMP START
ORG 4100H
START: MOV P1,#0FFH ;复位 P1 口为输入状态
MOV A,P1 ;读 P1 口的状态值入累加器 A
MOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针 DPTR
MOVX @DPTR,A ;将累加器 A 的值赋给 DPTR 指向的地址
JMP START ;继续循环监测端口 P1 的状态
END
实验二 P1 口实验二
一、实验目的:
1. 学习 P1 口既做输入又做为输出的使用方法。
2. 学习数据输入、输出程序的设计方法。
二、实验设备:
EL-MUT-III 型实验箱,8051CPU 板
三、实验原理:
P1 口的使用方法这里不讲了。有兴趣者不妨将实验例程中的“ SETB P1.0, SETB
P1.1”中的“SETB”改为“CLR”看看会有什么结果。
另 外 , 例 程 中 给 出 了 一 种 N 路 转 移 的 常 用 设 计 方 法 , 该 方 法 利 用 了 JMP
@A+DPTR 的计算功能,实现转移。该方法的优点是设计简单,转移表短,但转移表
大小加上各个程序长度必须小于 256 字节。
四、实验步骤:
K1 接 P1.0、K2 接 P1.1;
L5 接 P1.2、L6 接 P1.3;
L7 接 P1.6、8 接 P1.7。
运行实验程序,K1 做为左转弯开关,K2 做为右转弯开关。L5、L6 做为右转弯灯,
L7、L8 做为左转弯灯。
结果显示:1:K1 接高电平 K2 接低电平时,右转弯灯(L7、L8)灭,左转弯灯
(L5、L6)以一定频率闪烁;
2:K2 接高电平 K1 接低电平时,左转弯灯(L5、L6)灭,右转弯灯(L7、L8)
以一定频率闪烁;
3:K1、K2 同时接低电平时,发光二极管全灭;
4:K1、K2 同时接高电平时,发光二极管全亮。
五、参考程序:T2.ASM
NAME T2 ;P1 口输入输出实验
ORG 0000H
LJMP START
ORG 4100H
START: SETB P1.0
SETB P1.1 ;用于输入时先置位口内锁存器
MOV A,P1
ANL A,#03H ;从 P1 口读入开关状态,取低两位
MOV DPTR,#TAB ;转移表首地址送 DPTR
MOVC A,@A+DPTR
JMP @A+DPTR
TAB: DB PRG0-TAB
DB PRG1-TAB
DB PRG2-TAB
DB PRG3-TAB
PRG0: MOV P1,#00H ;向 P1 口输出#0FFH,发光二极管全灭
;此时 K1=0,K2=0
JMP START
PRG1: MOV P1,#0CH ;只点亮 L5、L6,表示左转弯
ACALL DELAY ;此时 K1=1,K2=0
MOV P1,#00H ;再熄灭 0.5 秒
ACALL DELAY ;延时 0.5 秒
JMP START
PRG2: MOV P1,#0C0H ;只点亮 L7、L8,表示右转弯
ACALL DELAY ;此时 K1=0,K2=1
剩余11页未读,继续阅读
资源评论
- zllllly2012-10-11入门级的不错选择。
- 学习的2013-04-26正好与我们的实验相匹配
- slsph5232012-12-14入门级的不错选择。确实不错 比较详细了 入门必备
- Lgs_11082014-12-01很好、、、很满意,比较详细、、、谢谢
liuxuhe330
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功