单片机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成都理工大学
核技术与自动化工程学院
实
验
报
告
课程名称:单片机原理实验
姓名:汪缔洪
学号: 201106040308
专业:机械工程及自动化
学期: 20013-2014(2)
任课教师:刘易
实验(1)名称:存储空间的认识
实验人员:汪缔洪指导老师:刘易
实验地点:6C703 实验时间:
实验内容(实验要求、实验原理、程序设计、现象及结果):片外数据送片内相加,以及循环操作体。
程序设计包括:程序流程图、源代码以及必要的说明(对流程图和源代码的说明)一、实验要求
(1)将片内RAM2000单元的数89和片外RAM2000单元数32相加,相加结果放入片内RAM30单元。
(2) 将00~ff放入片外1000~10ff单元,加1后,再将数据放入片外2000~20ff单元。
二、实验原理
1、了解单片机的指令系统,数据传送指令、算术运算指令、逻辑运算指令、控制转移类指令以及位操作指令。其中数据传送指令的内容是将数据在单片机芯片内部或外部不同的部件之间进行传送,它是五大指令中最基础、最重要,同样也是指令条数最多的一类指令。算术运算指令,就是讲单片机芯片中的CPU进行加、减、乘除、加一、减一等不同功能的运算指令。控制转移内指令作用在于控制程序的执行顺序。
2、能够了解循环结构程序的设计。循环结构的程序一般包括4个组成部分,循环初始化、循环体、循环修改、循环的控制。①循环初始化:位于循环程序的开头,设置各个单元的初始值、数据指针以及控制循环次数的计数器初值。
②循环体:循环程序的主体。
③循环修改:每执行一次循环,就要进行一次循环计数其的修改,同时还要对相关数据及数据指针进行同步修改,这样才能为下一次的循环做好准备工作。
④、循环控制:根据循环次数计数器的现行值或其他循环控制条件来进行综合判断,从而控制程序的继续运行还是结束运行。3、访问外部RAM数据必须采用寄存器间接寻址的方式,并通过累加器A来传送(MOVX)。
三、程序设计
(一)、片外数据送片内并相加
1、程序流程图
2、程序代码:
org 0000h //定位程序的入口地址
jmp main
org 0100h
main:
mov dptr,#2000h //给数据指针赋初值
mov a,#32h
movx @dptr,a
movx a,@dptr //将片外RAM中数据送累加器mov 40h,a
clr a
movc a,@a+dptr //查表指令,取出片内ROM数据add a,40h //数据相加
da a //进行十进制调整
mov 30h,a //将所得数据放入片内30H
sjmp $ //程序循环等待
org 2000h
DB 89h, 0afh
End
(二)将数据放入片外,加1后放入另一单元
1、程序流程图
2.程序源代码
org 0000h
jmp main
org 0100h
main:
;;xram 1000h~10ffh \\分配片外1000~10ffh单元
mov r0,#00h \\寄存器R0赋初值
mov dptr,#1000h \\数据指针赋初值
mov a,#00h
loop1:
inc dptr
inc a
movx @dptr,a \\累加器数据送片外
inc r0
cjne r0,#00h,loop1 \\如果r0等于00,则跳转
mov r3,#10h
mov r4,#20h
mov r5,#00h
mov dpl,#00h
loop2:
mov dph,r3
movx a,@dptr \\片外数据送累加器
add a,#01 \\累加器数据加1
mov dph,r4
movx@dptr,a \\累加器送片外
inc dpl
inc r5
cjne r5,#00h,loop2
sjmp $
end
四、现象及结果
(一)片外数据送片内并相加
查询片外数据所用指令x:0x2000,可得结果如下:这便是我们所放入片外2000单元
的数32.相加后所
得的数据为121.
此时CY=1. (二)将数据放入片外,加1后放入另一单元
首先查询我们是否将数据放入00~ff放入片外1000~10ffh单元,在地址输入框中输入:
“x:0x1000”可得到如下的
结果:
表明我们已经将数正确的放入片外1000~10ffH地址单元。
在地址输入框输入:“
x:0x2000”得到如图所示
的结果:
由此我们已经正确的将1000~10ff单元的数+1后放入到了2000~20ff单元。
实验(2)名称:I/O口的使用及中断定时
实验人员:汪缔洪指导老师:刘易
实验地点:6C703 实验时间:
实验内容:控制流水灯移动
一、实验要求
1、使用C语言编程,使用MSC-51单片机的并口引脚控制流水
灯移动一位。
2、使用中断定时,使流水灯每隔一秒钟移动一个单位。
二、实验原理
1、单片机的并行I/O口,简称单片机的并口,是指单片机芯片提供的并行输入输出
接口。在51系列单片机中,一共有P0、P1、P2、P3四个必行口,每个并行口有8个管脚。这四个并行口不仅可以作为8位并行数据输入\输出接口使用,而且每个引脚还可以做为开关输入/输出信号单独使用。单片机的并行I/O接口除了用于上述的输入/输出控制功能外,还可以作为地址总线、数据总线以及第二功能管脚来使用。
2、在本次的实验中,我们将用到P3口的第二功能,以实现定时,中断的特殊功能。
在实现本次实验中,我们还需要用到MSC-51单片机开发板和中断。中断系统是单片机内部的重要组成部分,单片机在与外部设备进行数据交换的过程中,中断系统能够提高CPU的工作效率,在此我么需要了解中断系统的基本概念。中断,主要指单片机的CPU,正在处理某些事件时,突发的另一紧急程度更高的事,并请求单片机的CPU迅速处理。中断源,是指产生中断信号的请求来源。中断优先级,是根据中断源的轻重缓急程度来进行排队,把最紧急的中断源请求信号排为最高的执行级别。在5个中断源中,默认优先级别最高的是外部中断0,接下来的是定时/计数器0、外部中断1、定时/计数器1以及串口中断。在单片机的C51语言中,使用中断函数来实现具体的中断服务程序。
三、程序设计
(一)按键一次流水灯移位一次
1、程序流程图