单片机试验源程序文件Word格式.docx
- 文档编号:13299002
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:12
- 大小:13.96KB
单片机试验源程序文件Word格式.docx
《单片机试验源程序文件Word格式.docx》由会员分享,可在线阅读,更多相关《单片机试验源程序文件Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
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"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 试验 源程序 文件
![提示](https://static.bdocx.com/images/bang_tan.gif)