单片机期中作业题目一:冒泡法排序调试实验要求:假定8个连续存放在20H为首地址的内部RAM单元中,使用冒泡法升序排序编程。实验目的:掌握控制转移指令的功能,以及冒泡法排序的原理和学会调试KEIL软件。一、程序设计1、程序流程图开始置R0为20H前数送后数单元取后一个数取前一个数清交换标志位置R7为07H前数≤后数?排序结束置交换标志位后数送前数单元(R7)-1=0?交换标志=1?NYNY图1冒泡法程序流程图2、程序代码ORG0000H;;定义初始地址MOV20H,#10H;从20H到27H,八个随机数据MOV21H,#02HMOV22H,#24HMOV23H,#14HMOV24H,#11HMOV25H,#36HMOV26H,#30HMOV27H,#25HSORT:movR0,#20H;开始排序MOVR7,#07H;冒泡7次CLRTR0;清互换标志位LOOP:MOVA,@R0;取前一个数MOV2BH,A;存前一个数INCR0;偏移地址加一MOV2AH,@R0;;取后数CLRCSUBBA,@R0;前数减后数JZNEXT;前数小于等于后数,不互换JCNEXTMOV@R0,2BH;取后数DECR0MOV@R0,2AH;两个数互换INCR0;准备下一次比较SETBTR0;置互换标志NEXT:DJNZR7,LOOP;返回,进行下一次比较JBTR0,SORT;返回,进行下轮比较here:SJMPhere;;排序结束END二、程序验证1、调试开始2、在20H~27H中存入8个数,显示如下:3、开始第一次冒泡:第一次冒泡结果:4、第二次冒泡结果:5、对20H~27H中的8个数排序,结果如下:三、结论程序完全符合题目要求,从图中可以看出到第二次冒泡法的时候就已经排序完毕,所以为了节省资源,程序中设置了查询互换标志位来判断是否有必要在进行下一次冒泡排序。题目二:Keil与Protues连调实验要求:P1口的高4位接开关,低4位接LED,用开关控制相应的LED。有一按键接INT0,每按一次,根据开关点亮相应的LED。实验目的:掌握keil调试编程以及keil与protues连调方法。1、程序代码:ORG0000HAJMPmainORG0003HAJMPextrORG0040Hmain:SETBIT0;设置触发方式为低电平触发SETBEX0;开启外部中断0SETBEA;开总中断here:AJMPhere;等待中断extr:MOVA,#0F0H;设置初始状态MOVP1,AMOVA,P1;读开关传回来的信号CPLA;开关闭合低电平转换成能亮灯的高电平SWAPA;高低位交换送给LED等MOVP1,ARETIEND2、联调结果: