单片微机原理及应用_实验一_实验指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验指导书

【实验项目】

实验一:单片微机软件实验

【实验设备】

Keil μvision4软件、计算机

【实验目的】

1、熟悉Keil μvision4操作环境

2、掌握单片机C51编程技巧

3、掌握单片机存储器读写等基本操作

【实验内容及步骤】

一、实验内容1:存储块清零

1. 实验目的

(1)掌握存储器读写方法。

(2)了解存储器的块操作方法。

(3)掌握内存数据的观察方法。

2. 实验原理

(1)数据存储类型

在讨论C51的数据类型时,必须同时提到它的存储类型,以及它与51单片机存储结构的关系,因为C51定义的任何数据类型必须以一定的方式定位在51单片机的某一存储区中,否则没有任何实际意义。

内部数据存储区可分为3个不同的数据存储类型:DATA、IDATA和BDATA。

DATA区寻址是最快的,应该把经常使用的变量放在DATA区,但是其存储空间有限,DATA区除了包含程序变量外,还包括了堆栈和寄存器组。DATA区声明中的存储类型标识符为data,声明方法为:

Unsigned int data uint_ id[8];

BDATA区是DATA中的位寻址区,在这个区中声明变量就可进行位寻址。BDATA区声明中的数据类型标识符为bdata,声明方法:

Unsigned int bdata status_byte;

IDATA区使用寄存器作为指针来进行间接寻址,常用来存放使用比较频繁的变量。与外部存储器寻址相比,它的指令执行周期和

代码长度相对较短。IDATA区声明中的存储类型标识符为idata,声明方法:

Unsigned int data uint_ id[8];

访问片外数据存储区比访问片内存储区慢,因为片外数据存储区是通过数据指针加载地址来间接寻址访问的。C51提供两种不同的数据存储类型xdata和pdata来访问片外数据存储区。PDATA区只有256字节,仅指定256字节的外部数据存储区。但XDATA区最多可达64KB,对应的xdata存储类型标识符可以指定外部数据区64KB内的任何地址。声明方法:

Unsigned int pdata uint_ id[8];

Char xdata inp_ string[16];

程序存储区只能读不能写,可能在51单片机的内部或者外部,或者内外部都有,由单片机的硬件决定,C51提供了code存储类型来访问程序存储区。声明方法:

Unsigned char code a[]={0x00,0x01,0x02,0x03,0x04,0x05};

(2)数据查看方法

通过本实验,学生可以了解单片机读写存储器的读写方法,同时也可以了解单片机编程,调试方法。如何将存储块的内容置成某固定值(如填充为0ffh),请大家完成此操作。

在仿真程序编译后:点击按钮,在点击如下图按钮后,

下方会出现Address工具栏,在Address栏中输入的地址,

其中D表示数据的位于DATA区,0x20表示所要显示的内存块的起始地址。通过改变表中地址内容,查看地址单元中的内容是否被改变。这三个按钮可以复位CPU运行程序,暂停程序。

查看不同数据存储区域的方法:

DATA区——D:8位地址

XDATA区——X:16位地址

CODE区——C:16位地址

IDATA区——I:8位地址

3. 参考程序

数据块清零参考程序。

#include

unsigned char xdata Buffer[256] _at_ 0x3000;

void main()

{

unsigned int index;

unsigned char xdata *ptr;

ptr=&Buffer;

for(index=0;index<=255;index++)

{

*ptr++=0;

}

}

4. 程序框图

数据块清零寄存器如图1-1 (a),寄存器操作流程如图1-1 (b)。

图1-1 (a)数据块清零流程图,(b)寄存器操作流程图

5. 实验报告要求

(1)按照给出的参考程序,指定存储器中某块的起始地址和长度,并能将其内容清零。参照实验原理中的“数据查看方法”,验证程序执行结果,截图保存,并解释程序实现的功能。

(2)根据流程图1-1(b),在程序模板中填入以下语句对应的程序。(附程序模板)

a. 在累加器A中写入立即数25H,向片内RAM的30H单元写入立即数78H;

b. 将片内RAM中30H单元的数据内容复制到工作寄存器R3中;

c. 向寄存器DPTR中写入立即数F637H;

d. 将DPTR寄存器的内容的低8位传给片内RAM的35H单元;

e. 将DPTR寄存器中的高8位传送给片内RAM的36单元。

程序模板:

#include

unsigned char data *iRAM=0x00; //片内RAM区定义

unsigned char data *R=0x00; //寄存器R定义

void main()

{

}

(3)实验总结与思考:观察CPU带电复位后内存单元中的数据变化情况。

二、实验内容2:二进制到BCD转换

1. 实验目的

(1)掌握简单的数值转换方法。

(2)基本了解数值的各种表达方法。

2. 实验内容

(1)编程实现将二进制码转换成BCD码。

(2)编程实现两个字节的BCD转换码换成二进制码。

3. 实验原理

计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数制之间的转换是一种基本功。

(1)十进制数

我们熟悉的十进制数有两个主要特点:

① 10个不同的数字符号:0、1、2、 (9)

②低位向高位进、借位的规律是“逢十进一”“借一当十”的原则进行计数。

相关文档
最新文档