嵌入式系统实验与课程设计指导书

  • 格式:doc
  • 大小:1.26 MB
  • 文档页数:80

目 录

第一节 实验 ------------------------------------------------------------------------------------- 2

实验一 ADS 1.2集成开发环境练习 ----------------------------------------------------- 2

实验二 :汇编指令实验 1----------------------------------------------------------------- 3

实验三 :汇编指令实验 2----------------------------------------------------------------- 4

第二节 实验 ------------------------------------------------------------------------------------- 6

实验四 :ARM微控制器工作模式实验 -------------------------------------------------- 6

实验五 :C语言程序实验 ----------------------------------------------------------------- 9

第三节 实验 ------------------------------------------------------------------------------------11

实验六 :GPIO输出控制实验 1 ---------------------------------------------------------11

实验七 :GPIO输出控制实验 2 -------------------------------------------------------- 13

第四节 实验 ----------------------------------------------------------------------------------- 15

实验八 :存储器重映射实验 ------------------------------------------------------------ 15

实验九 :外部中断实验 ----------------------------------------------------------------- 17

第五节 实验 ----------------------------------------------------------------------------------- 19

实验十 :定时器实验 -------------------------------------------------------------------- 19

实验十一 :UART实验 ----------------------------------------------------------------- 21

实验十二 :IIC接口实验 ---------------------------------------------------------------- 24

第六节 彩色液晶绘图设计 ------------------------------------------------------------------ 28

第七节 UC/OS-II移植----------------------------------------------------------------------- 31

第八节 UC/OS-II下蜂鸣器设计 ------------------------------------------------------------ 35

第九节 RTC设计 ----------------------------------------------------------------------------- 38

第十节 数码管显示设计--------------------------------------------------------------------- 41

附 录 ------------------------------------------------------------------------------------------- 44

第一部分 实验课程

第一节 实验

实验一 ADS 1.2集成开发环境练习

1 、实验目的

了解ADS 1.2集成开发环境的使用方法

2 、实验设备

硬件: PC机 一台

软件: Windows98/XP/2000系统,ADS1.2集成开发环境

3 、实验内容

(1) 建立一个新的工程

(2) 建立一个汇编源文件,添加到工程

(3) 设置文本编译器支持中文

(4) 设置编译链接控制选项

(5) 编译连接工程

(6) 调试工程

4 、源代码:

AREA Example1,CODE,READONLY ; 声明代码段Example1

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START MOV R0,#15 ; 设置参数

MOV R1,#8

ADDS R0,R0,R1 ; R0 = R0 + R1

B START

END

/********************************************************************/

实验二 :汇编指令实验 1

1 、实验目的

(1) 了解ADS 1.2集成开发环境以及ARMulator软件仿真

(2) 掌握ARM7TDMI汇编指令的用法,编写简单的汇编程序

(3) 掌握指令的条件执行和使用LDR/STR完成存储器的访问

2 、实验设备

硬件: PC机 一台

软件: Windows98/XP/2000系统,ADS1.2集成开发环境

3 、实验内容

(1) 使用LDR读取0x40003100的数据,将数据加1,如小于10则用STR将结果写回原地址,如大于等于10,把0写回原地址。再次读出0x40003100数据,加1,判断……周而复此循环。

(2) 使用ADS1.2单步、全速运行程序,设置断点,打开寄存器窗口监视R0、R1的值,打开存储器观察窗口监视0x40003100上的值。

4 、 源代码:

COUNT EQU 0x40003100 ; 定义一个变量,地址为0x40003100

AREA Example2,CODE,READONLY ; 声明代码段Example2

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START LDR R1,=COUNT ; R1 <= COUNT

MOV R0,#0 ; R0 <= 0

STR R0,[R1] ; [R1] <= R0,即设置COUNT为0

LOOP LDR R1,=COUNT ; 伪指令加载地址到R1

LDR R0,[R1] ; R0 <= [R1]

ADD R0,R0,#1 ; R0 <= R0 + 1

CMP R0,#10 ; R0与10比较,影响条件码标志

MOVHS R0,#0 ; 若R0大于等于10,

; 则此指令执行,R0 <= 0

STR R0,[R1] ; [R1] <= R0,即保存COUNT

B LOOP

END 实验三 :汇编指令实验 2

1 、实验目的

(1) 掌握ARM数据处理指令的使用方法。

(2) 了解ARM指令灵活的第2个操作数。

2 、实验设备

硬件: PC机 一台

软件: Windows98/XP/2000系统,ADS1.2集成开发环境

3 、实验内容

(1) 使用MOV和MON指令访问ARM通用寄存器。

(2) 使用ADD/SUB/AND/ORR/CMP/TST等指令完成数据加减运算及逻辑运算。

4 、源代码:

X EQU 11 ; 定义X的值为11

Y EQU 8 ; 定义Y的值为8

BIT23 EQU (1<<23) ; 定义BIT23的值为0x00800000

AREA Example3,CODE,READONLY ; 声明代码段Example3

ENTRY ; 标识程序入口

CODE32 ; 声明32位ARM指令

START ; 使用MOV、ADD指令实现:R8 = R3 = X + Y

MOV R0,#X ; R0 <= X,X的值必须是8位图数据

MOV R1,#Y ; R1 <= Y,Y的值必须是8位图数据

ADD R3,R0,R1 ; 即是R3 = X + Y

MOV R8,R3 ; R8 <= R3

;使用MVN、SUB指令实现:R5 = 0x5FFFFFF8 - R8 * 8

MVN R0,#0xA0000007 ; 0xA0000007的反码为0x5FFFFFF8

SUB R5,R0,R8,LSL #3 ; R8左移3位,结果即是 R8 * 8

;使用CMP指令判断(5*Y/2)>(2*X)吗?若大于则R5 = R5&0xFFFF0000,

;否则R5 = R5|0x000000FF

MOV R0,#Y

ADD R0,R0,R0,LSL #2 ; 计算R0 = Y + 4*Y = 5*Y

MOV R0,R0,LSR #1 ; 计算R0 = 5*Y/2

MOV R1,#X

MOV R1,R1,LSL #1 ; 计算R1 = 2*X

CMP R0,R1 ; 比较R0和R1,即(5*Y/2)和(2*X)进行比较

LDRHI R2,=0xFFFF0000 ; 若(5*Y/2)>(2*X),则R2 <= 0xFFFF0000

ANDHI R5,R5,R2 ; 若(5*Y/2)>(2*X),则R5 = R5&R2