网站大量收购闲置独家精品文档,联系QQ:2885784924

AT89C51实验报告.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AT89C51实验报告

实验一 MCS-51指令系统实验——数据排序 一、实验目的 熟悉MCS-51指令系统,掌握程序设计方法;加深对内部存储器读写的认识;熟悉仿真开发环境,学会源程序的编写、汇编/编译、调试;熟悉单片机硬件实验系统以及良好的实验习惯培养等;学会检查结果的正确性。 二、实验内容 将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM,然后用冒泡法对其按从小到大的次序重新排列,并送到外部RAM 以8000H开始的地址单元内。 三、实验说明 有序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。 四、程序流程图 五、调试程序 ;第一步:将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM 40H~49H单元中。 ORG 0000H LJMP START1 ORG 0030H START1: MOV R0,#40H ;设置R0为内部RAM首地址 MOV R1,#10 ;设Rl为计数器 MOV DPTR,#TAB1 LOOP1: CLR A ; 累加器清零 MOVC A,@A+DPTR ;外部数据送累加器A中 MOV @R0,A ;送内部RAM INC R0 ;调整内部RAM指针,指向下一个数据 INC DPTR ;调整外部RAM指针 DJNZ R1,LOOP1 ;未完继续 ;第二步:排序。把片内RAM 40H~49H单元中的10个无符号数逐一比较,并按从小到大的顺序依次排列在这片单元中。 START2: CLR F0 ;清除交换标志位F0 MOV R3,#9 ;10个数据循环次数 MOV R0,#40H ;数据存放区首址 MOV A,@R0 ;取前数 L2: INC R0 MOV R2,A ;保存前数 SUBB A,@R0 ;前数减后数 MOV A,R2 ;恢复前数 JC L1 ;顺序则继续比较 SETB F0 ;逆序则建立标志位 XCH A,@R0 ;前数与后数交换 DEC R0 ;指向前数单元 XCH A,@R0 INC R0 ;仍指向后数单元 L1: MOV A,@R0 ;取下一个数 DJNZ R3,L2 ;依次重复比较 JB F0,START2 ;交换后重新比较 ;第三步:将内部数据RAM中40H~49H单元的内容传送到外部数据存储器以8000H开始的连续单元中去。 ;40H~49H共计10个单元,需传送10次数据。将Rl作为循环计数器。具体程序如下。 START3: MOV R0,#40H ;设置R0为内部RAM首地址 MOV DPTR,#8000H ;设置外部RAM首地址 MOV R1,#10 ;设Rl为计数器 LOOP: MOV A,@R0 ;取内部RAM数 MOVX @DPTR,A ;送外部RAM INC R0 ;调整内部RAM指针,指向下一个数据 INC DPTR ;调整外部RAM指针 DJNZ R1,LOOP ;未完继续 SJMP $ ;暂停 TAB1: DB 09H,04H,02H,08H,00H ;数0-9表 DB 00H,06H,07H,07H,0FH END 六、收获与体会 第一次用汇编语言在伟福6000环境下运行,感觉和VC6.0稍有不同,伟福6000调试界面非常丰富,有片内RAM——DATE;片外RAM——XDATE;代

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档