《电子科技大学微机实验报告实验(共7页).docx》由会员分享,可在线阅读,更多相关《电子科技大学微机实验报告实验(共7页).docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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 处理器相关寄存器介绍nPO
2、RT G 控制寄存器( GPGCON )nPORT G 数据寄存器(GPGDAT)nPORT G 禁止上拉寄存器(GPGUP)注:以上寄存器详细描述见实验指导书或者 S3C2440 芯片手册。2、开发板 LED 部分原理图说明nGPG5 接 LED4,串联上拉电阻nGPG6 接 LED5,串联上拉电阻nGPG7 接 LED6,串联上拉电阻nGPG8 接 LED7,串联上拉电阻所以,当 IO 口输出低电平时,相应的 LED 才能点亮。【实验步骤】(一)LED 汇编实验1、通过查看 S3C2440 处理器 G 口控制寄存器,在ledtest.s 文件中添加汇编代码,设置专心-专注-专业GPG5GP
3、G8 为 output。2、在 ledtest.s 文件中添加汇编代码,禁止 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 的并口相连,另一口与开发
4、板的 JTAG 口相连,打开开 发板电源。打开 H-jtag 程序,检测 CPU,点击 RVDS 中的“Debug”,打开 RVD 进行硬件调 试(二)LED C 语言实验(选做)【实验结果和程序】(一)LED 汇编实验;GPIO 寄存器宏定义GPGCON EQU 0xGPGDAT EQU 0xGPGUP EQU 0xEXPORT LEDTESTAREA LEDTESTASM,CODE,READONLY ; 该 伪 指 令 定 义 了 一 个 代 码 段 , 段 名 为LEDTESTASM,属性只读ENTRY LEDTEST;设置 GPG5GPG8(即 LED4-LED7)为 outputld
5、r r0,=GPGCONldr r1,r0mov r1,#0x str r1,r0;禁止 GPG5GPG8(即 LED4-LED7)端口的上拉电阻ldr r0,=GPGUPldr r1,r0mov r1,#0x01e0 str r1,r0looptest;将数据端口 G 的数据寄存器的地址附给寄存器 r2 ldr r2,=GPGDAT; 点亮 LED5,熄灭 LED6-LED8,并调用延时ldr r3,r2orr r3,r3,#0x01e0 bic r3,r3,#0x0020str r3,r2 ;GPG5(即 LED5) output 0ldr r0,=0xffffff ;初始计数值bl de
6、lay ;调用延迟子程序;-点亮 LED6,熄灭 LED5,LED7,LED8,并调用延时- ldr r3,r2orr r3,r3,#0x01e0 bic r3,r3,#0x0040str r3,r2 ;GPG6(即 LED6) output 0ldr r0,=0xffffff ;初始计数值bl delay;-点亮 LED7,熄灭 LED5,LED6,LED8,并调用延时- ldr r3,r2orr r3,r3,#0x01e0 bic r3,r3,#0x0080str r3,r2 ;GPG7(即 LED7) output 0ldr r0,=0xffffff ;初始计数值bl delay;-点亮
7、 LED8,熄灭 LED5,LED6,LED7,并调用延时- ldr r3,r2orr r3,r3,#0x01e0 bic r3,r3,#0x0100str r3,r2 ;GPG8(即 LED8) output 0ldr r0,=0xffffff ;初始计数值bl delay;-实现 LED5-LED8 依次点亮-b looptestdelaysub r0,r0,#1 ;r0=r0-1cmp r0,#0x0 ;将 r0 的值与 0 相比较bne delay ;比较的结果不为 0(r0 不为 0),继续调用 delay,否则执行下一条语句mov pc,lr ;返回END ;程序结束符(二)LED
8、 C 语言实验(选做)arm 汇编部分:AREA |DATA|,CODE,READONLY ENTRY;ldr r13,=0x1000IMPORT main b mainENDC 语言部分:/-Serial Experiment-/-This is coded by UESTCHQ -/*串口通信 C 程序,按e退出通信*/#define ULCON0 (*(volatile unsigned *)0x) /UART 线控制寄存器#define UCON0(*(volatile unsigned *)0x) /UART 控制寄存器#define UFCON0 (*(volatile unsig
9、ned *)0x) /FIFO 控制寄存器#define UMCON0 (*(volatile unsigned *)0xC) /AFC disable#define UTRSTAT0 (*(volatile unsigned*)0x) /UART 状态寄存器#define UBRDIV0 (*(volatile unsigned *)0x) /波特率#define UTXH0(*(volatile unsigned *)0x)#define URXH0(*(volatile unsigned *)0x)#define CAMDIV0(*(volatile unsigned *)0x4C)#d
10、efine GPHCON(*(volatile unsigned *)0x)#define GPHDAT(*(volatile unsigned *)0x)#define GPHUP(*(volatile unsigned *)0x)#define MPLLCON(*(volatile unsigned *)0x4C)#define UPLLCON(*(volatile unsigned *)0x4C)#define CLKDIVN(*(volatile unsigned *)0x4C)#define WTCON(*(volatile unsigned *)0x)void initpll()M
11、PLLCON=0x76022;/Fin=16.9344MHz,Fout=266.72MHzCLKDIVN=0x07;/0000 0111void inituart()ULCON0=0x03;/1 位起始位,8 位数据位 UCON0=0x0805;/串口时钟 PCLK,查询方式 UFCON0 =0x0;UMCON0 =0x0;UBRDIV0 =0x17;/ 波 特 率 UBRDIV0 =/(*16)-1=24-1=23void initgpio()GPHCON |=0xa0;/ set to rxd and txdGPHUP |=0x0f;/ pull upWTCON &=0xdb;void u
12、art_send(char * c)for (; *c != 0; c+)URXH0 = *c ;unsigned char uart_get()int main()UTXH0=URXH0;return UTXH0;char key = ;initpll();/初始化锁相环 PLLinitgpio();/初始化 IO 口inituart();/初始化串口uart_send(If you want to quit ,please press ern);while(1)key = uart_get();if (key = e)elseuart_send (rnyou pressed e and y
13、oull quit!rn);break;uart_send(&key);uart_send(the program exited by user!rn);return 0;【思考题】1 、如何实现 LED0-LED7 的循环点亮。答:将 GPGCON 端口的值改为 0x,GPGUP 的值改为 0x01ff。再仿照 led4-led7的程序写出 led0-led3 的点亮代码,最后循环执行即可2 、一般情况下,配置通用 IO 口的需要哪些步骤。答:读入 IO 口控制寄存器地址,配置 IO 口的状态(读或写等)。3 、 ledtest.s 文件的汇编程序中代码 ldr r0,=0x f fffff 的作用是什么。 答:设置延迟的时间。【实验结论】本实验通过 arm 对 Led 灯的控制,了解了 S3C2440 处理器端口的配置