第三章MCS-51单片机指令系统及汇编语言程序设计资料.ppt

第三章MCS-51单片机指令系统及汇编语言程序设计资料.ppt

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

[例3] 编写一段延时程序。 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) =1 μs×(1+4MT) 2.多重循环程序设计  软件延时程序一般用双重或多重循环程序来设计。     例4? 延时100?ms的程序(双重循环)。   设使用的晶振频率为12?MHz,一个机器周期的时间为1?μs,执行一条减1不等于0转移指令DJNZ的时间为2?μs,延时100?ms则要循环50 000次,用一个寄存器作计数器装不下,故用两个寄存器作计数器,构成双重循环程序。 程序如下: D1: MOV R1,#250 D11:?MOV R0,#200 D12:?DJNZ R0,D12 ;延时0.4?ms   ??DJNZ R1,D11 ;延时100?ms   ??RET 五、查表程序设计 查表程序是一种常用程序, 它广泛使用于LED显示控制、 打印机打印控制、数据补偿、数值计算、转换等功能程序中, 这类程序具有简单、执行速度快等特点。  所谓查表法, 就是预先将满足一定精度要求的表示变量与函数值之间关系的一张表求出, 然后把这张表存于单片机的程序存储器中, 这时自变量值为单元地址, 相应的函数值为该地址单元中的内容。查表, 就是根据变量X在表格中查找对应的函数值 Y, 使Y=f(X)。 MCS - 51指令系统中,有两条查表指令: MOVC A, @A+PC MOVC A, @A+DPTR 【例 1】一个十六进制数存放在内部 RAM 的 HEX单元的低 4 位中, 将其转换成ASCII码并送回 HEX单元。 十六进制 0~9的ASCII码为:30H~39H, A~F的ASCII码为41H~46H, ASCII码表格的首地址为ASCTAB。编程如下: ORG 1000H  HEXASC: MOV A, HEX ANL A, #0FH ADD A, # 3 ; 修改指针 MOVC A, @A+PC MOV HEX, A RET ASCTAB: DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H DB 46H 在这个程序中, 查表指令MOVC A, @A+PC到表格首地址有两条指令, 占用 3 个字节地址空间, 故修改指针应加 3。   【例2】设有一个MCS-51单片机控制系统,需按照从键盘输入的命令执行不同的操作。输入命令为ASCII字符串形式,放在由(R0)指示的内部RAM中。命令共有RESET、BEGIN、STOP、SEND、CHANNEL、CHANGE六种,分别称为00H、01H、02H、03H、04H、05H号命令。现要求按(R0)指示的字符串,找出对应的命令号,放到R2中。   本例是根据键入的ASCII字符串形式的命令查找相应的命令号。设ASCII字符串以x表示,命令号以y表示,则x具有范围大且为任意字长的特点,而y为固定字长,其取值为小于或等于5的自然数。   对于此种表格的查找可这样来处理,即在表格中只存放x(每个命令的ASCII字符串),且在每个x的最后设特定的结束标志,例如,可以将每个命令的字符串最后一个字符的最高位设为1。表格的最后一个单元存0表示表格的结束。查找的过程是直接从内部RAM中按顺序逐个取出字符,与ROM的表格中预先按顺序存放的命令字符串的每个字符相比较。   在下述的

文档评论(0)

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

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

1亿VIP精品文档

相关文档