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

(单片机原理及应用)电子教案 - 第4章 汇编 语言程序设计_11.pptVIP

(单片机原理及应用)电子教案 - 第4章 汇编 语言程序设计_11.ppt

  1. 1、本文档共74页,可阅读全部内容。
  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文档。上传文档
查看更多
两条指令的功能完全相同,具体使用有差别。 指令“MOVC A,@A+DPTR” 把A中内容与DPTR中的内容相加,结果为某一程序存储单元的地址,然后把该地址单元的内容送到A中。 指令“MOVC A,@A+PC” ,PC的内容与A的内容相加后所得的数作为某一程序存储器单元的地址,根据地址取出程序存储器相应单元中的内容送到累加器A,指令执行后,PC的内容不发生变化,仍指向该查表指令的下一条指令。 优点:在于预处理较少且不影响其他特殊功能寄存器的值,不必保护其他特殊功能寄存器。 * 缺点:在于该表格只能存放在这条指令的地址X3X2X1X0以下00H~FFH之中,即只能存放在地址范围X3X2X1X0+1~X3X2X1X0+100H中,这就使得表格所在的程序空间受到了限制。 下面说明查表指令的用法和计算偏移量应注意的问题。 【例4-3】 设计一子程序,功能是根据累加器A中的数x(0~9之间)查x的平方表y,根据x的值查出相应的平方y。本例中的x和y均为单字节数。 ?? 地 址 子程序 Y3Y2Y1Y0 ADD A,#01H Y3Y2Y1Y0+2 MOVC A,@A+PC Y3Y2Y1Y0+3 RET Y3Y2Y1Y0+4 DB 00H,01H,04H,09H,10H DB 19H,24H,31H,40H,51H ;数0~9的平方表 * 指令“ADD A,#01H”的作用是A中的内容加上 “01H”, “01H”即为查表指令与平方表之间的“RET”指令所占的字节数。加上 “01H”后,可保证PC指向表首,累加器A中原来的内容仅是从表首开始向下查找多少个单元。 在进入程序前,A的内容在00~09H之间,如A中的内容为02H,它的平方为04H,可根据A的内容查出x的平方 指令“MOVC A,@A+DPTR” 应用范围较广,使用该指令时不必计算偏移量,优点是表格可以设在64KB程序存储器空间内的任何地方,而不像“MOVC A,@A+PC”那样只设在PC下面的256个单元中,所以使用较方便。 * 如果DPTR已被使用,则在查表前必须保护DPTR,且结束后恢复DPTR,例4-3可改成如下形式: ? PUSH DPH ;保存DPH PUSH DPL ;保存DPL ?? MOV DPTR,#TAB1 MOVC A,@A+DPTR POP DPL ;恢复DPL POP DPH ;恢复DPH RET TAB1: DB 00H,01H,04H,09H,10H;平方表 ?? DB 19H,24H,31H,40H,51H 实际查表,有时x为单字节数,y为双字节数。来看下例。 * 【例4-4】有一巡回检测报警装置,需对16路(x)输入进行检测,每路有一个最大允许值(y),为双字节数。需根据测量的路数(x),查表找出对应该路的最大允许值(y),看输入值是否大于最大允许值,如果大于就报警。 取路数为x(0≤x≤15),y为最大允许值,放在表格中。设进入查表程序前,假设路数x已放于R2中,查表后该路的最大允许值y放于R3R4中。查表的程序如下: * ?TB3: MOV A,R2 ADD A,R2 ;(R2)*2→(A) MOV R3,A ;保存指针 ADD A,#6 ;加偏移量 MOVC A,@A+PC ;查第一字节 XCH A,R3 ADD A,#3 MOVC A,@A+PC ;查第二字节 MOV R4,A RET TAB3: DW 1520,3721,42645,7580 ;最大值表 DW 3483,32657,883,9943 DW 10000,40511,6758,8931 DW 4468,5871,13284,27808 * 表格长度不能超过256B,且表格只能存放于“MOVC A,@A+PC”指令以下的256个单元中,如需把表格放在程序存储器空间的任何地方,应使用指令“ MOVC A,@A+DPTR”。 【例4-5】 以AT89S51为核心的温度控制器,温度传感器输出的电压与温度为非线性关系,传感器输出的电压已由A/D转换为10位二进制数。测得的不同温度下的电压值数据构成一个表,表中温度值为y(双字节无符号数),x(双字节无符号数)为电压值数据。设测得电压值x放入R2R3中,根据电压值x,查找对应的温度值y,仍放入R2R3中。

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档