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

《单片机应用技术》项目2-软件延时流水灯控制.ppt

《单片机应用技术》项目2-软件延时流水灯控制.ppt

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

子情境1-2:软件延时流水灯控制 任务1-2-2 任务1-2-1 软件延时实现灯的闪烁及流动 1s软件延时程序的设计及调试 任务1-2-1:1s软件延时程序的设计及调试 任务要求:设计延时1s的软件延时程序 多重循环软件 延时1s程序设计 单循环软件延时 1ms程序设计 认识 单片机时序 Step 1 Step 2 Step 3 任务实施步骤 知识点小结 如何实现灯的流动及显示 灯的闪烁 即灯亮会——灭会——再亮——再灭……,所以要实现灯的闪烁,首先应能控制灯的亮灭,上一章的学习可以知道,P1.0引脚置‘0’灯亮,置‘1’灯灭。其次,闪烁的快慢可以通过控制亮灭的间隔时间实现,便涉及时间控制的问题。 灯的流动显示 先假设一只灯向左流动显示,即灯亮的顺序为D1——D2……——D7——D1——D2…… ,其实现方法是先将P1.0置‘0’,其它口置‘1’,点亮D1,间隔时间到后,将P1.1置‘0’,其它口置‘1’,点亮D2……依次循环下去。 因此,不管是闪烁还是流动控制,都需要延时,首先学习延时程序的设计。 1.如何进行时间控制 软件延时 利用单片机的空操作指令(即NOP指令,CPU执行该指令时,单片机不做任何事,仅仅占用CPU时间。)来实现,当点亮某只灯后就让CPU执行该指令,控制该指令的执行次数便可以控制延时时间。 定时器延时 利用单片机内部定时器实现硬件定时。 返回 Step 1 认识单片机时序 软件延时的前提是单片机CPU执行指令要花时间,而NOP指令更是专门为软件延时设计的指令之一,要控制延时时间,首先应弄清楚执行一次该指令要花多长时间。 Step 1 认识单片机时序 2.单片机的时序 时钟周期 时钟电路所提供给单片机的时钟信号的周期,单片机内部所有电路的工作时钟都来自于此,当时钟电路晶振频率为l2MHz,它的时钟周期就是 。 机器周期 单片机访问一次存储器的时间,称之为一个机器周期。一个机器周期包括12个时钟周期,如果一个单片机选择的时钟频率为l2MHz,机器周期则为 。 指令周期 所谓指令周期就是CPU指执行一条指令所花的时间。51单片机的所有指令中,按执行时间可分为单机器周期、双机器周期和4机器周期指令。 NOP指令属单机器周期指令,即,当时钟频率为l2MHz时,CPU执行一次NOP指令,将耗时 。 Step 1 认识单片机时序 Step 2 单循环软件延时1ms程序设计 根据上面的分析知道,执行一次NOP指令耗时 ,假设延时1s(即 ),则需要执行NOP指令次 ,我们不可能在程序中写 条NOP指令,利用循环结构可以很好的解决这个问题。 循环程序是一种常用的程序结构,其流程图如图,可知: 循环程序包括设置循环次数、设置循环初值、循环体、 次数修改及循环条件判断等,其中,循环体为需要多次 重复执行的程序块。 执行整个循环程序的耗时为: 1.汇编循环程序结构及执行时间 3 2.1ms延时程序设计 程序功能分析 单片机采用12Mhz晶振,机器周期为1us,要实现1ms软件延时,即需单片机执行1000个机器周期。 算法确定 采用循环程序,循环执行指令1000个机器周期。 程序流程图 假设循环次数为200次,则循环程序执 行时间包括: (1)循环体+循环次数修改判断两部分 程序要执行200次的耗时; (2)赋循环初值、循环次数等指令耗时 用R0寄存器存放循环次数,赋值200, 循环次数修改判断指令DJNZ执行1次耗时 2us,则循环体应安排三个NOP指令,执 行一次循环耗时3us,则每次循环耗时2+ 3=5us,5×200=1000us,实现了1ms的 延时。 汇编语言源程序 DELAY1ms:MOV R0,#200 ;设置循环次数及初值(1us) LP1: NOP ;循环体,执行三次NOP(3us) NOP NOP DJNZ R0,LP1 ;循环次数减1,不为0循环,为0退出循环2us 循环体执行200次 循环次数修改及判断,执行200次 耗时1ms 关键指令说明 DJNZ R0,LP1 该指令为一条件跳转指令,双机器周期指令,执行时间为

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档