单片机试验源程序文件Word格式.docx

上传人:b****1 文档编号:13299002 上传时间:2022-10-09 格式:DOCX 页数:12 大小:13.96KB
下载 相关 举报
单片机试验源程序文件Word格式.docx_第1页
第1页 / 共12页
单片机试验源程序文件Word格式.docx_第2页
第2页 / 共12页
单片机试验源程序文件Word格式.docx_第3页
第3页 / 共12页
单片机试验源程序文件Word格式.docx_第4页
第4页 / 共12页
单片机试验源程序文件Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

单片机试验源程序文件Word格式.docx

《单片机试验源程序文件Word格式.docx》由会员分享,可在线阅读,更多相关《单片机试验源程序文件Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

单片机试验源程序文件Word格式.docx

P1.1输出高电平,使LED4熄灭

CLRP1.2;

P1.2输出低电平,使LED5点亮

SETBP1.2;

P1.2输出高电平,使LED5熄灭

CLRP1.3;

P1.3输出低电平,使LED6点亮

MOVP1,#0F0H;

LED3~LED6全部发光

AJMPSTART;

返回到标号START处再循环

-----延时子程序-----

DELAY:

MOVR5,#10

LOOP:

MOVR6,#200

LOOP1:

MOVR7,#250

LOOP2:

DJNZR7,LOOP2

DJNZR6,LOOP1

DJNZR5,LOOP

RET

例2:

MOVACC,#0FEH;

ACC中先装入LED3亮的数据(二进制的11111110)

MOVP1,ACC;

将ACC的数据送P1口

ACALLDELAY;

MOVR0,#03H;

上句送到P1口的数据就点亮了LED1,所以将数据再移

动3次就完成一个4位流水过程

LOOP3:

RLA;

将ACC中的数据左移一位

MOVP1,A;

把ACC移动过的数据送p1口显示

DJNZR0,LOOP3;

没有移动够4次继续移动

MOVP1,#0F0H;

2、输入实验

****************************************************************

*K1控制LED3亮灭交替*

org0

star:

movp1,#0h

movp3,#0ffh

st1:

jbp3.2,$

jnbp3.2,$

cplp1.0

sjmpst1

end

******************************************************************************

*按压实验板上的按钮K1,控制P1.0的LED亮灭*

*按压K1,LED点亮,再次按压K1,LED熄灭*

*程序没有进行按键消抖动处理,控制结果会因为按键抖动而出错*

*按压K1十次,大概有3~5次输出会因为按键抖动而发生错误*

*实验时请多按几次,观察一下效果,加深对按键消抖动重要性的认识*

ORG0000H

AJMPSTART;

MOVSP,#60H;

SP初始化

MOVP3,#0FFH;

端口初始化

MAIN:

JBP3.2,MAIN;

检测按键K1有没有按下

CPLP1.0;

执行按键命令,改变P1.0指示灯状态

JNBP3.2,$;

等待按键K1释放

AJMPMAIN;

返回重新检测按键

END

例3:

*程序进行了按键消抖动处理,不会出现控制结果出错的现象*

*由此可以看出按键软件消抖动的功效*

ORG0000H

AJMPSTART;

ORG0033H

MOVSP,#60H;

MOVP3,#0FFH;

JBP3.2,MAIN;

检测按键P3.2有没有按下

ACALLYS20ms;

消前沿抖动延时,实现软件去抖动

JBP3.2,MAIN;

再次检测按键,如果为高电平,则是抖动

CPLP1.0;

JNBP3.2,$;

等待按键释放

AJMPMAIN;

YS20ms:

MOVR7,#40;

延时20ms子程序

YS1:

MOVR6,#229

DJNZR6,$

DJNZR7,YS1

实验四多级外部中断控制实验

例程:

************************************************************************

*INT0,INT1为边沿触发方式,INT1为高级中断*

*主程序中8个LED轮流闪烁*

*外中断程序0中,8个指示灯同时闪烁8次*

*外中断程序1中,左右4个指示灯交替闪烁*

*因为INT1为高级中断,所以INT1中断可以中断INT0中断程序*

*即当按压K1进入外中断0时,8个LED同时闪烁,此时按压K2可以中断*

*TIN0的执行。

相反,当INT1中断后,按压K1则不能中断INT1的执行*

************************************************************************

AJMPSTART

ORG0003H

JMPPGINT0

ORG0013H

JMPPGINT1

ORG0033H

MOVP0,#0FFH

MOVP1,#0FFH

MOVP2,#0FFH

MOVP3,#0FFH

MOVIE,#10000101B;

INT0,INT1中断使能

MOVIP,#00000100B;

INT1中断优先

MOVTCON,#00000000B;

INT0,INT1为电平触发

MOVSP,#60H

MOVA,#0FEH

MOVP1,A

CALLDELAY

RLA

JMPLOOP

JMPMAIN

PGINT0:

PUSHACC

MOVR2,#8

LOOP0:

MOVP1,#00H

DJNZR2,LOOP0

POPACC

RETI

PGINT1:

PUSHACC

MOVR3,#8

MOVP1,#0FH

MOVP1,#0F0H

DJNZR3,LOOP1

********延时子程序********

MOVR4,#80

D1:

D2:

MOVR6,#228

DJNZR6,$

DJNZR5,D2

DJNZR4,D1

END

实验五定时器/计数器实验

程序一:

ORG000BH;

定时器0的中断向量地址

AJMPTIME0;

跳转到真正的定时器程序处

ORG0030H

MOVP1,#0FFH;

关所有灯

MOVTMOD,#00000001B;

定时/计数器0工作于方式1

MOVTH0,#15H

MOVTL0,#0A0H;

即数5536

SETBEA;

开总中断允许

SETBET0;

开定时/计数器0允许

SETBTR0;

定时/计数器0开始运行

AJMPLOOP;

真正工作时,这里可写任意程序

TIME0:

;

定时器0的中断处理程序

PUSHPSW;

将PSW和ACC推入堆栈保护

CPLP1.0

MOVTH0,#15H

MOVTL0,#0A0H;

重置定时常数

POPPSW

END

程序二:

AT0:

MOVTMOD,#61H;

设置T1为计数器,工作于方式2;

设置T0为定时器,工作于方式1

MOVTL1,#246

MOVTH1,#246

SETBTR1

AT1:

CPLP1.7

AT2:

MOVTL0,#00H;

MOVTH0,#4CH;

即数15536

SETBTR0

JNBTF0,$

CLRTF0

CPLP1.0

JNBTF1,AT2

CLRTF1

SJMPAT1

实验六数码管显示实验

;

**********数码管显示"

6"

的程序1**********

CLRP0.0;

P0.0输出低电平,点亮数码管段码"

a"

SETBP0.1;

P0.1输出高电平,熄灭数码管段码"

b"

CLRP0.2;

P0.2输出低电平,点亮数码管段码"

c"

CLRP0.3;

P0.3输出低电平,点亮数码管段码"

d"

CLRP0.4;

P0.4输出低电平,点亮数码管段码"

e"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1