单片机C语言 数据排序实验.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机C语言 数据排序实验

实验二 数据排序实验 一、实验目的 1. 熟悉51指令系统,掌握程序设计方法。 2. 掌握排序程序的设计方法。 二、实验内容 1. 本例程采用交换排序法将内部RAM 中的30~39H 单元中的10个单字节无符号二进制数按从小到大的次序排列, 将排序后的数据中的最大的一个数和最小一个数去掉,求其他八个数的和,和放40H,41H 中, 求这八个数的平均值,放在50H中。 三、实验步骤 1.用 C 语言或汇编语言编写程序。 2.编译、生成项目、下载程序,调试运行程序。 3. 用单步、断点、连续执行程序的方法调试程序。 4. 打开RAM数据窗口,分别观察看30H—39H、40H,41H(02H)(0C0H)和50H(58H)的单元。 四、实验参考程序 ORG 0000H JMP MAIN ORG 0100H MOV SP #60H MOV 30H,#5FH MOV 31H,#56H MOV 32H,#5AH MOV 33H,#5EH MOV 34H,#51H MOV 35H,#5BH MOV 36H,#53H MOV 37H,#58H MOV 38H,#57H MOV 39H,#55H NOP ; 设置断点 ACALL QUE NOP ACALL LEIJA NOP ACALL CHU8 NOP HERE: AJMP HERE 数据排序子程 累加序子程 除 8 序子程 QUE:?? MOV R3,#30H QUE1:?? MOV A,R3??? MOV R0,A MOV R7,#09H? CLR 00H?????????? MOV A,@R0 QL2:? INC R0 ? ?MOV R2,A ? ?CLR C ? ?MOV 22H,@R0 ? ?CJNE A,22H,QL3??? ? ?SETB C QL3:??? MOV A,R2 ? ?JC QL1???? SETB 00H ?? ?XCH A,@R0 ?? ?DEC R0 ?? ?XCH A,@R0 ?? ?INC R0?? QL1:??? MOV A,@R0 DJNZ R7,QL2 JB 00H,QUE1? NOP ??? RET LEIJA: MOV R0,#31H MOV R7,#8 CLR C CLR A MOV 40H,#00H JIA: ADD A,@R0 JC JIWEI JIA1: INC R0 DJNZ R7,JIA MOV 41H,A SJMP JS JIWEI: INC 40H SJMP JIA1 JS: RET CHU8: MOV 50H, 40H MOV 51H, 41H MOV R7,#3 CHU81: CLR C MOV A,50H RRC A MOV 50H,A MOV A, 51H RRC A MOV 51H,A DJNZ R7,CHU81 MOV 50H,51H RET END #includec8051f020.h #includestdio.h unsigned char a[10] _at_ 0x30; unsigned char data0 _at_ 0x40; unsigned char data1 _at_ 0x41; unsigned char data2 _at_ 0x50; void main() { unsigned char tmp; int num; int i,j; a[0]=0x5f; a[1]=0x56; a[2]=0x5a; a[3]=0x5e; a[4]=0x51; a[5]=0x5b; a[6]=0x53; a[7]=0x58; a[8]=0x57; a[9]=0x55; for(i=1;i10;i++) for(j=0;j10-i;j++) { if(a[j]a[j+1]) {tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;} } num=a[3]+a[4]+a[5]+a[6]; data1=num%0x100; data0=num/0x100; data2=num/4; } N N 数据排序子程序框图 Y 标志位=0? 结束 置标志位,交换内容 长度减1=0? (A)

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档