单片机试验源程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档