安徽大学历次单片机实验报告.docx

上传人:b****7 文档编号:9526965 上传时间:2023-02-05 格式:DOCX 页数:16 大小:88.31KB
下载 相关 举报
安徽大学历次单片机实验报告.docx_第1页
第1页 / 共16页
安徽大学历次单片机实验报告.docx_第2页
第2页 / 共16页
安徽大学历次单片机实验报告.docx_第3页
第3页 / 共16页
安徽大学历次单片机实验报告.docx_第4页
第4页 / 共16页
安徽大学历次单片机实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

安徽大学历次单片机实验报告.docx

《安徽大学历次单片机实验报告.docx》由会员分享,可在线阅读,更多相关《安徽大学历次单片机实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

安徽大学历次单片机实验报告.docx

安徽大学历次单片机实验报告

单片机实验报告

学号:

____________姓名:

____________

1、实验目的:

1.实验一的目的:

掌握汇编语言设计和调试方法,熟悉键盘操作;

2.实验二的目的:

掌握汇编语言设计和调试方法;

3.实验三的目的:

进一步掌握汇编语言设计和调试方法。

二、实验设备:

装有KeiluVision的计算机1台(本人用的是装有KeiluVision2的

计算机)

3、实验内容:

实验一清零程序

1.实验内容:

把2000H~20FFH的内容清零

2.我的流程图、源程序及调试结果:

流程图(用EdrawMindMap7.8制作):

源程序:

ORG0000H

LJMPSTART

ORG0100H

START:

MOVR0,#0FFH

MOVDPTR,#2000H

MOVA,#00H

MAIN:

MOVX@DPTR,A

INCDPTR

DJNZR0,MAIN

SJMP$

END

调试结果:

将源程序中的MOVA,#00H改为MOVA,#0FFH,以便观察上述程序是否能够实现清零

功能。

 

实验二拆字程序

1.实验内容:

把2000H的内容拆开,高位送2001H,低位送2002H,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。

2.我的流程图、源程序及调试结果:

流程图(用EdrawMindMap7.8制作):

源程序:

ORG0000H

LJMPSTART

ORG0100H

START:

MOVDPTR,#2000H

MOVA,#0A3H;给累加器A赋一个值

MOVX@DPTR,A;将累加器A中的内容作为2000H的内容

MOVR0,A

ANLA,#0F0H

SWAPA

INCDPTR

MOVX@DPTR,A

MOVA,R0

ANLA,#0FH

INCDPTR

MOVX@DPTR,A

SJMP$

END

调试结果:

 

实验三拼字程序

1.实验内容:

把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。

2.我的流程图、源程序及调试结果:

流程图(用EdrawMindMap7.8制作):

源程序:

ORG0000H

LJMPSTART

ORG0100H

START:

MOVDPTR,#2000H

MOVA,#0B2H;给累加器A赋一个值

MOVX@DPTR,A;将累加器A中的内容作为2000H的内容

ANLA,#0FH

SWAPA

MOVR0,A

INCDPTR

MOVA,#0E5H;给累加器A赋一个值

MOVX@DPTR,A;将累加器A中的内容作为2001H的内容

ANLA,#0FH

ORLA,R0

INCDPTR

MOVX@DPTR,A

SJMP$

END

调试结果:

4、实验小结

此次实验让我基本掌握了MOVX,SWAP这两条从未用过的指令的用法,理解了地址高位与低位的含义,16位地址与8位地址的记法,DPTR作为地址指针的重要作用,并让我注意到了DEC比INC少一种用法,即有INCDPTR,却没有DECDPTR。

 

第二次单片机实验报告

学号:

____________姓名:

____________

一、实验目的:

(l)学习P1口的使用方法;

(2)学习延时子程序的编写。

2、实验必备知识:

(l)Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

(2)本实验中延时子程序采用指令循环来实现。

3、实验设备:

装有KeiluVision和STC_ISP的计算机1台

单片机芯片1片

单片机综合实验箱1个

杜邦线若干

4、实验内容:

P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

5、我的电路原理图、流程图及源程序:

1.电路原理图:

因为没有用实验室的设备完成实验,所以我用的是自己的计算机和单片机完成实验的。

其起作用的部分的电路图如下图用(Proteus7.8绘制)所示:

 

2.流程图(用EdrawMindMap7.8制作):

3.源程序:

ORG0000H

MOVA,#01111111B

JMPSTART

ORG0100H

START:

MOVP1,A

CALLDEL100ms

RRA;将A中的内容右移一位,相应地,发光二极管中低电平所处位置左移一位

JMPSTART

DEL100ms:

MOVR7,#250

DEL1:

MOVR6,#200

DEL2:

DJNZR6,DEL2

DJNZR7,DEL1

RET

END

六、思考:

1.改变延时常数,使发光二极管闪亮时间改变。

答:

如下两图所示,将晶振频率和时钟频率均选为12MHz,则一个机器周期为1us,执行一条DJNZ指令需要两个机器周期,即2us.用R6、R7分别表示其各自存储的立即数,则上述DEL100ms的延时子程序所延长的时间T=2*R6*R7us,故改变R6、R7中存储的立即数即可改变延时子程序延长的时间,从而使发光二极管闪亮时间改变。

如:

将DEL100ms的延时子程序中的MOVR7,#250改为MOVR7,#125,则DEL100ms的延时子程序延时的时间变为原来100ms的一半,即50ms.但立即数的大小有范围,对于8位单片机而言,其大小不能超过256,所以若想延长更长的时间,需要在延时程序中多加几个循环,或同时调用多个延时子程序。

 

KeiluVision2中的选项对话框

Proteus7.8中的选项对话框

2.修改程序,使发光二极管闪亮移位方向改变。

答:

将上述源程序中的RRA改为RLA则可将发光灯泡流动的方向由向左改为向右。

 

第三次单片机实验报告

学号:

____________姓名:

____________

一、实验目的:

掌握工业顺序控制程序的简单编程,中断的使用。

二、实验预备知识:

在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。

三、实验设备:

装有KeiluVision和STC_ISP的计算机1台

单片机芯片1片

单片机综合实验箱1个

杜邦线若干

四、实验内容:

由P1.0~1.6控制注塑机的七道工序,现模拟控制七只发光二极的点亮,设定每道工序时间转换为延时,P3.4为开工启动开关,低脉冲有效。

INT1为外部故障输入模拟,低电平报警。

P1.7为报警声音输出。

(可设置声光报警)

五、我的电路原理图、流程图及源程序:

1.电路原理图:

因为没有用实验室的设备完成实验,所以我用的是自己的计算机和单片机完成实验的。

现在根据题意用Proteus7.8仿真如下,其中,AT89C51的晶振已设置为12MHz,蜂鸣器的驱动电压已改为较低的1V,蜂鸣器的低电平端接红色超亮发光二级光的正极:

图一原理图

图二蜂鸣器的参数

 

2.流程图(用EdrawMindMap7.8制作):

3.源程序:

(1)仿真时用的程序,其原理图如图一所示:

ORG0000H

JMPSTART

ORG0013H

JMPINT_1

ORG0100H

JMPLIGHT

START:

MOVA,#0FEH

MOVR0,#7H

SETBIT0

SETBEX1

SETBEA

MOVR1,#1H

HERE:

JBP3.4,HERE;保证只有开工启动开关按下时才执行后续程序

LIGHT:

MOVP1,A;按键按下开始工序

CALLDEL

RLA

DJNZR0,LIGHT

MOVP1,#0FFH

JMP$;等待中断

INT_1:

PUSHPSW;中断工序并声光报警

PUSHACC

MOVP1,#7FH

POPACC

POPPSW

RETI

DEL:

MOVR7,#25;延时1s

DEL1:

MOVR6,#200

DEL2:

MOVR5,#100

DEL3:

DJNZR5,DEL3

DJNZR6,DEL2

DJNZR7,DEL1

RET

END

(2)做实验时用的程序(此程序是在以前写作业和自己训练时编写的程序上改编而成,因而不太简洁),其原理图未画出,但注释中已解释得很明白:

ORG0000H

JMPSTART

ORG0013H

JMPKEY1

ORG0100H

JMPMAIN

START:

SETBIT0

SETBEX1

SETBEA

MOVA,#0FEH

HERE:

JBP3.4,HERE;保证只有开工启动开关按下时才执行后续程序

MOVR3,#7H

MAIN:

MOVR1,#248;可与下一条语句及延时程序搭配,使2ms的延时程序变为延时1s的程序

MOVR2,#2

LIGHT:

MOVP1,A;按键按下开始工序

CALLDEL

DJNZR1,LIGHT

MOVR1,#248

DJNZR2,LIGHT

RLA

DJNZR3,MAIN

MOVP1,#0FFH

JMP$;等待中断

KEY1:

PUSHPSW

PUSHACC

MOVP1,#7FH;中断工序,光报警,我用的单片机的P1口全都接了发光二极管

CLRP2.3;声报警。

我用的单片机的P2.3接的是蜂鸣器,低电平有效

POPACC

POPPSW

RETI

DEL:

MOVR7,#25;延时2ms

DEL1:

MOVR6,#40

DEL2:

DJNZR6,DEL2

DJNZR7,DEL1

RET

END

6、思考:

若报警解除后,工序需从头开始等待开机信号,如何编程?

答:

加一个标志来表明是否是刚从中断中退出来,然后设置一个分支程序即可(由于RETI不同于RET,所以没有简单地将RETI换成相应的JMP指令跳转到程序的起始处)。

如下(在仿真时用的程序上加了三条指令):

ORG0000H

JMPSTART

ORG0013H

JMPINT_1

ORG0100H

JMPLIGHT

START:

MOVA,#0FEH

MOVR0,#7H

SETBIT0

SETBEX1

SETBEA

MOVR1,#1H;此处为添加的第一条语句

HERE:

JBP3.4,HERE

LIGHT:

MOVP1,A

CALLDEL

RLA

CJNER1,#1H,START;此处为添加的第二条语句

DJNZR0,LIGHT

MOVP1,#0FFH

JMP$

INT_1:

PUSHPSW

PUSHACC

MOVP1,#7FH

MOVR1,#0H;此处为添加的第三条语句

POPACC

POPPSW

RETI

DEL:

MOVR7,#25

DEL1:

MOVR6,#200

DEL2:

MOVR5,#100

DEL3:

DJNZR5,DEL3

DJNZR6,DEL2

DJNZR7,DEL1

RET

END

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1