当前位置:文档之家› 单片机实验指导书

单片机实验指导书

《单片机原理实验指导书》2013年03月单片机实验是学习单片机理论的重要实践环节。

其目的在于通过试验来验证和研究单片机理论,增强感性认识, 以促进认识的深化,培养学生科学的分析能力,使学生掌握单片机试验的操作方法和基本技能;培养学生严肃认真和实事求是的科学作风,锻炼科学实验的能力。

为了培养学生独立分析问题和解决问题的能力;培养学生的动手操作能力;为了更有效的完成每项实验,要求学生在实验前必须作充分预习。

除复习与实验有关的理论,还要认真研究实验指导书,了解实验目的、内容、弄清实验原理,掌握编程步骤、调试程序的方法。

本指导书是根据数控专业实验教学大纲的要求以及我校单片机实验室的现状编写的。

前言keil51软件使用简要说明---------------------------------------------------4实验一数据传送类指令实验----------------------------6实验二算术指令实验-----------------------------------9 实验三逻辑指令实验-----------------------------------------------------11 实验四控制转移和子程序调用实验-----------------------------------13 实验五典型程序设计-----------------------------------------------------14 实验六定时/计数器及中断实验---------------------------18keil51使用简要说明一、界面介绍(1)主要窗口1.编辑窗口2.工程窗口3.命令窗口4.输出窗口5.汇编代码显示窗口(2)菜单命令1.文件菜单2.编辑菜单3.视图菜单4.工程菜单5.调试菜单6.工具菜单7.外围器件菜单二、程序输入步骤1.新建项目,并选择要仿真的单片机型号,取名保存(默认文件类型为.uv2)。

2.新建源程序文件最好先取文件名,以.asm为后缀保存,再用汇编指令输入程序,输入完再保存一次。

3.在项目中添加刚才编好的源程序,并设置单片机的工作频率及选中生成.HEX 文件的选项。

4.编译源程序若输出窗口显示“0 Error(s) ,N Warning(s)”则表示通过汇编。

若提示有错误,则进入源程序修改,再保存,再编译,直到通过。

三、调试程序调试程序可采用全速运行、单步运行、断点运行。

1.全速运行(Run):程序从头到尾运行完,只能查看最终结果。

2.单步运行(Step into):一次只执行一条指令,可查看每条指令运行后的中间结果。

3.断点运行(Breakpoints):在程序中插入断点,按“全速运行”按钮,程序执行到断点处停下。

可查程序执行一段后的中间结果。

断点运行常用在子程序和延时程序的调试。

四、观察相关单元结果1.工作寄存器和特殊功能寄存器(在工程窗口)2.存储器(在存储窗口中)在存储窗口中可显示各种存储单元的内容。

通过在地址address后的编辑框中输入“字母:地址值”,按回车。

即可显示相应地址的内容。

其中:字母C 表示程序存储器单元字母D 表示片内数据存储器单元字母X 表示片外数据存储器单元地址值必须是十六进制数,以H结束。

3.并口(P0,P1,P2,P3)和串口在“peripherals(外围器件)”菜单下。

实验一数据传送类指令实验一、实验目的1.了解汇编程序的编写过程和调试过程。

2.掌握数据传送指令的使用和寻址方式的区别。

3.掌握不同传送指令与存储器的空间分布对应关系。

二、实验内容1.内部RAM的数据传送思考题将立即数48H送入内部RAM33H单元后,将其送到外部RAM 1000H单元,然后再将其读回送入内部RAM 50H单元。

编写程序上机调试,并指出33H、50H、1000H、A、DPTR各单元内容是多少?4.从ROM中取出数据分别给A赋不同的值(A的内容在0-7范围内变化),观察A和R1的变化。

思考题1.将立即数23H送入内部RAM30H单元,将立即数45H送入内部RAM40H单元,将立即数55H送入A,将A的内容与40H单元交换,结果放到R2,利用寄存器间接寻址的方法将A的内容与内部RAM30H地址内容交换并将其存储到寄存器R3中。

编写程序,观察程序执行过程。

2.将立即数23H送入R1,将立即数45H送入P1口,将立即数55H送入A,保持A的内容不变,将立即数03H输入到A并将A的内容送到P1口,恢复A、P1的内容后,将R1的结果送到A。

编写程序,观察程序执行过程中A、P1、R1的变化。

实验二算术指令实验一、实验目的1.了解算术指令的操作。

2.掌握加减法的使用,并上机调试观察运行结果。

3.了解乘除法指令的操作。

二、实验内容1.加减法实验1)将98H与DAH相加再与C8H相加计算其和。

和的低8位保存在R1,和的高82)将2384H减00FCH求其差。

差的低8位保存在R3,差的高8位保存在R4。

实验三逻辑指令实验一、实验目的1.了解如何运用逻辑运算指令进行数据循环移位、逻辑与、或、异或运算操作。

2.掌握逻辑运算程序的编写规则,上机调试并观察运行结果。

二、实验内容实验四控制转移和子程序调用实验一、实验目的1.了解如何利用控制转移指令和子程序调用指令进行程序转移。

2.掌握利用控制转移指令、子程序调用指令编制程序的方法。

二、实验内容实验五典型程序设计一、实验目的1.了解汇编伪指令与硬指令的区别。

2.掌握常用伪指令的应用。

3.掌握顺序程序、分支程序、循环程序和子程序的编写。

4.熟悉典型程序的设计。

二、实验内容1.多个单字节数累加把BLOCK单元开始存放的10个无符号数(单字节数)进行求和,并将结果存人SUM单元中。

(不考虑和大于255)源程序:ORG 0000HLJMP MAINORG 0030HLEN EQU 10SUM EQU 21HBLOCK EQU 22HMAIN: CLR AMOV R7, #LENMOV R0, #BLOCKLOOP: ADD A,@R0INC R0DJNZ R7,LOOPMOV SUM ,ASJMP $END2.多字节加法程序例三字节无符号数加法。

设一个加数存放在内部RAM的50H,51H,52H单元,另一个加数存放在内部RAM的53H, 54H, 55H单元,相加的结果存放在内部RAM的50H,51H,52H单元,进位存放在位寻址区的00H位中。

ORG 0000HLJMP MAINORG 0030HMAIN:MOV R0,#52H;一个加数的低字节地址MOV A,@R0;ADD A,@Rl;低字节相加MOV @R0,A;存低字节相加结果DEC R0;DEC Rl;MOV A,@R0;ADDC A, @Rl;中间字节带进位相加MOV @R0,A;存中间字节相加结果DEC R0;DEC Rl;MOV A, @R0;ADDC A,@R1;高字节带进位相加MOV @R0,A;存高字节相加结果MOV 00H,C;存进位SJMP $END思考:试用循环结构实现上述要求。

3.两个无符号数的比较设内部RAM40H和41H单元中有两个无符号数,要求找出其中的大数,并将其存入40H单元,小数存入41H单元。

源程序:ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,40HCLR CSUBB A, 41HJNC WAITMOV A,40HXCH A,41HMOV 40H,AWAIT: SJMP $END4.统计字符串长度程序设字符串存放在内部RAM 21H开始的单元中,以“$”作为结束标志,现求该字AJMP MAINORG 0030HMAIN: CLR A;计数器清0MOV R0,#21H;R0为地址指针指向首地址LOOP: CJNE @R0,#24H,NEXT;取数与“$”比较SJMP COMP ;找到“$”结束NEXT: INC A;找不到“$”,继续INC R0SJMP LOOPCOMP: MOV 20H,A;存结果SJMP $END5.字符串传送将内部RAM中起始地址为data1的数串传送到外部RAM中起始地址为buffer的存储区域内,直到发现‘$’字符,停止传送。

源程序:ORG 0000HLJMP MAINORG 0030HDATA1 EQU 30HBUFFER EQU 1000HMAIN: MOV R0, #DATA1MOV DPTR ,#BUFFERLOOP1: MOV A,@R0CJNE A,#24H , LOOP2SJMP OVERLOOP2: MOVX @DPTR ,AINC R0INC DPTRSJMP LOOP1OVER: SJMP $END6. 查表程序编写程序,实现Z=X2+Y2。

设X,Y,Z分别存于内部RAM的20H, 21H, 22H三个单元中。

ORG 0000HX EQU 20HY EQU 21HZ EQU 22HSTART: MOV A,X;取XACALL SQR;调用查平方表求X2MOV R1,A;X2暂存于R1中MOV A,Y;取YACALL SQR;调用查平方表求Y2ADD A,Rl;X2+Y2存于A中MOV Z, A;结果存于SJMP $SQR: MOV DPTR,# TAB;子程序MOVC A, @A+DPTR;RETTAB: DB 0,1,4,9,16DB 25,36,49,64,81END7.流水灯程序用P1口连接的8个LED模拟霓虹灯的显示方式。

编程实现按照从P1.0到P1.7的顺序,依次点亮其连接的LED。

ORG 0000HLJMP STARTORG 0030HSTART: MOV R2, #08H ;设置循环次数MOV A, #0FEH ;从P1.0→P1.7使LED逐个亮过去点亮LEDNEXT: MOV P1,AACALL DELAY;调用延时RL A ;左移一位DJNZ R2, NEXT ;次数减1,不为零,继续点亮下一个LEDSJMP START ;反复点亮DELAY: MOV R7,#200;50ms延时子程序DEL1: MOV R6,#246NOPDEL2: DJNZ R6,DEL2DJNZ R7,DEL1RETEND实验六定时/计数器及中断实验一、实验内容1.了解定时/计数器的结构,掌握定时/计数器的初始化。

2.掌握单片机中断系统的设置。

3.掌握定时/计数器一般应用。

二、实验内容1.有一包装流水线,产品每计数24次时发出一个包装控制信号。

编写程序完成这一计数任务。

源程序:ORG 0000HLJMP MAIN ;跳到主程序ORG 000BH ;T0的中断入口地址LJMP DVT0 ;转向中断服务程序ORG 0030HMAIN: MOV TMOD,#06H ;置T0作计数器用,工作于方式2MOV TH0,#0E8H ;装入计数初值MOV TL0,#0E8HSETB ET0 ;T0开中断SETB EA ;CPU开中断SETB TR0 ;启动T0开始工作SJMP $ ;等待中断ORG 0050HDVT0: SETB P1.0 ;中断服务程序NOPNOPCLR P1.0RETI ;中断返回END2.利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为12MHZ。

相关主题