《用指令方式延时闪烁LED灯〖AT89S52单片机入门教程〗》由会员分享,可在线阅读,更多相关《用指令方式延时闪烁LED灯〖AT89S52单片机入门教程〗(9页珍藏版)》请在金锄头文库上搜索。
1、第二课,用指令方式延时闪烁章将学习如何使如何查看变量的值。 单片机内部的标准51芯片中,每个指令周期是12个时钟。所以只要外部时钟固定,某一条指令运行的时间也是固定的。比如本试验中的单片机晶振振荡输出的时钟是22118400条单周期指令执行的时间就是12/22118400秒07秒,这样如果你想在程序里延迟一段时间,就可以用循环执行多少条指令来实现。这是一个最简单的延时方法,优点是不占用其他的单片机资源,缺点是不容易计算准确延时时间,而且延时过程中令延时方法一般用在一些不用精确计时的场合。在需要精确计时的场合,需要使用定时器,在之后的课程中将会学到。 现在请打开如图: 程序由一个循环组成,在点亮
2、时一段时间,再灭掉延时一段时间,之后循环到前面。 循环后面直接一个分号,表示这个循环里面什么事情也不做,就等循环完成指定的次数就退出来。这也是指令循环延时的最常见的编译后,按进入仿真。 按全速运行,下面我们用另一个更简单的方式点灯,就是取反反指令将当前前是1,取反后就是0,当前是0,取反后就是1。可以这样取反。 请修改程序如下: 编译成功后,再点全速运行。同样可以看到可以看到,这种方法,我们只需要一次延时,就可以实现闪烁了。 下面我们再来学习如何查看变量意,要查看变量的值,只能在程序停下来的状态下查看。在程序运行的过程中,程序不断地运行,变量也在不断地变化,一般是无法查看的。 点停止程序,将鼠
3、标放在程序中的“n”上面, 可以看到旁边出现了一个小框框,上面显示了n=0就是变量此时的值。 如果觉得这样可能会点不准确,可以选中你要看的变量,同样会显示变量的值,个人感觉这种操作更为方便。如图: 用上面的选中的方式,你还可以选中一个表达式,也会显示出这个表达式的结果: 如图,选中n20000,结果为1。 在命令行输入的方法也可以看变量,在命令行输入n,回车,就看到结果了。请注意看下图的命令行窗口的结果。 这里再教一招,如果我想让这也是调试常见的手段,设置一个变量的值,比如,让n =0要在命令框里输入“n=0行了,几乎所有变量都可以这样直接设置,包括如你输入“”,结果第二个灯就亮了。 还有一招
4、常用的,就是在是那个有个眼镜的图标,打开图: 这个窗口里有有有和2两个窗口,就是自定义要看的变量的值,可以手工输入,也可以选中某个变量,按右键,将出现一个菜单。选择程序停止时随时看到此变量的值。 注意要看某个变量,如果这个变量是某个函数私有的,必须是程序停止时并且种看变量的情况都是这样。 还有一种直接看存储器的方法,可以看到所有存储器的值,但是和变量名称就不是那么好对应起来了。点开图: 在d:0可以看到上图。 输入“i:0就可以看到输入“x:0就可以看到输入“c:0就可以看到在实际的硬件调试方式中,如果不用看建议不用打开它。因为保持它的打开会增加仿真时通讯的时间,特别是单步运行的时间。 有许多方法会在之后的课程中陆续介绍,您可以可以去看购买这一章就完成了,我们学会了,指令延时,取反的用法,还有更重要的就是如何在作业: 试着修改闪烁的频率改变。