单片机试验源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验指导书(实验源程序)
实验二、三I/O接口实验
1、输出实验
例1:
ORG 0000H
AJMP START ;跳转到初始化程序
ORG 0033H
;----- 主程序开始-----
START: MOV P1,#0FFH ;是所有LED熄灭
ACALL DELAY ;调用延时子程序
CLR ;输出低电平,使LED3点亮
ACALL DELAY ;调用延时子程序
SETB ;输出高电平,使LED3熄灭
CLR ;输出低电平,使LED4点亮
ACALL DELAY ;调用延时子程序
SETB ;输出高电平,使LED4熄灭
CLR ;输出低电平,使LED5点亮
ACALL DELAY ;调用延时子程序
SETB ;输出高电平,使LED5熄灭
CLR ;输出低电平,使LED6点亮
ACALL DELAY ;调用延时子程序
MOV P1, #0F0H ;LED3~LED6全部发光
ACALL DELAY ;调用延时子程序
AJMP START ;返回到标号START处再循环
;----- 延时子程序-----
DELAY: MOV R5,#10
LOOP: MOV R6,#200
LOOP1: MOV R7,#250
LOOP2: DJNZ R7,LOOP2
DJNZ R6,LOOP1
DJNZ R5,LOOP
RET
例2:
ORG 0000H
AJMP START ;跳转到初始化程序
ORG 0033H
;----- 主程序开始-----
START: MOV P1,#0FFH ;是所有LED熄灭
ACALL DELAY ;调用延时子程序
MOV ACC,#0FEH ;ACC中先装入LED3亮的数据(二进制的)
MOV P1,ACC ;将ACC的数据送P1口
ACALL DELAY ;调用延时子程序
MOV R0,#03H ;上句送到P1口的数据就点亮了LED1,所以将数据再移
动3次就完成一个4位流水过程
LOOP3: RL A ;将ACC中的数据左移一位
MOV P1,A ;把ACC移动过的数据送p1口显示
ACALL DELAY ;调用延时子程序
DJNZ R0,LOOP3 ;没有移动够4次继续移动
MOV P1, #0F0H ;LED3~LED6全部发光
ACALL DELAY ;调用延时子程序
AJMP START ;返回到标号START处再循环
;----- 延时子程序-----
DELAY: MOV R5,#10
LOOP: MOV R6,#200
LOOP1: MOV R7,#250
LOOP2: DJNZ R7,LOOP2
DJNZ R6,LOOP1
DJNZ R5,LOOP
RET
2、输入实验
例1:
;****************************************************************
;* K1控制LED3亮灭交替*
;****************************************************************
org 0
star: mov p1,#0h
mov p3,#0ffh
st1: jb ,$
jnb ,$
cpl
sjmp st1
end
例2:
;****************************************************************************** ;* 按压实验板上的按钮K1,控制的LED亮灭*
;* 按压K1,LED点亮,再次按压K1,LED熄灭* ;* 程序没有进行按键消抖动处理,控制结果会因为按键抖动而出错*
;* 按压K1十次,大概有3~5次输出会因为按键抖动而发生错误* ;* 实验时请多按几次,观察一下效果,加深对按键消抖动重要性的认识*
;****************************************************************************** ORG 0000H
AJMP START ;跳转到初始化程序
ORG 0033H
START: MOV SP,#60H ;SP初始化
MOV P3,#0FFH ;端口初始化
MAIN: JB ,MAIN ;检测按键K1有没有按下
CPL ;执行按键命令,改变指示灯状态
JNB ,$ ;等待按键K1释放
AJMP MAIN ;返回重新检测按键
END
例3:
;****************************************************************************** ;* 按压实验板上的按钮K1,控制的LED亮灭* ;* 按压K1,LED点亮,再次按压K1,LED熄灭* ;* 程序进行了按键消抖动处理,不会出现控制结果出错的现象*
;* 由此可以看出按键软件消抖动的功效*
;******************************************************************************
ORG 0000H
AJMP START ;跳转到初始化程序
ORG 0033H
START: MOV SP,#60H ;SP初始化
MOV P3,#0FFH ;端口初始化
MAIN: JB ,MAIN ;检测按键有没有按下
ACALL YS20ms ;消前沿抖动延时,实现软件去抖动
JB ,MAIN ;再次检测按键,如果为高电平,则是抖动
CPL ;执行按键命令,改变指示灯状态
JNB ,$ ;等待按键释放
AJMP MAIN ;返回重新检测按键
YS20ms: MOV R7,#40 ;延时20ms子程序
YS1: MOV R6,#229
DJNZ R6,$
DJNZ R7,YS1
RET