改 vnfg
OK2440
OK2440
OK2440
OK2440
ADS 基础实验指导手册
version1.0
飞凌嵌入式 www.witech.com.cn 09.9.22 2
目 录
一 ADS
ADS
ADS
ADS 编程实验
.
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
. .
.
.
.
3
3
3
3
1.1 实验一 汇编语言编程( 1 )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.2 实验二 汇编语言编程( 2 )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.3 实验三 LED 跑马灯
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.4 实验四 蜂鸣器实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
1.5 实验五 按键与蜂鸣器
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
1.6 实验六 ADC 实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
1.7 实验七 串行口实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
1.8 实验八 NAND FLASH 应用实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
1.9 实验九 看门狗试验( 1 )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
1.10 实验十 看门狗试验( 2 )
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
1.11 实验十一 LCD 屏实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
1.12 实验十二 触摸屏控制实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
128
1.13 实验十三 IIC 写读实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
145
1.14 实验十四 中断实验
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
160
1.15 实验十五 红外模块实验(选配实验)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
166
1.16 实验十六 温度采集实验(选配实验)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
170
改 vnfg
OK2440
OK2440
OK2440
OK2440
ADS 基础实验指导手册
version1.0
飞凌嵌入式 www.witech.com.cn 09.9.22 3
一 ADS
ADS
ADS
ADS 编程实验
1.1
1.1
1.1
1.1 实验一
实验一
实验一
实验一 汇编语言编程(
汇编语言编程(
汇编语言编程(
汇编语言编程( 1
1
1
1 )
)
)
)
1.1.1
1.1.1
1.1.1
1.1.1
实验目的
�
�
�
� 初步了解 ARM 指令集。
�
�
�
�
初步了解 S3C2440 管脚寄存器。
�
�
�
� 熟悉开发板的使用方法。
1.1.2
1.1.2
1.1.2
1.1.2 实验设备
�
�
�
� OK2440 开发板、 JTAG 板及连线、串口线、 PC 机。
1.1.3
1.1.3
1.1.3
1.1.3 实验内容
�
�
�
� 通过使用 ARM 指令集来编程,把 LED 点亮。
1.1.4
1.1.4
1.1.4
1.1.4 实验原理
1 、 内存访问指令
基本指令:
LDR : memory - > register (memory 包括映射到内存空间的非通用寄存器 )
STR : register - > memory
语法:
op{cond }{B}{T} Rd , [Rn ]
op{cond }{B} Rd , [Rn , FlexOffset ]{!}
op{cond }{B} Rd , label
op{cond }{B}{T} Rd , [Rn ], FlexOffset
op :基本指令,如 LDR 、 STR
cond :条件执行后缀
B :字节操作后缀
T :用户指令后缀
Rd :源寄存器,对于 LDR 指令, Rd 将保存从 memory 中读取的数值;对于 STR 指令, R d
保存着将写入 memory 的数值
Rn :指针寄存器
改 vnfg
OK2440
OK2440
OK2440
OK2440
ADS 基础实验指导手册
version1.0
飞凌嵌入式 www.witech.com.cn 09.9.22 4
FlexOffset :偏移量
【 label 的使用】
addr1 ; 定义一个名为 “ addr1 ” 的 label , addr1 = 当前地址
【 FlexOffset 的使用】
FlexOffset 可以是立即数,也可以是寄存器,还可以是简单的表达式
2 、
多字节存取指令(常用于堆栈操作)
基本指令:
LDM : memory ―― > 多个寄存器
STM :多个寄存器 ―― > memory
语法:
op{cond }mode Rn{!}, reglist {^}
mode :指针更新模式,对应于不同类型的栈。最常用的是 “ FD ” 模式,相当于初始栈指针
在高位,压栈后指针值减小。
Rn :指针寄存器
!:最后的指针值将写入 Rn 中
reglist :要操作的寄存器列表,如 { r0-r8, r10 }
^ :完成存取操作后从异常模式下返回
3 、 算术运算指令
基本指令:
ADD :加
SUB :减
语法:
op{cond }{S} Rd, Rn, Operand2
S :是否设置状态寄存器( CPSR
) ,如:
N (有符号运算结果得负数) 、 Z (结果得 0
) 、
C (运
算的进位或移位) 、
V (有符号数的溢出)等等。
Rd :保存结果的寄存器
Rn :运算的第一个操作数
Operand2 :运算的第二个操作数,这个操作数的值有一些限定:如可以是 8 位立即数(例
:
0xa8 )或一个 8 为立即数的移位(例: 0xa800 ,而 0xa801 就不符合) 。也可以是寄存器,
或寄存器的移位(如 “ r2, lsl #4
”
) 。
4 、 逻辑运算指令
基本指令:
AND :与
ORR :或
EOR :异或
BIC :位清 0
语法:
op{cond }{S} Rd, Rn, Operand2
改 vnfg
OK2440
OK2440
OK2440
OK2440
ADS 基础实验指导手册
version1.0
飞凌嵌入式 www.witech.com.cn 09.9.22 5
语法类似算术运算指令
5 、 MOV 指令
语法:
MOV{cond}{S} Rd, Operand2
6 、 比较指令
基本指令:
CMP :比较两个操作数,并设置状态寄存器
语法:
CMP{cond } Rn, Operand2
7 、
跳转指令
基本指令:
B :跳转
BL :跳转并将下一指令的地址存入 lr 寄存器
语法:
op {cond} label
label :要跳向的地址
8 、
条件执行
条件:状态寄存器中某一或某几个比特的值代表条件,对应不同的条件后缀 cond ,如:
后缀 (cond) 状态寄存器中的标记 意义
EQ Z = 1 相等
NE Z = 0 不相等
GE N 和 V 相同 >=
LT N 和 V 不同 <
GT Z = 0 , 且 N 和 V 相同 >
LE Z = 1 , 或 N 和 V 不同 <=
―――――――――――――――――――
宏的使用
定义宏:
MACRO ; 宏的起始
{label} macroname para1 , para2 ……
; 代码
MEND ; 宏结束
引用宏:
marconame para1 , para2 ……
一般可以把宏写在宏文件 (.mac 文件 ) 中,在程序里用 INCLUDE 指令包含宏文件
9 、 常用伪指令
( 1 ) IF 、 ELSE 、 ENDIF
IF 逻辑表达式