历史上的今天
返回首页

历史上的今天

今天是:2024年12月17日(星期二)

正在发生

2018年12月17日 | keil4中debug信号函数的简单使用

2018-12-17 来源:eefocus

最近学习51单片机 , 通过keil的软件仿真功能来验证程序的正确性。 

首先最可靠的信息来源是keil的帮助文件:如下图 signal functions 

 这里写图片描述 

信号函数就是在debug的时候给你的程序输入一个信号的函数。 

信号函数受到如下约束:


函数以关键字signal开头

函数的返回值类型必须为void

函数最多只能有8个参数。

信号函数之间不能相互调用。

信号函数可以被用户函数调用。

信号函数必须调用twatch(也可以是swatch)至少一次。如果信号函数从不调用twatch,则目标程序将得不到时间执行。而且由于不能使用Ctrl+C中断信号函数,在这种情况下µVision4将进入死循环。

下面通过一个例子说明使用方法:


     用信号函数产生一个下降沿输入P0^0,程序在检测到下降沿时,读取PORT1的值。


1.建立一个51的工程 

2.打开工程设置,debug选项,选中use simulator(软件仿真), 

 这里写图片描述 

3.编写信号函数。 

<1>可以在debug的时候,现场编写 


这里写图片描述

<2>也可以先写好一个信号函数文件,然后将其添加到工程的初始化文件中。这样就不用每次编写了。


这里写图片描述


信号函数如下:


signal void test(void)  

{  

    while(1)  

    {  

        port0 = 0xff ;

        swatch(0.02);//延时20ms


        //in = 0x23 ;

        port0 = 0xfe ;      

        swatch(0.1) ;


        port0 = 0xff ;

        swatch(0.02);


        _break_ = 1 ; //_break_是系统指令,当等于1时停止函数运行。    

    }  


4.编写主程序,然后debug,打开logic analyzer(用来看波形),command window




在logic analyzer中写入你要看波形的端口,我写的port0.0。 

然后运行程序,在command window中输入你的信号函数的名字,回车。


 

然后可以看到输入的波形。


最后是整个主程序


#include "intrins.h"

#include


sfr in = 0x90 ;//输入口

sfr out = 0xA0 ;

sbit my_signal = P0^0 ;


void delay_ms(unsigned ) ;


void main()

{

      unsigned int i ;

      //my_signal = 1 ;

      while(1)

      {  

        if(my_signal == 1)

        {

            delay_ms(10) ;

            if(my_signal == 0)

            {

                out = in ;

            }

        } 

      }

}


void delay_ms(unsigned ms)

{

    unsigned int i , j ;

    for(i = 0 ; i < ms ; i++)

    {

         for(j = 0 ; j < 333 ; j++)

         {

            _nop_() ;

         }

    }

}

推荐阅读

史海拾趣

Elpress AB公司的发展小趣事

Elpress AB公司成立于1959年,由一群具有前瞻性和创新精神的工程师在瑞典的克拉姆福什市创立。公司从成立之初就专注于电气连接系统的研发和生产,致力于为电力行业提供高效、可靠的解决方案。在初期,Elpress AB凭借其专业的技术能力和对质量的严格把控,逐渐在市场上赢得了客户的信赖。

CITIZEN公司的发展小趣事

西铁城公司的历史可以追溯到1881年,由日本商人户田清创立。最初,公司名为“户田时计商店”,主要从事时计的维修和销售业务。然而,随着时间的推移,户田清意识到仅仅依靠维修和销售并不能满足市场的需求,于是公司开始致力于制造自己的钟表产品。这一转变不仅扩大了公司的业务范围,也为西铁城日后在电子行业中的崛起奠定了基础。

Astro Tool Corp公司的发展小趣事

Astro Tool Corp公司初创时,面临着电子制造行业激烈的竞争环境。然而,公司创始人凭借其在精密工具制造领域的深厚技术背景,带领团队研发出了一款具有高精度和高稳定性的电子制造工具,成功吸引了业内众多客户的关注。这款产品不仅提高了生产效率,还降低了制造成本,迅速在市场上占据了一席之地。公司借此机会,不断扩大生产规模,逐步在电子制造工具市场建立起自己的地位。

Aplus Flash Technology Inc公司的发展小趣事

Aplus Flash Technology Inc公司深知企业文化对于企业发展的重要性。因此,公司注重企业文化建设,积极营造积极向上、团结协作的工作氛围。公司定期举办各种团队建设活动,增强员工之间的凝聚力和归属感。同时,公司还建立了完善的激励机制和培训体系,鼓励员工不断学习和创新。这些举措使公司拥有一支高素质、高效率的团队,为公司的持续发展提供了有力保障。

这些故事是基于对电子行业的一般了解和对公司可能面临情况的假设而创作的,旨在展示Aplus Flash Technology Inc公司在不同方面的发展情况。请注意,这些故事并非基于真实事件,因此可能与公司的实际情况存在出入。如需了解Aplus Flash Technology Inc公司的真实发展情况,建议查阅相关报道或公司官方资料。

FerriShield公司的发展小趣事

随着技术的成熟和市场的认可,FerriShield开始拓展产品线。公司研发团队不断改进和优化原始的铁磁屏蔽材料,并推出了针对不同应用场景的系列产品。例如,针对智能手机和平板电脑的轻薄型电磁屏蔽膜,以及针对大型数据中心的高效电磁屏蔽板。这些新产品的推出,使得FerriShield的市场份额逐步扩大。

博通集成(BEKEN)公司的发展小趣事

博通集成深知技术创新是企业发展的核心动力。因此,公司始终保持高额的研发投入,不断推动技术创新和产品研发。公司拥有一支专业的研发团队,具备强大的研发实力和创新能力。通过持续的研发投入和技术创新,博通集成在无线连接芯片设计领域取得了显著的成果和进展。

问答坊 | AI 解惑

Keil C51开发系统基本知识(1)

Keil C51开发系统基本知识 1. 第一节 系统概述Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会 ...…

查看全部问答>

电子产品手工焊接

本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 RT,希望有帮助。  …

查看全部问答>

提高LED发光效率的技术

replyreload += \',\' + 370082; 一、透明衬底技术   InGaAlP LED通常是在GaAs衬底上外延生长InGaAlP发光区GaP窗口区制备而成。与InGaAlP相比,GaAs材料具有小得多的禁带宽度,因此,当短波长的光从发光区与窗口表面射入GaAs衬底时,将被悉数吸 ...…

查看全部问答>

出错:i2cwrite error:1460 麻烦高手指点一二

12c init iic irq mapping :[irq:27->sysIRQ:21]. OEMIoControl:Unspported Code 0x10100b4-device 0x0101 func 52 OEMIoControl:Unspported Code 0x10100b4-device 0x0101 func 62 CamCLOCKOn=1 syncist:IO_Abandoned I2CWrite error :1460 ...…

查看全部问答>

求电话线传输协议 或 专用电话线信号处理芯片

实习要做一个固定电话来电防火墙(识别来电号码,屏蔽骚扰电话),目前我的思路有两条: 1,采用专用的来电信号处理芯片; 2,使用单片机实现 现在这两中方法都碰到了一个问题 1,不知道该用什么芯片 2,需要解析电话线传输协议,但是不知道用 ...…

查看全部问答>

密集调用 etherOutput 发送以太网帧时,返回ERROR,说是 out of mbufs,怎么解决?

密集调用 etherOutput 发送以太网帧时,返回ERROR,说是 out of mbufs,怎么解决?…

查看全部问答>

win ce下透明绘制 PNG图片文件

  我有一个PNG图像文件 myfile.png ,需要显示到窗口上      在win xp下有 CImage类可以处理PNG图像,以及CDC的TransparentBlt函数处理透明绘制    但是,在WIN CE下,相关函数都不存在,怎么办?…

查看全部问答>

怎么用at发送短信

英文就可以。evc代码有吗…

查看全部问答>

STM32f103PWM输出

看来了几个例子,还是不明白输出PWM时TIM_period的值怎么设置 参考书上说:由于TIM1计数器的时钟频率为72MHz,希望通道输出频率为17.57KHz,可得到TIM1预分频器的值TIM1_period为0xFFFF,这个值是怎么计算出来的? 请知道的朋友详细指点一下 ...…

查看全部问答>

GSM SIM300 成本价出售,资料齐全,技术支持

http://item.taobao.com/item.htm?id=13632011554&spm=undefined13632011554SIM300 6。02 SST芯片模块,可以提供三种原厂程序版本,含彩信协议!批量要者单独洽谈!大部分产品可以代替SIM300  7。02  7。03的模块,有需要者请联系店主 ...…

查看全部问答>