单片机基础第4章.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文档。上传文档
查看更多
数据大小的比较常用以下两种方法:一种是两数相减(放在A中的数据将被破坏),然后查看Cy,程序流程如图4-5所示。另外一种是直接用比较转移指令(A中数据不被破坏),然后查看Cy。 图4-4 分支程序 图4-5 数据判断流程图 程序如下:X DATA 30H ;地址赋值伪指令DATA Y DATA 31H ORG 0000H SJMP ST ORG 0030H ST: MOV A,X ;(X) →A CLR C ;Cy=0 SUBB A,Y ;带借位减法,A-(Y)-Cy→A JC OUT1 ;Cy=1,转移到OUT1 CLR P1.0 ;(30H)≥(31H),点P1.0上LED SJMP STOP ;跳转到结束等待 OUT1: CLR P1.1 ;(30H)(31H),点P1.1上LED STOP: SJMP $ END 【例4-10】已知电路如图4-6所示,要求实现: (1)K0单独按下,只有红灯(R)亮 (2)K1单独按下,只有绿灯(G)亮 (3)K0、K1均按下,红、绿、黄灯(Y)全亮 (4)其余情况黄灯亮 图4-6 信号灯电路 本例为开关量(状态)的判断,流程如图4-7所示。 图4-7 信号灯流程图 程序如下: ORG 0000H SJMP START ORG 0030H START: MOV P1,#0FFH ;设置P1.0、P1.1为输入方式,红、绿、黄灯灭 LOOP: JNB P1.0,K1 ;查P1.0是否为0 JNB P1.1,GREEN CLR P1.4 ;亮黄灯,灭红、绿灯 SETB P1.2 SETB P1.3 SJMP LOOP GREEN: CLR P1.3 ;亮绿灯,灭红、黄灯 SETB P1.2 SETB P1.4 SJMP LOOP K1: JNB P1.1,ALL RED: CLR P1.2 ;亮红灯,灭绿、黄灯 SETB P1.3 SETB P1.4 SJMP LOOP ALL: CLR P1.2 ;红、绿、黄灯全亮 CLR P1.3 CLR P1.4 SJMP LOOP END 4.2.3 循环程序设计 在应用系统中,往往需要反复执行某种动作,比如对连续的一批内存单元做同样的初始化,又如将内存中成批数据送到外部端口等,这种任务的特点是有“批量”且动作行为“重复”,采用循环结构可以解决此类问题,并使程序变得高效简单。循环结构有两种组织形式,分别如图4-8的(a)、(b)所示,其中初值一般包括数据区的首地址、循环次数等。循环体是“重复”执行的动作描述,一般采用间接寻址。 (a) (b) 图4-8 循环程序流程 【例4-11】将内部RAM 20H开始的30个数据送到外部RAM 2000H开始的各单元。 本题是典型的数据批量传送例子,相当于计算机操作中的“块复制”。程序如下: 【例4-12】试编写统计数据区长度的程序,设数据区从片内RAM 20H单元开始,以数据值为0为结束,统计结果存入1FH单元。 ORG 0000H SJMP START ORG 0030H START: MOV R0,#20H ;内部数据区首地址,用R0或R1 MOV 1FH,#0 ;统计单元初始化0 LOOP: MOV A,@R0 ;取源数据,要用间接寻址 JZ STOP ;若单元中数据为0,则表示数据结束 INC 1FH ;统计+1 INC R0 ;单元地址+1 SJMP LOOP STOP: SJMP $ END DELAY: MOV R6,#n1 DL1: MOV R5,#n2 DL2: NOP NOP DJNZ R5,DL2 DJNZ R6,DL1 SJMP $ 【例4-13】设计时间为t的延时程序。 循环程序的一个用处就是设计延时程序,在LED动态扫描和键盘扫描“消抖”中经常要用到,一般的延时用双重循环就可以了。以下是双重循环延时的基本程序: 在上述程序中,“MOV R6,# n1”运行了1次,“MOV R5,# n2”和“DJNZ R6,DL1”各运行了n1次,“NOP NOP DJNZ R5,DL2”运行了n1×n2次(每

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档