实用程序举例.pptVIP

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

4.4 实用程序举例 4.4.1 延时 在程序设计过程中,有时需要程序“等待”一会儿再去处理某些事情,称之为延时。计算机延时实际就是让计算机反复执行一些空操作,这样就能起到拖延时间的作用。需要执行空操作次数的多少,取决于延时时间的长短。 [例4.15] 编写一段延时程序。 ORG 2000H ;周期数×执行次数 MOV R0,#MT ;1×1 DL:NOP ;1×MT NOP ;1×MT DJNZ R0,DL ;2×MT 该程序的延时时间与系统所用的晶振和程序中每条指令的机器周期及其执行次数MT有关。设系统晶振为12 MHz,则可知一个机器周期为: T=1s/(12×106 )×12=1 μs 延时时间=T×(1×1+1×MT+1×MT+2×MT) =1 μs×(1+MT+MT+2MT) (4-1) [例4.16] 用双重循环完成延时程序。 程序如下: MOV R0,#MT1 ;1×1 DL1:MOV R1,#MT2 ;1×MT1 DL2:NOP ;1×MT2×MT1 NOP ;1×MT2×MT1 DJNZ R1,DL2 ;2×MT2×MT1 DJNZ R0,DL1 ;2×MT1 设晶振仍为12 MHz,则上面程序的执行时间T为: T=1μs×(1+1×MT1+1×MT2×MT1+1×MT2×MT1+2× MT2×MT1+2×MT1) (4-2) 4.4.2 代码转换 1.十六进制到ASCII码的转换 [例4.17] 将20H单元中的两个十六进制数转换成ASCII码,低4位的ASCII码保存在21H单元,高4位的ASCII码保存在22H单元。 由ASCII编码表可知,转换方法为:若十六进制数小于 10,则此数加30H,否则加上37H就可以将十六进制数转换成ASCII码。 MOV A,20H ;(20H)→A ANL A,0FH ;屏蔽高4位 ACALL CHANGE ;求低位十六进制数的ASCII码 MOV 21H,A ;保存低位十六进制数的ASCII码 MOV A,20H ;(20H)→A ANL A,#0F0H ;屏蔽低4位 SWAP A ;高位十六进制数送低4位 ACALL CHANGE ;求高位十六进制数的ASCII码 MOV 22H,A ;保存高位十六进制数的ASCII码 RET CHANGE: PUSH A ;操作数进栈保护 CLR C ;进位标志清零 SUBB A,#0AH ;与10比较 POP A ;取出操作数 JC NUM ;比10小转NUM ADD A,#07H ;大于等于10加37H NUM: ADD A,#30H ;加30H RET 2.单字节二进制数转换为BCD数 [例4.18] 已知20H单元存放一个二进制数,编程将它转换为BCD数,百位送入FIRST单元的低4位,十位和个位分别送入SECOND单元的高4位和低4位。 本题只需将20H单元中的内容除以100,得到的商就是百位BCD数,然后用余数除以10,其结果中,商为十位BCD数,余数为个位BCD数。 ORG 0100H FIRST DATA 30H SECOND DATA 31H MOV A,20H ;被除数送A MOV B,#64H ;除数100送B DIV AB ;A除以B MOV FIRST,A ;百位BCD数送FIRST MOV A,B ;余数送A MOV B,#0AH ;除数10送B DIV AB ;A除以B SWAP A ;十位BCD数送高4位 ORL A,B ;十位和个位BCD数组合成一个字节 MOV SECOND,A ;送入SECOND单元 SJMP $ ;结束 END 4.4.3 数据处理 1.查询 [例4.19] 在外部RAM 1000H开始的地址单元中存放30个数据,找出其中的奇数存入内部RAM 20H开始的存储单元中,并统计奇数的个数,存入3FH单元。

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档