目录第一节实验-------------------------------------------------------------------------------------------------2实验一ADS1.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第一部分实验课程第一节实验实验一ADS1.2集成开发环境练习1、实验目的了解ADS1.2集成开发环境的使用方法2、实验设备硬件:PC机一台软件:Windows98/XP/2000系统,ADS1.2集成开发环境3、实验内容(1)建立一个新的工程(2)建立一个汇编源文件,添加到工程(3)设置文本编译器支持中文(4)设置编译链接控制选项(5)编译连接工程(6)调试工程4、源代码:AREAExample1,CODE,READONLY;声明代码段Example1ENTRY;标识程序入口CODE32;声明32位ARM指令STARTMOVR0,#15;设置参数MOVR1,#8ADDSR0,R0,R1;R0=R0+R1BSTARTEND/********************************************************************/实验二:汇编指令实验11、实验目的(1)了解ADS1.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、源代码:COUNTEQU0x40003100;定义一个变量,地址为0x40003100AREAExample2,CODE,READONLY;声明代码段Example2ENTRY;标识程序入口CODE32;声明32位ARM指令STARTLDRR1,=COUNT;R1=COUNTMOVR0,#0;R0=0STRR0,[R1];[R1]=R0,即设置COUNT为0LOOPLDRR1,=COUNT;伪指令加载地址到R1LDRR0,[R1];R0=[R1]ADDR0,R0,#1;R0=R0+1CMPR0,#10;R0与10比较,影响条件码标志MOVHSR0,#0;若R0大于等于10,;则此指令执行,R0=0STRR0,[R1];[R1]=R0,即保存COUNTBLOOPEND实验三:汇编指令实验21、实验目的(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、源代码:XEQU11;定义X的值为11YEQU8;定义Y的值为8BIT23EQU(123);定义BIT23的值为0x00800000AREAExample3,CODE,READONLY;声明代码段Example3ENTRY;标识程序入口CODE32;声明32位ARM指令START;使用MOV、ADD指令实现:R8=R3=X+YMOVR0,#X;R0=X,X的值必须是8位图数据MOVR1,#Y;R1=Y,Y的值必须是8位图数据ADDR3,R0,R1;即是R3=X+YMOVR8,R3;R8=R3;使用MVN、SUB指令实现:R5=0x5FFFFFF8-R8*8MVNR0,#0xA0000007;0xA0000007的反码为0x5FFFFFF8SUBR5,R0,R8,LSL#3;R8左移3位,结果即是R8*8;使用CMP指令判断(5*Y/2)(2*X)吗?若大于则R5=R5&0xFFFF0000,;否则R5=R5|0x000000FFMOVR0,#YADDR0,R0,R0,LSL#2;计算R0=Y+4*Y=5*YMOVR0,R0,LSR#1;计算R0=5*Y/2MOVR1,#XMOVR1,R1,LSL#1;计算R1=2*XCMPR0,R1;比较R0和R1,即(5*Y/2)和(2*X)进行比较LDRHIR2,=0xFFFF0000;若(5*Y/2)(2*X),则R2=0xFFFF0000ANDHIR5,R5,R2;若(5*Y/2)(2*X),则R5=R5&R2ORRLSR5,R5,#0x000000FF;若(5*Y/2)≤(2*X),则R5=R5|0x000000FF;使用TST指令测试R5的bit23是否为1,;若是则将bit6位清零(使用BIC指令)TSTR5,#BIT23BICNER5,R5,#0x00000040BSTARTEND/******************************************************************************第二节实验实验四:ARM微控制器工作模式实验1、实验目的(1)掌握使用MRS/MSR实现ARM工作模式的切换。(2)了解各模式下的寄存器。2、实验设备硬件:PC机一台软件:Windows98/XP/2000系统,ADS1.2集成开发环境3、实验内容(1)使用MRS/MSR指令切换工作模式,并初始化各模式下的堆栈指针。(2)观察ARM在各模式下寄存器的区别。4、源代码:;定义堆栈的大小USR_STACK_LEGTHEQU64SVC_STACK_LEGTHEQU0FIQ_STACK_LEGTHEQU16IRQ_STACK_LEGTHEQU64ABT_STACK_LEGTHEQU0UND_STACK_LEGTHEQU0AREAExample7,CODE,READONLY;声明代码段Example7ENTRY;标识程序入口CODE32;声明32位ARM指令STARTMOVR0,#0MOVR1,#1MOVR2,#2MOVR3,#3MOVR4,#4MOVR5,#5MOVR6,#6MOVR7,#7MOVR8,#8MOVR9,#9MOVR10,#10MOVR11,#11MOVR12,#12BLInitStack;初始化各模式下的堆栈指针;打开IRQ中断(将CPSR寄存器的I位清零)MRSR0,CPSR;R0=CPSRBICR0,R0,#0x80MSRCPSR_cxsf,R0;CPSR=R0;切换到用户模式MSRCPSR_c,#0xd0MRSR0,CPSR;切换到管理模式MSRCPSR_c,#0xdfMRSR0,CPSRHALTBHALT;名称:InitStack;功能:堆栈初始化,即初始化各模式下的堆栈指针。;入口参数:无;出口参数:无;说明:在特权模式下调用此子程序,比如复位后的管理模式InitStackMOVR0,LR;R0=LR,因为各种模式下R0是相同的;设置管理模式堆栈MSRC