资源描述:
《山大单片机实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机实验报告孙洪悦20112.1实验1:汇编程序实验12.1.2自我完成实验(1)实验内容将片内RAM30H单元中的8位二进制数转换成10进制数。希望转换后的结果保存于31H和32H,31H低4位存放个位,高4位存放十位,32H低4位存放百位,高4位为0自我完成实验程序ORG0000HAJMPMAINORG0030HMAIN:MOVSP,#62H;MOV30H,#0AFH;先将30H写上100MOVR0,#32H;将百位地址送R0MOVA,30H;这句写错了,应该是将30H的内容送给A,而不是30H,我误写成了#30HMOVB,#64H;除数为100DIVAB;AB相除MOV@R0,
2、A;将百位的数送给32H地址MOVA,B;将余数送给AMOVB,#0AH;将10送BDIVAB;AB相除SWAPA;高低四位交换DECR0;R0减1到31HMOV@R0,A;将十位送31H的高四位MOVA,BANLA,#0FHORL31H,A;31高低四位分别存十和百位SJMP$END2.1总结与提高:本程序用了一个小算法,一个三位数数X除以100,商a为百位,余数为:X-100*a再用此余数除10,商为十位,余数为个位。2.2实验2:汇编程序实验22.2.2自我完成实验(1)实验内容将片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,请按从小到大的顺序进行排序,排序后
3、的数据仍然保存到30H开始的32个单元中(低地址存放小数据)。程序及其注释②自我完成实验程序第一种排序方法:ORG0000HAJMPMAINORG0090HMAIN:MOVSP,#62H;MOVA,#0HMOVR1,#30HMOVR7,#20HMOVDPTR,#TABLEMOVR0,#1FH;执行31次LOOP1:MOVCA,@A+DPTRMOV@R1,AINCR1INCDPTRMOVA,#0HDJNZR7,LOOP1;执行32次循环,在30-4F写表格数据LOOP2:MOVR1,#30H;将起始地址给R1MOVA,R0;R0为执行31次MOVR2,A; 把进行一次冒泡的次数存到R
4、2中LOOP3:CLRC;清CMOVA,@R1; ;比较开始,取第一个数MOVR3,A;腾出累加器INCR1;指向下一个地址SUBBA,@R1;取后一个数,并与前一个数相减,看是否有CY位溢出,溢出则说明前一个数小,要换位JCLOOP4;前一个数小的情况下,两个数交换位置,否则,继续执行MOVA,R3; 把后一个数存到累加器下XCHA,@R1;累加器的数与R1指向的数交换位置,即;前一个数和后一个数交DECR1;R1自减,准备将后面的数存到前面MOV@R1,A;将后面的数存到前面INCR1;R1自增,准备下次转换,以上五行为交换LOOP4:DJNZR2,LOOP3;R2自减,为
5、下次冒泡准备DJNZR0,LOOP2;跳回去进行下一轮冒泡SJMP$ORG30HTABLE:DB1,3,9,2,17,4,11,6DB5,20,100,64,21,14,79,35DB92,7,91,23,65,16,13,18DB18,73,65,101,27,19,62,69END第二种排序方法;ORG0000HAJMPMAINORG0090HMAIN:MOVSP,#62H;MOVA,#0HMOVR1,#30HMOVR7,#20HMOVDPTR,#TABLEMOVR0,#1FH;执行31次LOOP1:MOVCA,@A+DPTRMOV@R1,AINCR1INCDPTRMOVA,#0H
6、DJNZR7,LOOP1;执行32次循环,在30-4F写表格数据LOOP2:MOVR1,#30H;将起始地址给R1MOVA,R0;R0为执行31次MOVR2,A; 把进行一次冒泡的次数存到R2中MOVR4,#30H;R4存的是最大数的位置LOOP3:CLRC;清CMOVA,@R1; ;比较开始,取第一个数MOVR3,A;腾出累加器INCR1;指向下一个地址MOVA,@R4SUBBA,@R1;取后一个数,并与前一个数相减,看是否有CY位溢出,溢出则说明前一个数小,要换位JCLOOP4;前一个数小的情况下,两个数交换位置,否则,继续执行;MOVA,R3; 把后一个数存到累加器下
7、;XCHA,@R1;累加器的数与R1指向的数交换位置,即;前一个数和后一个数交;DECR1;R1自减,准备将后面的数存到前面;MOV@R1,A;将后面的数存到前面;INCR1;R1自增,准备下次转换,以上五行为交换DJNZR2,LOOP3;R2自减,为下次冒泡准备LOOP4:MOVA,R1;MOVR4,ADJNZR2,LOOP3DJNZR0,LOOP2;跳回去进行下一轮冒泡SJMP$ORG30HTABLE:DB1,3,9,2,17,4,11,6