c51第02课,用指令方式延时闪烁LED灯指南.pdf

c51第02课,用指令方式延时闪烁LED灯指南.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二课,用指令方式延时闪烁 LED 灯 本章将学习如何使 LED 闪烁,和如何查看变量的值。 单片机内部的 CPU 工作都是要靠时钟驱动的。在标准 51 芯片中,每个指令周期是 12 个时钟。所以只要外部时钟固定,某一条指令运行的时间也是固定的。比如本试验中的 单片机晶振振荡输出的时钟是 11.0592MHZ,一条单周期指令执行的时间就是 12/11.0592M 秒,这样如果你想在程序里延迟一段时间,就可以用循环执行多少条指令来实现。这是一个 最简单的延时方法,优点是不占用其他的单片机资源,缺点是不容易计算准确延时时间,而 且延时过程中 CPU 无法做其他工作。指令延时方法一般用在一些不用精确计时的场合。在 需要精确计时的场合,需要使用定时器,在之后的课程中将会学到。 现在请打开 lesson02code 目录下的工程文件。 如图: 程序由一个循环组成,在点亮 P10 口的 LED 之后,延时一段时间,再灭掉 LED,又延 时一段时间,之后循环到前面。 for()循环后面直接一个分号,表示这个循环里面什么事情也不做,就等循环完成指定 的次数就退出来。这也是指令循环延时的最常见的 C 写法。 编译后,按进入仿真。 按全速运行,可以看到 P1.0 的 LED灯不断地闪烁。 下面我们用另一个更简单的方式点灯,就是取反 IO口的状态。取反指令将当前 bit 变量 的状态反转,当前是 1,取反后就是 0,当前是 0,取反后就是 1。IO口相当于一个 bit 变 量, 也可以这样取反。 请修改程序如下: 编译成功后,再点全速运行。同样可以看到 LED 闪烁的现象。 可以看到,这种方法,我们只需要一次延时,就可以实现闪烁了。 下面我们再来学习如何查看变量 n 在运行中的值。注意,要查看变量的值,只能在程序 停下来的状态下查看。在程序运行的过程中,程序不断地运行,变量也在不断地变化,一般 是无法查看的。 点停止程序,将鼠标放在程序中的“n”上面, 可以看到旁边出现了一个小框框,上面显示了 n=0x47D3,这就是变量此时的值。 如果觉得这样可能会点不准确,可以选中你要看的变量,同样会显示变量的值,个人感 觉这种操作更为方便。如图: 用上面的选中的方式,你还可以选中一个表达式,也会显示出这个表达式的结果: 如图,选中 n20000,结果为 1。 在命令行输入的方法也可以看变量,在命令行输入 n,回车,就看到结果了。请注意看 下图的命令行窗口的结果。 这里再教一招,如果我想让 n 现在就变成我想要的值怎么办? 这也是调试常见的手段,设置一个变量的值,比如,让 n =0x1234,只要在命令框里输入 “n=0x1234” 就行了, 几乎所有变量都可以这样直接设置, 包括 IO口, 比如你输入 “P1.1=0” , 结果第二个灯就亮了。 还有一招常用的,就是在 watch 窗口看变量。点 watch 图标,就是那个有个眼镜的图标, 打开 watch 窗口。如图: 这个窗口里有 locals 页就是当前函数使用的变量的列表,还有有 watch 1 和 2 两个窗口, 就是自定义要看的变量的值,可以手工输入,也可以选中某个变量,按右键,将出现一个菜 单。选择 add 到 watch 窗口即可,在程序停止时随时看到此变量的值。 注意要看某个变量,如果这个变量是某个函数私有的,必须是程序停止时并且 PC 已经 停止在了这个函数中才可以看到,各种看变量的情况都是这样。 还有一种直接看存储器的方法,可以看到所有存储器的值,但是和变量名称就不是那么 好对应起来了。点 memory窗口图标,打开 memory窗口,如图: 在 Address 窗口输入: “d:0x00”就可以看到 data 空间的从 0x00 开始的所有内存。如 上 图。 输入“i:0x00” ,就可以看到 idata 空间的所有内存的值。 输入“x:0x00” ,就可以看到 xdata 空间的所有内存的值。 输入“c:0x00” ,就可以看到 code 空间的所有程序。 在实际的硬件调试方式中,如果不用看 memery 窗口,就建议不用打开它。因为保持它 的打开会增加仿真时通讯的时间,特别是单步运行的时间。 Keil 调试环境的使用可以千变万化,还有许多方法会在之后的课程中陆续介绍,您可以 可以去看购买 dx516 的光盘中附带的 uv2 使用文档。 这一章就完成了,我们学会了,指令延时,取反的用法,还有更重要的就是如何在 keil 调试环境中查看变量。 作业: 试着修改 n 的循环次数,使闪烁的频率改变。

文档评论(0)

187****5045 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档