收藏 分享(赏)

微机实验报告(含思考题)实验2.doc

上传人:weiwoduzun 文档编号:3676586 上传时间:2018-11-15 格式:DOC 页数:6 大小:32KB
下载 相关 举报
微机实验报告(含思考题)实验2.doc_第1页
第1页 / 共6页
微机实验报告(含思考题)实验2.doc_第2页
第2页 / 共6页
微机实验报告(含思考题)实验2.doc_第3页
第3页 / 共6页
微机实验报告(含思考题)实验2.doc_第4页
第4页 / 共6页
微机实验报告(含思考题)实验2.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、 实验二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 数据寄存器

2、( GPGDAT) ? PORT G 禁止上拉寄存器 (GPGUP) 注:以上寄存器详细描述见实验指导书或者 S3C2440 芯片手册。 2、开发板 LED 部分原理图说明 ? GPG5 接 LED4,串联上拉电阻 ? GPG6 接 LED5,串联上拉电阻 ? GPG7 接 LED6,串联上拉电阻 ? GPG8 接 LED7,串联上拉电阻 所以,当 IO 口输出低电平时,相应的 LED 才能点亮。 (一)LED 汇编实验 1、通过查看 S3C2440 处理器 G 口控制寄存器,在 ledtest.s 文件中添加汇编代码,设置 GPG5GPG8 为 output。 2、在 ledtest.s 文

3、件中添加汇编代码,禁止 GPG5GPG8 端口的上拉电阻。 3、在 ledtest.s 文件中添加汇编代码,点亮 LED6,熄灭 LED5,LED7,LED8,并调用延时。4、在 ledtest.s 文件中添加汇编代码,点亮 LED7,熄灭 LED5,LED6,LED8,并调用延时。5、在ledtest.s 文件中添加汇编代码,点亮 LED8,熄灭 LED5,LED6,LED7,并调用延时。 6、在 ledtest.s 文件中添加汇编代码,实现 LED5-LED8 依次点亮。 7连接好 JTAG 仿真板,一口与 PC 的并口相连,另一口与开发板的 JTAG 口相连,打开开发板电源。打开 H-j

4、tag 程序,检测 CPU,点击 RVDS 中的“Debug” ,打开 RVD 进行硬件调试 (二)LED C 语言实验(选做) (一)LED 汇编实验 ;GPIO 寄存器宏定义 GPGCON EQU 0x56000060 GPGDAT EQU 0x56000064 GPGUP EQU 0x56000068 EXPORT LEDTEST AREA LEDTESTASM,CODE,READONLY ;该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读 ENTRY LEDTEST ;设置 GPG5GPG8( 即 LED4-LED7)为 output ldr r0,=GPGCON ldr

5、 r1,r0 mov r1,#0x00015400 str r1,r0 ;禁止 GPG5GPG8( 即 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 ;初始计数

6、值 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 ;初

7、始计数值 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,否则执行下一条语句

8、 mov pc,lr ;返回 END ;程序结束符 (二)LED C 语言实验(选做) arm 汇编部分: AREA |DATA|,CODE,READONLY ENTRY ;ldr r13,=0x1000 IMPORT main b main END C 语言部分: /-Serial Experiment- /-This is coded by UESTC HQ 20101018- /* 串口通信 C 程序,按 e退出通信 */ #define ULCON0 (*(volatile unsigned *)0x50000000) /UART 线控制寄存器 #define UCON0 (*(vol

9、atile unsigned *)0x50000004) /UART 控制寄存器 #define UFCON0 (*(volatile unsigned *)0x50000008) /FIFO 控制寄存器 #define UMCON0 (*(volatile unsigned *)0x5000000C) /AFC disable #define UTRSTAT0 (*(volatile unsigned*)0x50000010) /UART 状态寄存器 #define UBRDIV0 (*(volatile unsigned *)0x50000028) /波特率 #define UTXH0 (

10、*(volatile unsigned *)0x50000020) #define URXH0 (*(volatile unsigned *)0x50000024) #define CAMDIV0 (*(volatile unsigned *)0x4C000018) #define GPHCON (*(volatile unsigned *)0x56000070) #define GPHDAT (*(volatile unsigned *)0x56000074) #define GPHUP (*(volatile unsigned *)0x56000078) #define MPLLCON (

11、*(volatile unsigned *)0x4C000004) #define UPLLCON (*(volatile unsigned *)0x4C000008) #define CLKDIVN (*(volatile unsigned *)0x4C000014) #define WTCON (*(volatile unsigned *)0x53000000) void initpll() MPLLCON=0x76022; /Fin=16.9344MHz, Fout=266.72MHz CLKDIVN=0x07; /0000 0111 void inituart() ULCON0=0x0

12、3; /1 位起始位,8 位数据位 UCON0 =0x0805; /串口时钟 PCLK,查询方式 UFCON0 =0x0; UMCON0 =0x0; UBRDIV0 =0x17; /波特率 115200 UBRDIV0 = 44450000/(115200*16)-1=24-1=23 void initgpio() GPHCON |=0xa0; / set to rxd and txd GPHUP |=0x0f; / pull up WTCON void uart_send(char * c) for (; *c != 0; c+) URXH0 = *c ; unsigned char uar

13、t_get() UTXH0=URXH0; return UTXH0; int main() char key = ; initpll(); /初始化锁相环 PLL initgpio(); /初始化 IO 口 inituart(); /初始化串口 uart_send(“If you want to quit ,please press ern“); while(1) key = uart_get(); if (key = e) uart_send (“rnyou pressed e and youll quit!rn“); break; else uart_send( return 0; 1 、如何实现 LED0-LED7 的循环点亮。 答:将 GPGCON 端口的值改为 0x0001555,GPGUP 的值改为 0x01ff。再仿照 led4-led7的程序写出 led0-led3 的点亮代码,最后循环执行即可 2 、一般情况下,配置通用 IO 口的需要哪些步骤。 答:读入 IO 口控制寄存器地址,配置 IO 口的状态(读或写等) 。 3 、 ledtest.s 文件的汇编程序中代码 ldr r0,=0x f fffff 的作用是什么。 答:设置延迟的时间。 本实验通过 arm 对 Led 灯的控制,了解了 S3C2440 处理器端口的配置

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报