Keil uVision中的Logic Analyzer(逻辑分析仪)简单使用

来源:互联网 发布:手机评测软件 编辑:程序博客网 时间:2024/05/21 09:19

                                   写给从小白开始的我                       

        近日在学习单片机,由于在这方面目前处于小白阶段,因此好多东西都是摸索着前进。当然了,学习就得有资料,本人买的是《21天学会51单片机》。其中不乏有好多例子。鉴于自己的C语言开发能力还算可以(一直从事C的开发,还算得上个中等水平),因此前边好些章节就直接跳过,直接看中断和定时器的部分。但是在看定时器时,对于书中的教学例子的运行结果无法理解。比如出现了如下图的运行结果:

       

         其结果就是,我懵了!这个到底是怎么出来的呢,而还好运行窗口的左上角有个"Logic Anylyzer "的字样。功夫不负有心人,终于让我在Keil中找到了这个窗口,但是我的运行结果是这个窗口里面什么都没有,一片空白,唯一让我觉得当前代码在运行过程中的是左上角的Time里面跑得比刘翔还快的时间跳字。但是始终就是没有波形出来。难道是我的代码有问题???我还是比较谦虚的嘛,先从自我批评开始。其结果是代码和书上的一模一样。就在我绝望的时候,灵光一现,百度一下,结果有关的介绍真是少的可怜(主要是针对想我这种小白的太少了)。最后终于从Google中找点信息。在再加上自己的琢磨,算是能用了,终于也出现了个像模像样的波形图出来。现就将我的整个过程“小白式”地呈现给“小白”们。

        第一:完成一段确认无误的代码,哪怕是最简单的也行。我的源代码如下:

#include <reg51.h>
#include <stdio.h>

/* Test Timer0 */
sbit b = P1^2;
sbit c = P1^3;
void Timer_zero(void) interrupt 1
{
    /* reset timer0 start value */
    TL0 = 0x18;
    TH0 = 0x1C;

    /* revese b */
    b   = ~b;
    c   = ~c;
}

void main()
{
    b         = 0;
    c          = 1;
    PT0     = 0;    //timer0终端优先级为低级
    EA       = 1;       //打开中断允许
    ET0     = 1;       //打开中断timer0中断
    TMOD = 0x00;
    TL0     = 0x18;
    TH0    = 0x1C;
    TR0    = 1;

    while(1)
    {
    }
}

     代码的大概意思就是定义b和c分别为P1引脚的2和3脚,产生一个定时器,当定时器触发时分别将b和c的值取反。

     第二: 编译无误后,运行代码。点击工具栏的Debug按钮Debug,打开Logic Analyzer(逻辑分析仪)

     第三: 这一步是最为关键的,否则就会出现我的小白现象,代码在疯狂地跑着,但是Logic Analyzer窗口中没有任何波形图。首先,点击Logic Analyzer窗口左上角的Setup按钮,进入如下窗口。

     在Current Logic Analyzer Signals:中添加要监视的信号。此处只能添加当前工程中定义的信号,例如P1端口,b和c。因为我们要查看的波形图是b和c的输出,因此在此处添加b和c。具体的添加方法是:点击右侧的添加按钮(就两个按钮一看便知叉叉是删除,那么前边那个就是添加),在输入框中输入b,回车,b信号添加好了。同理添加c信号。如果添加的不是工程中已经定义的,那么就会有UnKown Signal的提示。关闭窗口。

    第四: 运行程序(F5):则可在Logic Analyzer窗口中看到波形输出,如果没有点击Logic Analyzer窗口上侧"Zoom"中的All按钮,此时应该有输出了,如果还是没有,那本人无能为力了!!!不过可能现在看到的将是一片纯色,并没有看到任何波形。点击"Zoom"中的In按钮(作用是缩小显示的时间精度,当然了Out也就是增大显示的时间精度),此时就可以清晰的看到具体的波形输出了,具体如本文第一图所示。如果读者细心的话,将会发现在调整显示的时间精度时(也就是单击In或者Out按钮时)其前方Grid一栏中显示的时间在变化,对了这就是当前波形显示窗口中的时间精度。这也就解释了为什么刚开始时一片纯色,因为默认的时间精度设置太大,导致对于频率太快的波形输出就是一片纯色。

     介绍到此结束,其他使用方法继续摸索。第一次写博客,如有问题还请及时指正。