- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实验报告
实验二 并行口输入输出实验——循环彩灯控制
任务一
实现的功能:
P1 口接 8 个开关,P0 口接 8 个灯,每个开关对应一个灯,实时读取开关状态,开关闭合时,灯亮。开关断开时,灯灭。
硬件原理图:
流程图:
开始
开始
将P1口设置成输入状态
设置开关状态,将开关状态传输给P1口
将P1口的状态传输给P0口输出到LED灯
程序:
ORG 0000H //程序入口
AJMP MAIN //跳转到主程序
ORG 0040H //主程序初始地址
MAIN: MOV P1,#0FFH //将P1口设置成输入状态
MOV P0,P1 //将P1口输入的状态传输给P0口输出
AJMP MAIN //返回主程序,循环执行主程序,保证实时
END //结束
任务二
1.实现的功能:
用 5 个开关 K0-K4,控制 P2 口所接 8 个灯的循环,各开关的功能要求如下:
(1)K1,K2 分别选择灯的四种闪动方式;
(2)K3 用于控制灯的循环方式(顺时针或逆时针);
(3)K4 用于选择灯的两种循环速度
(4)K0 用于引发外部中断,在外部中断子程序中,读取通过 K1-K4 所设定的循环彩灯的工作方式,并按所设定的工作方式控制彩灯运行。
2.硬件原理图:
3.流程图:
开始
开始
4.程序:
ORG 0000H
LJMP MAIN
ORG 0003H //外部中断0入口
LJMP PINT0
ORG 0100H
MAIN: MOV SP,#40H //设置栈底
SETB EA //打开中断允许位
SETB EX0 //打开外部中断0允许位
SETB IT0 //
MOV P1,#0FFH //将P1口设置成输入状态
JB P1.0,M //判断P1.0(K1)和P1.1(K2)状态选择闪动方式
JB P1.1,M2 //
M1: MOV P2,#01H //闪动方式1,1个灯循环移动
AJMP NEXT1 //
M2: MOV P2,#03H //闪动方式2,2个灯循环移动
AJMP NEXT1 //
M: JB P1.1,M4 //
M3: MOV P2,#07H //闪动方式3,3个灯循环移动
AJMP NEXT1 //
M4: MOV P2,#0FH //闪动方式4,4个灯循环移动
NEXT1: MOV C,P1.2 //
MOV PSW.2,C //将P1.2(K3)的状态送给PSW.2
MOV C,P1.3 //
MOV PSW.6,C //将P1.3(K4)的状态送给PSW.6
NEXT2: JB PSW.2,R //判断PSW.2(K3)状态选择循环方向
L: MOV A,P2 //
RL A //
MOV P2,A //
AJMP NEXT3 //
R: MOV A,P2 //
RR A //
MOV P2,A //
NEXT3: JB PSW.6,S2 //判断开关PSW.6(K4)状态选择闪动速度
LCALL DELAY //
S2: LCALL DELAY //
SJMP NEXT2 //循环执行闪动程序
ORG 0200H //中断程序
PINT0: JB P1.0,MO //判断P1.0(K1)和P1.1(K2)状态选择闪动方式
JB P1.1,MO2 //
MO1: MOV P2,#01H //闪动方式1,1个灯循环移动
AJMP NEXT4 //
MO2: MOV P2,#03H //闪动方式2,2个灯循环移动
AJMP NEXT4 //
MO: JB P1.1,MO4 //
MO3: MOV P2,#07H //闪动方式3,3个灯循环移动
AJMP NEXT4 //
MO4: MOV P2,#0FH //闪动方式4,4个灯循环移动
NEXT4: MOV C,P1.2 //
MOV PSW.2,C //将P1.2(K3)的状态送给PSW.2
MOV C,P1.3 //
MOV PSW.6,C //将P1.3(K4)的状态送给PSW.6
RETI //返回主程序
DELAY: MOV R5,#05H //延时程序,延时0.5s
LOOP1: MOV R6,#64H
LOOP2: MOV R7,#0FFH
LOOP3: NOP
NOP
DJNZ R7
文档评论(0)