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