演示版单片机程序设计.pptVIP

  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 0000H LJMP START ORG 0100H START:MOV A,addr1 ;将addr1中内容送A CJNE A,addr2,LOOP1 ;两数比较,不相等则 转LOOP1 LOOP3:AJMP $ ;结束 LOOP1:JC LOOP2 ;当CY=1,转LOOP2 MOV addr3,A ;CY=0,(A)>(addr2) SJMP LOOP3 ;转结束 LOOP2:MOV addr3,addr2 ;CY=1,(addr2)>(A) SJMP LOOP3 END 课件 3.4 循环程序设计 在实际应用中经常会遇到功能相同,需要多次重复执行某段 程序的情况,这时可把这段程序设计成循环结构,这有助于 节省程序的存储空间,提高程序的质量。循环程序一般由4部 分组成。 1. 初始化。即设置循环过程中有关工作单元的初始值,如置循环次数、地址指针及工作单元清零等。 2. 循环体。即循环处理部分,完成主要的计算或操作任务,是重复执行的程序段。 3. 循环控制。每循环一次,就要修改循环次数、数据及地址指针等循环变量。并根据循环结束条件,判断是否结束循环。 4. 循环结束处理。对结果进行分析、处理、保存。 课件 循环程序结构有两种,如图3-7所示。 图3-7 循环程序结构 课件 图(a)是“先执行后判断”结构,适用于循环次数已知的情况。其特点是进入循环后,先执行循环处理部分,然后根据循环次数判断是否结束循环。 图(b)是“先判断后执行”结构,适用于循环次数未知的情况。其特点是将循环控制部分放在循环的入口处,先根据循环控制条件判断是否结束循环,若不结束,则执行循环操作;若结束,则退出循环。 课件 【例】50 ms软件延时程序。 软件延时程序一般都是由DJNZ Rn,rel指令构成。执行一条DJNZ指令需要两个机器周期。软件延时程序的延时时间主要与机器周期和延时程序中的循环次数有关,在使用12 MHz晶振时,一个机器周期为1μs,执行一条DJNZ指令需要两个机器周期,即2μs。适当设置循环次数,即可实现延时功能。 参考程序如下: ORG 0000H LJMP MEMS ORG 0100H MEMS: DEL: MOV R7,#125 ;外循环次数,该指令为一个机器周期 DEL1: MOV R6,#200 ;内循环次数 DEL2: DJNZ R6,DEL2 ;200×2=400μs (内循环时间) DJNZ R7,DEL1 ;0.4 ms×125=50 ms(外循环时间) SJMP $ END 课件 例2.循环程序设计举例 【例】有一数据块从片内RAM的30H单元开始存入,设数据块长度为10个单元。根据下式: X+2 X0 Y= 100 X=0 求出Y值,并将Y值放回原处。 ∣X∣ X0 解:设置一个计数器控制循环次数,每处理完一个数据,计数器减1。程序流程如图4-8所示。 课件 A=0? Y Y N N Y N A为负数? 取数,A←((R1)) 开始 结束 A←∣X∣ A←64H A←X+2 存数,((R1))←A(30H) 设置地址指针R1、计数器R0初值 R1←R1+1;R0←R0-1 R0=0? 图4-8 例4.5的程序流程图 返回本节 课件 参考源程序如下: ORG 2000H MOV R0,#10 MOV R1,#30H START: MOV A,@R1 ;取数 JB ACC.7,NEG ;若为负数,转NEG JZ ZER0 ;若为零,转ZER0 ADD A,#02H ;若为正数,求X+2 AJMP SAVE ;转到SAVE,保存数据 ZER0: MOV A,# 64H ;数据为零,Y=100 课件 AJMP SAVE ;转到SAVE,保存数据 NEG: DEC A CPL A ;求∣X∣ SAVE: MOV @R1,A ;保存数据 INC R1 ;地址指针指向下一个地址 DJNZ R0,START ;数据未处理

文档评论(0)

138****1998 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档