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

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

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

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

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

单片机试验源程序文件

 

单片机实验指导书

(实验源程序)

 

实验二、三I/O接口实验

1、输出实验

例1:

ORG0000H

AJMPSTART;跳转到初始化程序

ORG0033H

;-----主程序开始-----

START:

MOVP1,#0FFH;是所有LED熄灭

ACALLDELAY;调用延时子程序

CLRP1.0;P1.0输出低电平,使LED3点亮

ACALLDELAY;调用延时子程序

SETBP1.0;P1.0输出高电平,使LED3熄灭

CLRP1.1;P1.1输出低电平,使LED4点亮

ACALLDELAY;调用延时子程序

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

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

ACALLDELAY;调用延时子程序

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

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

ACALLDELAY;调用延时子程序

MOVP1,#0F0H;LED3~LED6全部发光

ACALLDELAY;调用延时子程序

AJMPSTART;返回到标号START处再循环

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

DELAY:

MOVR5,#10

LOOP:

MOVR6,#200

LOOP1:

MOVR7,#250

LOOP2:

DJNZR7,LOOP2

DJNZR6,LOOP1

DJNZR5,LOOP

RET

例2:

ORG0000H

AJMPSTART;跳转到初始化程序

ORG0033H

;-----主程序开始-----

START:

MOVP1,#0FFH;是所有LED熄灭

ACALLDELAY;调用延时子程序

MOVACC,#0FEH;ACC中先装入LED3亮的数据(二进制的11111110)

MOVP1,ACC;将ACC的数据送P1口

ACALLDELAY;调用延时子程序

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

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

LOOP3:

RLA;将ACC中的数据左移一位

MOVP1,A;把ACC移动过的数据送p1口显示

ACALLDELAY;调用延时子程序

DJNZR0,LOOP3;没有移动够4次继续移动

MOVP1,#0F0H;LED3~LED6全部发光

ACALLDELAY;调用延时子程序

AJMPSTART;返回到标号START处再循环

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

DELAY:

MOVR5,#10

LOOP:

MOVR6,#200

LOOP1:

MOVR7,#250

LOOP2:

DJNZR7,LOOP2

DJNZR6,LOOP1

DJNZR5,LOOP

RET

2、输入实验

例1:

;****************************************************************

;*K1控制LED3亮灭交替*

;****************************************************************

org0

star:

movp1,#0h

movp3,#0ffh

st1:

jbp3.2,$

jnbp3.2,$

cplp1.0

sjmpst1

end

例2:

;******************************************************************************

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

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

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

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

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

;******************************************************************************

ORG0000H

AJMPSTART;跳转到初始化程序

ORG0033H

START:

MOVSP,#60H;SP初始化

MOVP3,#0FFH;端口初始化

MAIN:

JBP3.2,MAIN;检测按键K1有没有按下

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

JNBP3.2,$;等待按键K1释放

AJMPMAIN;返回重新检测按键

END

例3:

;******************************************************************************

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

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

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

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

;******************************************************************************

ORG0000H

AJMPSTART;跳转到初始化程序

ORG0033H

START:

MOVSP,#60H;SP初始化

MOVP3,#0FFH;端口初始化

MAIN:

JBP3.2,MAIN;检测按键P3.2有没有按下

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

JBP3.2,MAIN;再次检测按键,如果为高电平,则是抖动

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

JNBP3.2,$;等待按键释放

AJMPMAIN;返回重新检测按键

YS20ms:

MOVR7,#40;延时20ms子程序

YS1:

MOVR6,#229

DJNZR6,$

DJNZR7,YS1

RET

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

例程:

;************************************************************************

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

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

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

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

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

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

;*TIN0的执行。

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

;************************************************************************

ORG0000H

AJMPSTART

ORG0003H

JMPPGINT0

ORG0013H

JMPPGINT1

ORG0033H

START:

MOVP0,#0FFH

MOVP1,#0FFH

MOVP2,#0FFH

MOVP3,#0FFH

MAIN:

MOVIE,#10000101B;INT0,INT1中断使能

MOVIP,#00000100B;INT1中断优先

MOVTCON,#00000000B;INT0,INT1为电平触发

MOVSP,#60H

MOVA,#0FEH

LOOP:

MOVP1,A

CALLDELAY

RLA

JMPLOOP

JMPMAIN

PGINT0:

PUSHACC

MOVR2,#8

LOOP0:

MOVP1,#00H

CALLDELAY

MOVP1,#0FFH

CALLDELAY

DJNZR2,LOOP0

POPACC

RETI

PGINT1:

PUSHACC

MOVR3,#8

LOOP1:

MOVP1,#0FH

CALLDELAY

MOVP1,#0F0H

CALLDELAY

DJNZR3,LOOP1

POPACC

RETI

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

DELAY:

MOVR4,#80

D1:

MOVR5,#10

D2:

MOVR6,#228

DJNZR6,$

DJNZR5,D2

DJNZR4,D1

RET

END

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

程序一:

ORG0000H

AJMPSTART

ORG000BH;定时器0的中断向量地址

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

ORG0030H

START:

MOVP1,#0FFH;关所有灯

MOVTMOD,#00000001B;定时/计数器0工作于方式1

MOVTH0,#15H

MOVTL0,#0A0H;即数5536

SETBEA;开总中断允许

SETBET0;开定时/计数器0允许

SETBTR0;定时/计数器0开始运行

LOOP:

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

TIME0:

;定时器0的中断处理程序

PUSHACC

PUSHPSW;将PSW和ACC推入堆栈保护

CPLP1.0

MOVTH0,#15H

MOVTL0,#0A0H;重置定时常数

POPPSW

POPACC

RETI

END

程序二:

ORG0000H

AT0:

MOVP1,#0FFH

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

END

实验六数码管显示实验

;**********数码管显示"6"的程序1**********

MAIN:

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