单片机系统设计与应用实例 教学课件 作者 韩志军 主编 第三章.pptVIP

单片机系统设计与应用实例 教学课件 作者 韩志军 主编 第三章.ppt

  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文档。上传文档
查看更多
程序如下: ORG 1000H MOV R0, #30H ; 数据区首地址送R0 MOV R3, #63H ; 设置外循环次数在R3中 LP0: CLR 7FH ; 交换标志位2FH.7清0 MOV A, R3 ; 取外循环次数 MOV R2, A ; 设置内循环次数 MOV R0,#30H ; 重新设置数据区首址 LP1: MOV 20H, @R0 ; 数据区数据送20H单元中 MOV A, @ R0 ; 20H内容送A INC R0 ; 修改地址指针(R0+1) MOV 21H, @ R0 ; 下一个地址的内容送21H CLR C ; Cy清0 SUBB A, 21H ; 前一个单元的内容与下一个单元的内容比较 JC LP2 ; 若有借位(Cy =1),前者小,程序转移到LP2处执行, 若无借位(Cy =0),前者大,不转移,程序往下执行 MOV @ R0, 20H ; 前、后内容交换 DEC R0 MOV @ R0, 21H INC R0 ; 修改地址指针(R0+1) SETB 7FH ; 置位交换标志位2FH.7为1 LP2: DJNZ R2, LP1 ; 修改内循环次数R2(减少), 若R2≠0,则程序转到LP1 处仍执行循环, 若R2=0,程序结束循环,程序往下执行 JNB 7FH, LP3 ; 交换标志位2FH.7若为0,则程序转到LP3处结束循环 DJNZ R3, LP0 ; 修改外循环次数R3(减少), 若R3≠0,程序转到LP0处, 执行仍循环, 若R3=0,程序结束循环,往下执行 LP3: SJMP $ ; 程序执行完,“原地踏步” END 3.4.5 查表程序设计 查表:根据存放在ROM中数据表格的项数来查找与它对应的表中值。 适用场合:主要应用于数码显示、打印字符的转换、数据转换等场合。 1. 采用MOVC A, @A+DPTR指令查表程序的设计方法 (1)在程序存储器中建立相应的函数表(设自变量为X)。 (2)计算出这个表中所有的函数值Y。将这群函数值按顺序存放在起始(基)地址为TABLE的程序存储器中。 (3)将表格首地址TABLE送入DPTR,X送入A,采用查表指令MOVC A, @A+DPTR完成查表,就可以得到与X相对应的Y值于累加器A中。 2. 采用MOVC A, @A+PC指令查表程序的设计方法 当使用PC作为基址寄存器时,由于PC本身是一个程序计数器,与指令的存放地址有关,查表时其操作有所不同。 (1)在程序存储器中建立相应的函数表(设自变量为X)。 (2)计算出这个表中所有的函数值Y。将这群函数值按顺序存放在起始(基)地址为TABLE的程序存储器中。 (3)X送入A,使用ADD A, #data指令对累加器A的内容进行修正,偏移量data由公式data=函数数据表首地址?PC?1确定,即data值等于查表指令和函数表之间的字节数。 (4)采用查表指令MOVC A, @A+PC完成查表,就可以得到与X相对应的Y值于累加器A中。 [例题8]利用查表的方法编写Y=X2(X=0, 1, 2,…, 9)的程序。 解:设变量X的值存放在内存30H单元中,求得的Y的值存放在内存31H单元中。平方表存放在首地址为TABLE的程序存储器中。 方法一:采用MOVC A, @A+DPTR指令实现,查表过程如下图2.所示。 程序如下: ORG 1000H START: MOV A, 30H ; 将查表的变量X送入A MOV DPTR, #TABLE ; 将查表的16位基地址TABLE送DPTR MOVC A, @A+

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档