### 实验一 单片机实验开发环境与汇编语言程序设计
#### 一、实验目标
本实验旨在让学生通过实际操作,深入了解单片机开发环境的使用以及基础的汇编语言程序设计方法。具体包括以下几个方面:
1. **掌握单片机开发环境Keil的基本操作方法**:学习如何在Keil环境中创建项目、编写源代码、编译链接程序等基本技能。
2. **掌握一个单片机入门程序的编写与运行方法**:学会如何编写简单的汇编语言程序,并能够在开发板上运行这些程序。
3. **熟悉单片机实验开发板各部分的功能**:了解实验开发板的组成部分及其作用,能够使用单片机实验开发板烧录并运行简单程序。
#### 二、实验准备
- **实验环境**:
- **个人计算机**:配备Windows 10操作系统。
- **软件**:安装Keil 5开发工具。
- **硬件**:使用Mini-51单片机开发板或BST-v51单片机开发板实验箱。
- **实验材料**:
- Keil 5软件。
- Mini-51或BST-v51单片机开发板。
- 实验指导书或PPT。
#### 三、实验步骤
##### 1. 单片机开发环境Keil及入门程序编写与运行
- **创建新工程**:
1. **启动Keil**:双击桌面上的Keil 5图标,打开集成开发环境。
2. **新建工程**:依次点击菜单栏中的`Project` -> `New uVision Project`,创建一个新的工程文件,例如命名为`shiyan11.uvproj`。
3. **选择目标芯片**:在弹出的对话框中选择所使用的单片机型号,如Atmel-AT89C51,然后点击“OK”。
- **编写程序**:
1. **新建并添加汇编文件**:在工程中添加一个汇编源文件,例如命名为`shiyan11.asm`。
2. **编写源代码**:在`shiyan11.asm`中编写以下程序,实现将外部存储器从1000H开始的20个字节都赋值为FFH。
```assembly
;shiyan11.asm
ORG 0000H
AJMP START
ORG 0030H
START:
MOV DPTR,#1000H
MOV R0,#20H
MOV A,#0FFH
LOOP:
MOVX @DPTR,A
INC DPTR
DJNZ R0,LOOP
SJMP $
END
```
3. **注释解释**:
- `ORG 0000H`:设置程序起始地址为0000H。
- `AJMP START`:无条件跳转到标签START处执行。
- `MOV DPTR,#1000H`:将数据指针DPTR设置为1000H。
- `MOV R0,#20H`:将寄存器R0设置为20H,表示重复次数。
- `MOV A,#0FFH`:将累加器A设置为0FFH。
- `MOVX @DPTR,A`:将累加器A中的值写入DPTR指向的外部存储器。
- `INC DPTR`:数据指针DPTR加1。
- `DJNZ R0,LOOP`:寄存器R0减1,如果不为0则跳转到LOOP继续执行。
- `SJMP $`:无条件跳转到当前地址,形成死循环。
- `END`:程序结束。
- **编译与链接**:
1. **编译工程**:选择`Project` -> `Rebuild All Target Files`,对工程进行编译和链接。
- **运行程序**:
1. **开始调试**:选择`Debug` -> `Start/Stop Debug Session`开始运行程序。
2. **观察变量值**:
- **打开寄存器窗口**:选择`View` -> `Register Window`查看寄存器状态。
- **打开Memory窗口**:在Memory窗口中输入`X:1000H`,查看从1000H开始的20个字节的值。
- **调试操作**:
1. **全速运行**:点击`Debug` -> `Run`全速运行程序。
2. **单步运行**:按F11键进行单步运行程序。
3. **观察变量值**:在调试窗口中观察寄存器和内存的变化情况。
##### 2. 新建工程shiyan12.uvproj,编写并运行寻址方式示例
- **创建新工程**:同上,创建名为`shiyan12.uvproj`的新工程。
- **编写程序**:在工程中添加汇编源文件`shiyan12.asm`,并编写以下程序来演示不同的寻址方式。
```assembly
;shiyan12.asm 寻址方式示例
ORG 0000H
AJMP START
ORG 0040H
START:
MOV 32H,#0H
MOV 30H,#1H
MOV 31H,#2H
MOV A,30H
```
- **编译与链接**:同上,对工程进行编译和链接。
- **运行与调试**:同上,开始运行程序并在调试窗口中观察变量值的变化。
#### 四、实验总结
通过本次实验,我们不仅掌握了Keil开发环境的基本操作方法,还学会了如何编写简单的汇编语言程序,并能够在单片机开发板上运行这些程序。此外,通过实际操作加深了对不同寻址方式的理解。这些实践经验对于进一步学习单片机技术以及进行更复杂的项目开发都是非常宝贵的。