您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 武汉大学计算机学院-嵌入式实验报告
武汉大学计算机学院课程实验(设计)报告课程名称:嵌入式实验专业、班:08级姓名:学号:学期:2010-2011第1学期成绩(教师填写)实验分数一二三四五六七八九总评分数(百分制)实验一80C51单片机P1口演示实验实验目的:(1)掌握P1口作为I/O口时的使用方法。(2)理解读引脚和读锁存器的区别。实验内容:用P1.3脚的状态来控制P1.2的LED亮灭。实验设备:(1)超想-3000TB综合实验仪1台(2)超想3000仿真器1台(3)连线若干根(4)计算机1台实验步骤:(1)编写程序实现当P1.3为低电平时,发光管亮;P1.3为高电平时,发光管灭。(2)修改程序在执行读P1.3之前,先执行CLRP1.3,观察结果是否正确,分析在第二种情况下程序为什么不能正确执行,理解读引脚和读锁存器区别。实验结果:(1)当P1.3为低电平时,发光管亮;P1.3为高电平时,发光管灭。(2)不正确。因为先执行CLRP1.3之后,当读P1.3的时候它的值就一直是0,所以发光管会一直亮而不会灭。单片机在执行从端口的单个位输入数据的指令(例如MOVC,P1.0)时,它需要读取引脚上的数据。此时,端口锁存器必须置为‘1’,否则,输出场效应管导通,回拉低引脚上的高输出电平。系统复位时,会把所有锁存器置‘1’,然后可以直接使用端口引脚作为输入而无需再明确设置端口锁存器。但是,如果端口锁存器被清零(如CLRP1.0),就不能再把该端口直接作为输入口使用,除非先把对应的锁存器置为‘1’(如SETBP1.0)。(3)而在引脚负载很大的情况(如驱动晶体管)下,在执行“读——改——写”一类的指令(如CPLP1.0)时,需要从锁存器中读取数据,以免错误地判断引脚电平。实验二80C51单片机RAM存储器扩展实验实验目的:学习RAM6264的扩展实验内容:往RAM中写入一串数据,然后读出,进行比较实验设备:(1)超想-3000TB综合实验仪1台(2)超想3000仿真器1台(3)连线若干根(4)计算机1台实验步骤:(1)根据流程图设计程序。(2)RAM_CS插孔连到译码输出P2.7插孔,P1.0连接到L0。(3)调试运行程序RAM.ASM。对62256进行读写。若L1灯闪动,表示62256RAM读写正常。一直亮说明扩展数据存储器有损坏。(4)读写正确数码管显示“6264—0”。若读写错误,数码管显示“6264—E”。实验结果:程序框图:连线图案:程序解读:ORG0000HAJMPSTART;;无条件跳转到STARTORG0030H;;START的首地址START:MOVSP,#60H;;设置堆栈段,是个过程化语句,因为堆栈的前端一般有其他内容,;;此程序用不到。MOVDPTR,#0000H;;DPTR是数据指针寄存器。扩展数据存储器62256的地址,;;从0000H开始测试,共32K,但下面语句只测试了前4KMOVR6,#0FHMOVA,#55H;;测试字,本实验只用了55H;;/////////////////RAM1:MOVR7,#0FFHRAM2:MOVX@DPTR,A;;MOVX读写数据存储器,把55H写到0000HCLRP1.0;;清零,即为暗状态INCDPTR;;DJNZR7,RAM2;;R7减1,如不为零则跳转,内循环!!256DJNZR6,RAM1;;R6减1,如不为零则跳转,外循环!!16;;共测试4KMOVDPTR,#0000H;;从新给地址0000H,下步读MOVR6,#0FH;;写多少,读多少;;////////////////////////RAM3:MOVR7,#0FFHRAM4:MOVXA,@DPTRCJNEA,#55H,RAM6;;比较前两个操作数,不相等则跳转SETBP1.0;;亮INCDPTRDJNZR7,RAM4DJNZR6,RAM3;;////////////////////RAM5:CLRP1.0CALLDELAY;;延迟,实现闪烁!!SETBP1.0CALLDELAYSJMPRAM5;;是个死循环;;////////////////////DELAY:MOVR5,#0FFHDELAY1:MOVR4,#0FFHDJNZR4,$DJNZR5,DELAY1RETRAM6:SETBP1.0;;1.0口常亮,相当于设置了一个错态!!SJMPRAM6;;短转移,无限循环!!END思考与改进:改进程序清单:OUTBITequ0e101hCLK164equ0e102h;段控制口(接164时钟位)DAT164equ0e102h;段控制口(接164数据位)LEDBufequ40hINequ0e103hORG0000Hmovsp,#60hMOVDPTR,#0e100H;8155初始化MOVA,#03HMOVX@DPTR,ASTART:MOVDPTR,#8000H;往6264的8000H-9FFFH单元送入#55HMOVA,#55HDD:MOVX@DPTR,AINCDPTRmovr0,dphCJNer0,#0A0H,DDMOVDPTR,#8000hDD1:MOVXA,@DPTR;读出数据进行比较CJNEA,#55H,ERRINCDPTRMOVR0,DPHCJNER0,#0A0H,DD1mov40h,#06h;显示缓冲器初始化mov41h,#05hmov42h,#06hmov43h,#04hmov44h,#10hmov45h,#00hSTART1:LCALLDISPLAY;正确的显示“6464-0”SJMPSTART1ERR:mov40h,#06hmov41h,#05hmov42h,#06hmov43h,#04hmov44h,#10hmov45h,#0Eh;不正确的显示“6264-E。”START2:LCALLDISPLAYSJMPSTART2DISPLAY:setb0d3hmovr0,#LEDBufmovr1,#6;共6个八段管movr2,#00100000b;从左边开始显示Loop:movdptr,#OUTBITmova,#00hmovx@dptr,a;关所有八段管mova,@r0movdptr,#LEDmapmovca,@a+dptrmovB,#8;送164DLP:rlcamovr3,amovacc.0,canla,#0fdhmovdptr,#DAT164movx@dptr,amovdptr,#CLK164orla,#02hmovx@dptr,aanla,#0fDhmovx@dptr,amova,r3djnzB,DLPmovdptr,#OUTBITmova,r2movx@dptr,a;显示一位八段管movr6,#01callDelaymova,r2;显示下一位rRamovr2,aincr0djnzr1,Loopmovdptr,#OUTBITmova,#0movx@dptr,a;关所有八段管clr0d3hretLEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hDB40HDelay:movr7,#00H;延时子程序DelayLoop:djnzr7,DelayLoopdjnzr6,DelayLoopretend实验三嵌入式Linux开发环境熟悉实验实验目的:熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。实验内容:本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。创建一个新目录,并在其中编写hello.c和Makefile文件。学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。实验设备:硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境实验步骤:1、建立工作目录[root@zxtsmile]#mkdirhello[root@zxtsmile]#cdhello2、编写程序源代码在Linux下的文本编辑器有许多,常用的是vim和Xwindow界面下的gedit等,我们在开发过程中推荐使用vim,用户需要学习vim的操作方法,请参考相关书籍中的关于vim的操作指南。Kdevelope、anjuta软件的界面与vc6.0类似,使用它们对于熟悉windows环境下开发的用户更容易上手。实际的hello.c源代码较简单,如下:#includestdio.hmain(){printf(“helloworld\n”);}我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:[root@zxthello]#vihello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:wq”保存并退出。这样我们便在当前目录下建立了一个名为hello.c的文件。3、编写Makefile要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用Makefile的优越性,但当工程比较大文件比较多时,不使用Makefile几乎是不可能的。下面我们介绍本次实验用到的Makefile文件。CC=armv4l-unknown-linux-gccEXEC=helloOBJS=hello.oCFLAGS+=LDFLAGS+=–staticall:$(EXEC)$(EXEC):$(OBJS)$(CC)$(LDFLAGS)-o$@$(OBJS)clean:-rm-f$(EXEC)*.elf*.gdb*.o下面我们来简单介绍这个Makefile文件的几个主要部分:CC指明编译器EXEC表示编译后生成的执行文件名称OBJS目标文件列表CFLAGS编译参数LDFLAGS连接参数all:编译主入口clean:清除编译结果注意:“$(CC)$(LDFLAGS)-o$@$(OBJS)”和“-rm-f$(EXEC)*.elf*.gdb*.o”前空白由一个Tab制表符生成,不能单纯由空格来代替。与上面编写hello.c的过程类似,用vi来创建一个Makefile文件并将代码录入其中[root@zxthello]#viMakefile4、编译应用程序在上面的步骤完成后,我们就可以在hello目录下运行“make”来编译我们的程序了。如果进行了修改,重新编译则运行:[root@zxthello]#makeclean[root@zxthello]#make注意:编译、修改程序都是在宿主机(本地PC机)上进行,不能在MINICOM下进行。5、下载调试在宿主PC计算机上启动NFS服务,并设置好共享的目录,具体配置请参照前面第一章第四节中关于嵌入式Linux环境开发环境的建立。在建立好NFS共享目录以后,我们就可以进入MINICOM中建立开发板与宿主PC机之间的通讯了。[root@zxthello]#minicom[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:/arm2410s/host注意:IP地址需要根据宿主PC机的实际情况修改成功挂接宿主机的arm2410s目录后,在开发板上进入/host目录便相应进入宿主机的/arm2410s目录,我们已经给出了编辑好的hello.c和Makefile文件,它们在/arm2410s/exp/basic/01_hello目录下。用户可以直接在宿主PC上
本文标题:武汉大学计算机学院-嵌入式实验报告
链接地址:https://www.777doc.com/doc-2406089 .html