实验一系统认识实验一、实验目的1.掌握SICElab-G2200实验/仿真系统的结构与使用方法;2.熟悉单片机系统开发软件keilC51。
二、实验设备1.G2200 实验平台 1 台 2.仿真器/ 仿真板 1 台3.连线若干根 4.计算机 1 台三、实验内容P1端口接发光二极管,加1点亮。
四、连线方案:实验箱内部已连好五、实验步骤1.仿真器与实验平台的连接将Lab51板的DC34芯插座与G6W仿真器上的DC34插座用扁平电缆连接起来。
2.仿真器与计算机的连接用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2均可。
特别注意:在仿真器与计算机连接串口电缆时,两台机器必须都断电,否则易损坏计算机和仿真器。
3.实验连线按连线方案,用随机配带的实验连线插入孔后,轻轻转动一下锁紧插头,保证良好接触。
拆线时,应先回转一下,不要硬拨,以免损坏线路板。
不管是拆线还是插线,都应在断电的情况下进行。
实验中“连线方案”的粗线即为需用户动手接连的线。
4.检查接线是否有误,确信没有接错后,接上电源,打开电源开关。
5.在计算机上打开keil软件建立新程序ORG 0MOV P1,#0 ;熄灭发光二极管LOOP: INC P1CALL DelaySJMP LOOPDelay: MOV R2,#3 ;延时程序MOV R1,#0MOV R0,#0DLP: DJNZ R0,DLPDJNZ R1,DLPDJNZ R2,DLPRETEND6.建立新的项目7.设置项目8.编译程序选择菜单[项目 | 编译]功能或按编译快捷图标或按F9键,编译项目。
在编译过程中,如果有错可以在信息窗口中显示出来。
双击错误信息,可以在源程序中定位所在行。
纠正错误后,再次编译直到没有错误。
在编译之前,软件会自动将项目和程序存盘。
在编译没有错误后,就可以执行、调试程序了。
9.执行、调试程序六、实验结果七、实验总结实验二查表程序一、实验目的1.学习Keil uvision3单片机仿真软件的使用方法。
2.熟悉单片机实验操作步骤。
3.熟练掌握MOVC A,@A+DPTR和MOVC A,@A+PC两条查表指令的功能及应用原理。
通过实验进一步加深理解两条查表指令的异同。
4.掌握采用两条查表指令编写的实验程序的调试方法,验证程序的正确性。
二、实验设备PC机一台,keil uvision3软件三、实验内容采用查表法求1~20的平方数。
入口:自变量在累加器A中。
出口:平方高位数在R7中,低位在R6中。
分别采用MOVC A,@A+DPTR和MOVC A,@A+PC查表指令编写实验程序,并进行调试和验证;四、实验原理本次实验采用查表指令MOVC A , @A+DPTR实现上述字数据查表。
因为最大的自变量20的平方数是400,为了查表后验证方便,自变量1~20对应的平方数用伪指令DW定义,并且定义为压缩BCD码。
查表指令MOVC A , @A+DPTR只能进行字节查表,要查找一个字数据,必须进行两次查表。
利用指令MOVC A , @A+DPTR查表,表可以存放在任何位置,查表前只需要将表的首地址用MOV指令送DPTR、累加器A中必须是要查找数据在表中的偏移地址即可,查找到的数据存放在累加器A中。
编程时,首先将表的首地址送DPTR,累加器A中的自变量减1形成要查找数据在表中的序号,序号乘2得到表内偏移地址,将该偏移地址暂存到寄存器R6中,用MOVC A , @A+DPTR指令进行第一次查表,得到该自变量的平方高8位在累加器A中,并与R6进行交换,这样查找的平方高位数存放在寄存器R6中,累加器A中是第一次查表时的表内偏移地址;累加器A再加1,得到要查找的平方低位数在表内的偏移地址,再用MOVC A , @A+DPTR指令进行第二次查表,累加器A得到该自变量的平方低8位,送寄存器R7。
据此实验原理编写的实验源程序清单见附页。
ORG 0000HMOV A,#5 ;把要计算的自变量送入AMOV DPTR,#TABDEC A ;减一对齐RL A ;A乘以2MOV B,A ;保护AMOVC A,@A+DPTR ;高位MOV R6,AMOV A,B ;恢复AINC AMOVC A,@A+DPTR ;低位MOV R7,ASJMP $ORG 1000HTAB: DW 1,4,9,16,25,36,49,64,81,100DW 121,144,169,196,225,256,289,324,400END五、实验步骤1.在盘下为工程建立文件夹ZL1;2.新建工程项目文件ZL1.uv2,保存在文件夹ZL1中,并为工程选择目标器件为AT89S523.编辑源程序,建立源文件ZL1.ASM,保存在文件夹ZL1中;4.将源文件ZL1.ASM添加到工程项目组中;5.设置调试环境,选择调试模式为软件模拟;6.加载运行程序,根据预习设计的数据记录表格记录实验数据;7.实验数据经过实验指导教师检查正确后,实验结束。
实验数据记录见附页。
六、实验结果分析记录的实验数据经过计数器验证,全部正确,说明源程序设计正确、实验步骤正确。
七、心得体会1.第一次使用Keil uvision3单片机仿真软件,学习了它的使用方法和操作技巧,掌握了它的常用功能;2.通过实验,进一步掌握了MOVC A,@A+DPTR和MOVC A,@A+PC两条查表指令的功能。
理解了两条查表指令的异同。
3.通过实验,学会了查表指令程序的调试方法;4.。
(自己的体会)5.。
(自己的体会)。
(自己的体会)。
实验二多分支转移实验一、实验目的1.学习Keil uvision3单片机仿真软件的使用方法。
熟悉单片机实验操作步骤。
2. 熟练掌握MOVC A,@A+DPTR和MOVC A,@A+PC两条查表指令的功能及应用原理。
通过实验进一步加深理解两条查表指令的异同。
3.掌握采用两条查表指令编写的实验程序的调试方法,验证程序的正确性。
二、实验设备PC机一台,keil uvision3软件三、实验内容根据R2的值(1-4)实现四分支,分别实现对R7内容乘2,乘10,加10,除2操作,结果存于R6,R7中。
四、实验原理据此实验原理编写的实验源程序清单见附页。
源程序:ORG 0000HLJMP MAIN1ORG 1000HMAIN1: MOV DPTR,#TAB1MOV A,R2DEC ARL AJMP @A+DPTRTAB1: AJMP PROG1AJMP PROG2AJMP PROG3AJMP PROG4PROG1: MOV A,R7CLR CRLC AMOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONEPROG2: MOV A,R7MOV B,#10MUL ABMOV R7,AMOV R6,BSJMP DONEPROG3: MOV A,R7ADD A,#10MOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONEPROG4: MOV A,R7MOV B,#2DIV ABMOV R7,AMOV R6,BDONE: SJMP $END实验三数据排序实验一、实验目的1.掌握冒泡法排序的原理及编程技巧;2.熟练掌握双重循环程序的设计原理及方法;3.进一步掌握无符号数排序的编程及调试方法。
一、实验设备PC机一台,keil uvision3软件三、实验内容在起始地址为60H的数据存储区中,连续存放有10个无符号数,编程将其由大到小排序。
四、实验原理冒泡法是一种相邻数互换的排序方法,其过程类似于水中气泡上浮,故称冒泡法。
执行时从前向后进行相邻数比较,如果数据的大小次序与要求顺序不符时将相邻两个数互换,否则为正序不互换。
降序排序时通过这种方法,使较大的数向前移动,较小的数向后移动。
如此从前向后进行一次冒泡就会把最小数置于最后,再进行一次冒泡,就会把次小数排在倒数第二的位置,以此类推进行排序。
判断排序是否完成的方法是看冒泡中是否有互换发生,如果有数据互换,说明排序还没有完成,否则就表示已完成排序。
一般使用设置互换标志的方法,以其状态表示在一次冒泡中是否有数据互换来控制排序的结束。
据此实验原理编写的实验源程序清单见附页。
(注意程序中变动的内容)ORG 0000HLJMP PAIXU2ORG 1000HPAIXU2: MOV R7,#10 ;长度送R7LOOP1: DEC R7MOV A,R7MOV R6,ACLR F0 ;标志位为0MOV R0,#60H;从60H的地址开始存放数据LOOP2: MOV A,@R0 ;要确保A中数据是小数INC R0MOV R2,A;保护CLR CSUBB A,@R0 两数进行比较MOV A,R2;恢复JNC NEXT 第一个数大于第二个数跳转XCH A,@R0;交换DEC R0 ;A中原来存放是小数,经过交换后变为大数,必须把它放在该放的位置上,因为指针此时指的是后面一个单元的数据,所以必须减一。
MOV @R0,A INC R0SETB F0 ;标志位为1 NEXT: DJNZ R7,LOOP2 MOV A,R6 MOV R7,AJB F0,LOOP1 ;一次循环中有交换继续 DONE: SJMP $ ;无交换退出 END 五、实验步骤实验数据记录见附页 六、实验结果分析 七、心得体会实验四、外部中断控制实验一、实验目的5. 熟悉SICELab-G2200单片机实验系统的结构和实验方法。
6. 熟练掌握Keil uvision3单片机仿真软件的硬件仿真操作方法和步骤。
7. 学习和掌握外部中断源控制程序的编程和调试方法。
8. 学习和掌握验证中断优先级的实验设计步骤和技巧。
9. 通过实验验证外部中断源之间的中断优先级关系及其正确性。
二、实验设备PC 机一台,SICELab-G2200单片机实验系统一套 三、实验内容51单片机的外部中断0与脉冲单元的PUSH1连接,外部中断1与脉冲单元的PUSH2连接。
当响应外部中断0时,LED 指示灯D7D6点亮并顺次向右移动7次;当响应外部中断1时,LED 指示灯D0点亮并顺次向左移动8次。
编程设计外部中断的混合控制,并验证其中断优先级关系。
四、实验原理51单片机有5个中断源,这5个中断源之间的硬件优先权是固定的。
每个中断源可以设置高、低两个中断优先级。
通过改变中断源的优先级可以设置中断源之间的响应顺序。
其中的两个外部中断源,分别是外部中断0 0INT 和外部中断1 1INT ,通过单片机的P3.2引脚和P3.3引脚输入中断请求信号。
0INT 的硬件优先权比1INT 的高,当0INT 和1INT 同时发出中断请求时,先响应0INT 的中断请求,后响应1INT 的中断请求;为了使1INT 的中断请求先得到响应或能够打断0INT 的中断处理,实验中又重新设置1INT 的中断优先级为高,即PX1=1,0INT 的中断优先级为低,即PX0=0。