单片机实验验指导书(有程序)2012(共24页).doc
《单片机实验验指导书(有程序)2012(共24页).doc》由会员分享,可在线阅读,更多相关《单片机实验验指导书(有程序)2012(共24页).doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上单片机实验指导书三明学院2011年09月01日实验一 简单程序调试实验一、实验目的1、熟悉 Keil uVision3集成仿真环境2、掌握以下内容:1)建立工程2)建立源程序并添加源程序到工程3)编译源程序及工程4)调试并观察运行结果 观察汇编代码; 观察并修改寄存器值; 观察并修改内部存储单元内容二、实验内容实验程序如下:汇编指令 行号ORG 0000HDSP0 EQU 30HDSP1 EQU 31HAT1:MOV R0,#DSP1; 1MOV 32H,A ; 2 ANL A,#0FH ; 3 MOV R0, A ; 4DEC R0 ; 5MOV A, 32H ;
2、6ANL A, #0FH ; 7SWAP A ; 8MOV R0, A; 9SJMP $ ; 10END 二、实验步骤说明:以下 内加粗内容均为系统菜单名称、列表名称、窗口名称或按钮名称 进入Keil uVision3集成仿真环境从程序组或桌面找到Keil uVision3图标,点击图标启动仿真软件,即可进入KeiluVision2 仿真环境。 建立工程文件 点击菜单ProjectNew Project 出现Creat New Project对话框,在文件名栏中输入一个工程文件名(用英文缩写),选择一个可以保存的文件夹,点击 保存 按钮。 出现选择器件类型对话框, 在对话框左列表中选择处理器型
3、号AtmelAT89C51,点确定 按钮。 出现是否添加标准8051启动代码的对话框,点击否,进入Keil uVision2 工程界面。 建立汇编源文件: 点击菜单File New,出现一个名为Text 1的空白文本文件,点击菜单File Save保存文本文件,出现Save对话框。 在文件名栏中输入一个有意义的文件名,用英文缩写并且不能和工程文件名同名(如TEST1),后缀必须为“.asm”,点击保存按钮。 点开左侧Project Workspace列表窗中的Target 1文件夹,出现Source Group 1文件夹。鼠标右键点击Source Group 1文件夹,在弹出的菜单中点击Add
4、 Files toGroup Source Group 1出现添加文件对话框(图)。 在对话框文件类型中选择Asm Source file (*.s*;*.src;*.a*),选择刚才保存的asm源文件,点击Add完成添加,然后点击close关闭界面。 输入以下源程序(注意标点符号应该是英文半角符号,并注意区分数字0 和字母O),并保存。 编译并装入 点击菜单ProjectTranslate.,编译当前源程序。如发生错误,根据红色提示带和编辑窗口下的输出出错信息提示进行修改,再编译,直至无错误为止。 点击菜单ProjectBuild target,编译工程。 调试并观察运行结果 点击菜单Deb
5、ugStart/Stop Debug Session 开始调试程序。 进入调试状态后,系统自动打开反汇编窗口,如果看不到,可由ViewDisassembly Window打开,观察源程序110 条的汇编代码,填入表1-1 内 由左侧寄存器窗口,双击累加器A 旁的值至蓝色可编辑状态,将累加器A的值由00H 修改为25H 观察并修改内部RAM内容(将内部RAM30H 单元的值修改为12H) 由ViewMemory Window,打开内存窗口 在Address栏输入D:30H 并按 回车,表示从内部RAM 的30H 开始显示调试值(从左到右地址依次递增)。 鼠标右键点击内存窗口的30H 位置,在弹出
6、菜单中选择Modify Memory atD:0x30。 在弹出对话框中输入值12H(图1-16),并点击OK,表示修改内部RAM 30H内的值为12H。图1-16- 重复步骤4,将31H 单元的值修改为34H。 单步运行 按DebugStep(F11),每按一次、PC下移一次。 观察左侧寄存器列表中R0、A 的值,以及内存30H、31H、32H 单元内容在PC移过后的变化情况,填入表1-1 内。 如没看清楚,可由PeripheralsRest CPU,重复步骤1-6四、实验报告1、写出Keil uVision3集成仿真使用时的主要步骤。2、写出程序清单,并根据实验结果填写下表: 实验二 数据
7、传送实验一、实验目的掌握单片机内部RAM和外部RAM的数据操作,掌握这两部分RAM存储器的特点与应用。二、实验内容编写并调试一个数据传送程序,将内部RAM 40H4FH的16个数据送到外部RAM 0000H000FH单元。并调试检查写入的内容是否正确。三、实验步骤1、 启动Keil uVision3集成仿真仿真软件。2、 编写并输入实验源程序,名为TEST2AASM。3、 汇编源程序,直至无错误为止。4、 装入数据,单步执行或断点执行程序,检查结果是否正确。在程序运行之前,将01H,02H,03H,0FH,16个数据写入内部RAM 40H4FH的16个单元,然后执行程序,检查外部RAM 000
8、0H000FH 16个单元内容是否与内部RAM40H4FH单元的数据一一对应。四、编程指示开始 #40HR0 #10HR7 #0000HDPTR(R0)A (A)(DPTR)结束(R0)+1R0 (DPTR)1DPTR(R7)1=0? Y N 五、实验报告1、 写出程序清单。2、 试编写数据块清零程序。3、 编写将外部RAM 0000H000FH单元的数据传送到内部RAM40H4FH单元的程序。ORG 0000H MAIM: MOV R0,#40H MOV DPTR, #0000H MOV R7, #16 AT0: MOV A, R0 MOVX DPTR, A INC R0 INC DPTR
9、DJNZ R7, AT0 END实验三 I/O接口实验一、 实验目的:掌握MCS-51单片机的P1口作为并行输入、P3口作为并行输出方式使用时的电路设计及软件编程方法。二、 实验内容:1、 编写P1口输出实验程序,使发光二极管在程序的控制下自动按照设定的规律亮灭。2、 编写P3口输入实验程序,通过接收开关设置的参数来控制发光管的亮灭。三、 实验电路(单片机实验板参考原理图)四、 实验步骤1、 输出实验(1) 认真阅读单片机实验板参考原理图,掌握P1.0P1.7和LED3LED10的连接关系。(2) 在Keil uVision3集成仿真软件中编制程序,首先使所有的发光二极管全部熄灭,之后从LED
10、3开始,LED3LED6 四个发光二极管轮流发光1秒,然后四个二极管全部发光1秒,最后全灭1秒,完成一个过程后又重新开始,周而复始。(3) 在Keil uVision3集成仿真软件中用单步、断点、连续方式调试程序,直至正确。(4) 将生成的*.hex目标文件通过ISP下载线烧写到单片机内部,观察LED3LED6 四个发光二极管的状态,验证运行结果是否正确,直至达到实验的要求为止。2、 输入实验(1) 认真阅读单片机实验板参考原理图,掌握开关K1K4和P3.2P3.5的连接关系。(2) 在Keil uVision3集成仿真软件中编制程序,将P1.0设置为输出口,P3.2设置为输出口,按一次开关K
11、1, LED3熄灭,再次按开关K1,LED3亮,如此循环,LED3亮灭交替。(3) 在Keil uVision3集成仿真软件中用单步、断点、连续方式调试程序,直至正确。(4) 将生成的*.hex目标文件通过ISP下载线烧写到单片机内部,反复按下K1 ,观察LED3的状态,验证运行结果是否正确,直至达到实验的要求为止。五、 编程提示1、 延时子程序的延时计算问题对于程序 DELAYDELAY: MOV R5,#10LOOP: MOV R6,#200LOOP1: MOV R7,#250LOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 DJNZ R5,LOOP RET查指令表可知
12、DJNZ指令需用两个机器周期,在12MHZ晶振时,一个机器周期时间长度为1s,所以该段程序执行时间为:(2502+3)200)+3)10+31s六、 实验报告1、写出程序清单(要写出必要的注释)3、思考:程序没有进行按键消抖动处理,控制结果会因为按键抖动而出错,按压K1十次,大概有35次输出会因为按键抖动而发生错误,实验时请多按几次,观察一下效果,加深对按键消抖动重要性的认识。1、 输出实验例1:ORG0000HAJMPSTART;跳转到初始化程序ORG0033H;- 主程序开始 -START:MOV P1,#0FFH ;是所有LED熄灭ACALL DELAY ;调用延时子程序CLR P1.0
13、 ;P1.0输出低电平,使LED3点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED3熄灭 CLR P1.1 ;P1.1输出低电平,使LED4点亮 ACALL DELAY ;调用延时子程序 SETB P1.1 ;P1.1输出高电平,使LED4熄灭 CLR P1.2 ;P1.2输出低电平,使LED5点亮 ACALL DELAY ;调用延时子程序 SETB P1.2 ;P1.2输出高电平,使LED5熄灭 CLR P1.3 ;P1.3输出低电平,使LED6点亮 ACALL DELAY ;调用延时子程序 MOV P1, #0F0H ;LED3LED6全部
14、发光ACALL DELAY ;调用延时子程序AJMP START ;返回到标号START处再循环;- 延时子程序 -DELAY: MOV R5,#10LOOP: MOV R6,#200LOOP1: MOV R7,#250LOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 DJNZ R5,LOOP RET例2:ORG0000HAJMPSTART ;跳转到初始化程序ORG0033H;- 主程序开始 -START:MOV P1,#0FFH ;是所有LED熄灭ACALL DELAY ;调用延时子程序MOVACC,#0FEH ;ACC中先装入LED3亮的数据(二进制的) MOV P1,
15、ACC ;将ACC的数据送P1口 ACALL DELAY ;调用延时子程序MOV R0,#03H ;上句送到P1口的数据就点亮了LED1,所以将数据再移动3次就完成一个4位流水过程 LOOP3: RL A ;将ACC中的数据左移一位 MOV P1,A ;把ACC移动过的数据送p1口显示 ACALL DELAY ;调用延时子程序 DJNZ R0,LOOP3 ;没有移动够4次继续移动 MOV P1, #0F0H ;LED3LED6全部发光ACALL DELAY ;调用延时子程序AJMP START ;返回到标号START处再循环;- 延时子程序 -DELAY: MOV R5,#10LOOP: MO
16、V R6,#200LOOP1: MOV R7,#250LOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 DJNZ R5,LOOP RET2、 输入实验例1:;*;* K1控制LED3亮灭交替 *;*org 0star: mov p1,#0h mov p3,#0ffhst1: jb p3.2,$ jnb p3.2,$ cpl p1.0 sjmp st1 end例2:;*;* 按压实验板上的按钮K1,控制P1.0的LED亮灭 *;* 按压K1,LED点亮,再次按压K1,LED熄灭 *;* 程序没有进行按键消抖动处理,控制结果会因为按键抖动而出错 *;* 按压K1十次,大概有35
17、次输出会因为按键抖动而发生错误 *;* 实验时请多按几次,观察一下效果,加深对按键消抖动重要性的认识 *;*ORG0000HAJMPSTART;跳转到初始化程序ORG0033HSTART:MOVSP,#60H;SP初始化MOVP3,#0FFH;端口初始化MAIN:JBP3.2,MAIN;检测按键K1有没有按下 CPLP1.0;执行按键命令,改变P1.0指示灯状态 JNBP3.2,$;等待按键K1释放 AJMPMAIN;返回重新检测按键 END例3:;*;* 按压实验板上的按钮K1,控制P1.0的LED亮灭 *;* 按压K1,LED点亮,再次按压K1,LED熄灭 *;* 程序进行了按键消抖动处理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导书 程序 2012 24
限制150内