电子科技大学微机实验报告-实验2

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

实验二 ARM 汇编控制LED 实验

【实验目的】

1、理解掌握通过ARM 汇编控制硬件操作;

2、熟练使用ARM 调试软件RVDS 进行硬件调试。

【实验内容】

1、掌握ARM 处理器GPIO 相关寄存器的使用;

2、用ARM 汇编实现控制开发LED 按照一定方式点亮。

【预备知识】

1、ARM 汇编基础

2、ARM 处理器通用IO 口的操作

【实验设备和工具】

软件:Windows 操作系统,RVDS 软件

硬件:ARM 嵌入式开发板,PC 机Pentium100 以上,并口线,JTAG 板,JTAG 连接线

【实验原理】

1、 S3C2440 处理器相关寄存器介绍

PORT G 控制寄存器( GPGCON )

PORT G 数据寄存器(GPGDAT)

PORT G 禁止上拉寄存器(GPGUP)

注:以上寄存器详细描述见实验指导书或者S3C2440 芯片手册。

2、开发板LED 部分原理图说明

GPG5 接LED4,串联上拉电阻

GPG6 接LED5,串联上拉电阻

GPG7 接LED6,串联上拉电阻

GPG8 接LED7,串联上拉电阻

所以,当IO 口输出低电平时,相应的LED 才能点亮。

【实验步骤】

(一)LED 汇编实验

1、通过查看S3C2440 处理器G 口控制寄存器,在文件中添加汇编代码,设置

GPG5-GPG8 为output。

2、在文件中添加汇编代码,禁止GPG5-GPG8 端口的上拉电阻。

3、在文件中添加汇编代码,点亮LED6,熄灭LED5,LED7,LED8,并调用延时。

4、在文件中添加汇编代码,点亮 LED7,熄灭 LED5,LED6,LED8,并调用延时。

5、在文件中添加汇编代码,点亮LED8,熄灭LED5,LED6,LED7,并调用延时。

6、在文件中添加汇编代码,实现LED5-LED8 依次点亮。

7.连接好 JTAG 仿真板,一口与 PC 的并口相连,另一口与开发板的 JTAG 口相连,打开开发板电源。打开H-jtag 程序,检测CPU,点击RVDS 中的“Debu g”,打开RVD 进行硬件调试

(二)LED C 语言实验(选做)

【实验结果和程序】

(一)LED 汇编实验

;GPIO 寄存器宏定义

GPGCON EQU 0x

GPGDAT EQU 0x

GPGUP EQU 0x

EXPORT LEDTEST

AREA LEDTESTASM,CODE,READONL Y ; 该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读

ENTRY

LEDTEST

;设置GPG5-GPG8(即LED4--LED7)为output

ldr r0,=GPGCON

ldr r1,[r0]

mov

r1,#0x00015400

str r1,[r0]

;禁止GPG5-GPG8(即LED4--LED7)端口的上拉电阻

ldr r0,=GPGUP

ldr r1,[r0]

mov

r1,#0x01e0

str r1,[r0]

looptest

;将数据端口G 的数据寄存器的地址附给寄存器r2

ldr r2,=GPGDAT

; 点亮LED5,熄灭LED6-LED8,并调用延时

ldr r3,[r2]

orr

r3,r3,#0x01e0

bic

r3,r3,#0x0020

str r3,[r2] ;GPG5(即LED5) output 0

ldr r0,=0xffffff ;初始计数值

bl delay ;调用延迟子程序

;----------点亮LED6,熄灭LED5,LED7,LED8,并调用延时---- ldr r3,[r2]

orr

r3,r3,#0x01e0

bic

r3,r3,#0x0040

str r3,[r2] ;GPG6(即LED6) output 0

ldr r0,=0xffffff ;初始计数值

bl delay

;----------点亮LED7,熄灭LED5,LED6,LED8,并调用延时---- ldr r3,[r2]

orr

r3,r3,#0x01e0

bic

r3,r3,#0x0080

str r3,[r2] ;GPG7(即LED7) output 0

ldr r0,=0xffffff ;初始计数值

bl delay

;----------点亮LED8,熄灭LED5,LED6,LED7,并调用延时---- ldr r3,[r2]

orr

r3,r3,#0x01e0

bic

r3,r3,#0x0100

str r3,[r2] ;GPG8(即LED8) output 0 ldr r0,=0xffffff ;初始计数值

bl delay

;-------------实现LED5-LED8 依次点亮-------------------

b looptest

delay

sub r0,r0,#1 ;r0=r0-1

cmp r0,#0x0 ;将r0 的值与0 相比较

bne delay ;比较的结果不为0(r0 不为0),继续调用delay,否则执行下一条语句mov pc,lr ;返回

END ;程序结束符

(二)LED C 语言实验(选做)

arm 汇编部分:

AREA |DATA|,CODE,READONL Y

ENTRY

;ldr r13,=0x1000

IMPORT main

b main

END

C 语言部分:

//---------------Serial Experiment--------------------

//-----------This is coded by UESTC HQ 20

/*

串口通信C 程序,按‘e’退出通信

*/

#define ULCON0 (*(volatile unsigned *)0x) //UART 线控制寄存器

#define UCON0 (*(volatile unsigned *)0x) //UART 控制寄存器

#define UFCON0 (*(volatile unsigned *)0x) //FIFO 控制寄存器

#define UMCON0 (*(volatile unsigned *)0x5000000C) //AFC disable

#define UTRSTA T0 (*(volatile unsigned*)0x) //UART 状态寄存器

#define UBRDIV0 (*(volatile unsigned *)0x) //波特率

#define UTXH0 (*(volatile unsigned *)0x)

#define URXH0 (*(volatile unsigned *)0x)

#define CAMDIV0 (*(volatile unsigned *)0x4C000018)

相关文档
最新文档