9354|17

135

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

在单片机中的程序中怎么样可以用程序设置断点 [复制链接]

我想在单片机的程序中用程序设置断点,把它烧写进单片机内部,在遇到这段代码的时候就停止,
然后通过串口发送一个数据就可以继续执行我的下面的程序(或者说程序停止后按任意按键程序继续执行);
哪位大虾有这方面经验的,跪求!!!!!!!!!!!!!
此帖出自51单片机论坛

最新回复

对于51单片机,我记得以前SST的51单片机支持下载一个固件,就可以通过Keil仿真。支持断点等功能,但是只支持SST的51单片机。 此外还有ISD51,也是通过软件方式仿真和设置断点,它支持的单片机要多一些,但是速度比较慢。具体你可以看看keil的帮助文件。   详情 回复 发表于 2014-11-16 20:59
点赞 关注
 

回复
举报

4005

帖子

0

TA的资源

版主

沙发
 
stc15f或sst带仿真功能
此帖出自51单片机论坛

点评

大哥!能不能说集体点呢?  详情 回复 发表于 2014-11-15 21:10
 
 
 

回复

173

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
你所说的单片机”停止“概念不清楚,或者说是有问题。

你说的应该是通过串口向单片机发送指令的问题。单片机接收到指令后应该应该进行判别,进而按指令进行工作。

在没有接收到指令时,一般情况下单片机会进行循环显示、键盘扫描等工作(或者查询一些状态或中断)。当发生中断时转去处理中断,当然也包括处理串口中断。
..........
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

24

TA的资源

版主

4
 
如果是使用仿真器,那么很容易实现断点功能,也不需要串口发命令。这种方式最简单,也可以随时设置断点。

如果是不使用仿真器,自己实现这样的功能,可以写一个函数,插入到需要停止的位置。函数在等待串口的信号。这样不太灵活,修改断点需要重新编译下载,但是可以实现自己特殊的功能。

此帖出自51单片机论坛

点评

大哥啊,终于有人知道我的想法了 我就是要想实现没有仿真器的情况下,能够用一条语句来实现断点,然后通过串口来发送继续执行程序 我看到位老师写了break point;这样一个词语就实现了,不知道他怎么实现的,然后在  详情 回复 发表于 2014-11-15 21:15
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

5
 
huo_hu 发表于 2014-11-13 15:54
stc15f或sst带仿真功能

大哥!能不能说集体点呢?
此帖出自51单片机论坛
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

6
 
dcexpert 发表于 2014-11-13 20:41
如果是使用仿真器,那么很容易实现断点功能,也不需要串口发命令。这种方式最简单,也可以随时设置断点。
...

大哥啊,终于有人知道我的想法了
我就是要想实现没有仿真器的情况下,能够用一条语句来实现断点,然后通过串口来发送继续执行程序
我看到位老师写了break point;这样一个词语就实现了,不知道他怎么实现的,然后在串口发送了07就继续执行程序

大虾!你有这方面的资料没有或者程序呢?
此帖出自51单片机论坛

点评

自己写一个,不是太难吧。 比如: 没有实际测试,你可以自己试试看。  详情 回复 发表于 2014-11-15 21:29
 
 
 

回复

1万

帖子

24

TA的资源

版主

7
 
本帖最后由 dcexpert 于 2014-11-15 21:32 编辑
werjufour 发表于 2014-11-15 21:15
大哥啊,终于有人知道我的想法了
我就是要想实现没有仿真器的情况下,能够用一条语句来实现断点,然后通 ...

自己写一个,不是太难吧。

比如:



void breakpoint()
{
  bit sav_es = ES;


  ES = 0;
  while(1)
  {
    if(RI)
    {
      RI = 0;
      if(SBUF == 0x07)
        break;
    }
  }
  ES = sav_es;
}


没有实际测试,你可以自己试试看。

此帖出自51单片机论坛
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

8
 
把那个函数写进去之后到了,执行到这条函数时就会停下来么?
bit sav_es;是什么意思呢
此帖出自51单片机论坛

点评

先保存一下串口中断使能位,然后关闭串口中断。 然后就是等串口的数据了,直到收到你希望的数据在退出。当然串口需要先初始化好才行。 理论上这样可行,实际效果需要你调试一下。  详情 回复 发表于 2014-11-15 22:10
 
 
 

回复

1万

帖子

24

TA的资源

版主

9
 
werjufour 发表于 2014-11-15 21:58
把那个函数写进去之后到了,执行到这条函数时就会停下来么?
bit sav_es;是什么意思呢

先保存一下串口中断使能位,然后关闭串口中断。

然后就是等串口的数据了,直到收到你希望的数据在退出。当然串口需要先初始化好才行。

理论上这样可行,实际效果需要你调试一下。
此帖出自51单片机论坛
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

10
 
先研究下
此帖出自51单片机论坛
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

11
 
break;语句是跳出while循环么?
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

24

TA的资源

版主

12
 
给你一个例子,可以在proteus中仿真。当运行到breakpoint函数后,程序就停下来,需要在虚拟终端中输入数字7,才会继续运行。
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. sbit LED = P0^0;

  4. void uart_init()
  5. {
  6.   SCON = 0x50;
  7.   TMOD = 0x20;
  8.   TH1  = 0xFD;
  9.   TR1  = 1;
  10. }

  11. void delay(long dt)
  12. {
  13.   while(dt > 0)
  14.   {
  15.     dt--;
  16.     _nop_();
  17.   }
  18. }

  19. void breakpoint()
  20. {
  21.   bit sav_es = ES;

  22.   ES = 0;
  23.   while(1)
  24.   {
  25.     if(RI)
  26.     {
  27.       RI = 0;
  28.       if(SBUF == 0x37)
  29.         break;
  30.     }
  31.   }
  32.   ES = sav_es;
  33. }

  34. void main()
  35. {
  36.   int i;
  37.   
  38.   uart_init();

  39.   while(1)
  40.   {
  41.     for(i = 10; i > 0; i--)
  42.     {   
  43.       delay(1000);
  44.       LED = !LED;
  45.     }
  46.     breakpoint();
  47.   }   
  48. }
复制代码




user_breakpoint_test.zip (26.08 KB, 下载次数: 11)


此帖出自51单片机论坛

点评

在此谢谢大侠了  详情 回复 发表于 2014-11-16 12:35
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

13
 
dcexpert 发表于 2014-11-15 22:47
给你一个例子,可以在proteus中仿真。当运行到breakpoint函数后,程序就停下来,需要在虚拟终端中输入数字7 ...

在此谢谢大侠了
此帖出自51单片机论坛

点评

大虾!你真是大师啊,可以执行了, 大侠有事向你求教! 帮我看看我附件里的程序,为什么编译会出现如下警告!而且调试不成功 linking... *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: IRVALUE  详情 回复 发表于 2014-11-16 16:20
 
 
 

回复

4005

帖子

0

TA的资源

版主

14
 
没有硬仿真就只能从串口发数据来分析了,单步不是特别需要.
此帖出自51单片机论坛

点评

对于一个复杂的程序该怎么仿真呢? 而且有用到许多的定时器中断,外部中断还有串口,这个需要用串口来仿真我都蒙了 不知道从何入手  详情 回复 发表于 2014-11-16 20:20
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

15
 

大虾!你真是大师啊,可以执行了,
大侠有事向你求教!
帮我看看我附件里的程序,为什么编译会出现如下警告!而且调试不成功
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  IRVALUE
    MODULE:  main.obj (MAIN)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  IRVALUE
    MODULE:  main.obj (MAIN)
    ADDRESS: 0120H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  IRVALUE
    MODULE:  main.obj (MAIN)
    ADDRESS: 0134H
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  IRVALUE
    MODULE:  ir.obj (IR)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  IRVALUE
    MODULE:  ir.obj (IR)
    ADDRESS: 00C4H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  IRVALUE
    MODULE:  ir.obj (IR)
    ADDRESS: 00D7H
Program Size: data=12.0 xdata=0 code=381
creating hex file from "Pro"...
"Pro" - 0 Error(s), 6 Warning(s).

流水灯 - 用红外遥控来控制灯的流动方向 - 副本.rar

32.77 KB, 下载次数: 6

此帖出自51单片机论坛
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

16
 
huo_hu 发表于 2014-11-16 12:44
没有硬仿真就只能从串口发数据来分析了,单步不是特别需要.

对于一个复杂的程序该怎么仿真呢?
而且有用到许多的定时器中断,外部中断还有串口,这个需要用串口来仿真我都蒙了
不知道从何入手
此帖出自51单片机论坛

点评

对于51单片机,我记得以前SST的51单片机支持下载一个固件,就可以通过Keil仿真。支持断点等功能,但是只支持SST的51单片机。 此外还有ISD51,也是通过软件方式仿真和设置断点,它支持的单片机要多一些,但是速度  详情 回复 发表于 2014-11-16 20:59
 
 
 

回复

1万

帖子

24

TA的资源

版主

17
 
werjufour 发表于 2014-11-16 20:20
对于一个复杂的程序该怎么仿真呢?
而且有用到许多的定时器中断,外部中断还有串口,这个需要用串口来仿 ...

对于51单片机,我记得以前SST的51单片机支持下载一个固件,就可以通过Keil仿真。支持断点等功能,但是只支持SST的51单片机。

此外还有ISD51,也是通过软件方式仿真和设置断点,它支持的单片机要多一些,但是速度比较慢。具体你可以看看keil的帮助文件。
此帖出自51单片机论坛

点评

恩,我试试看吧  详情 回复 发表于 2014-11-16 21:07
 
 
 

回复

135

帖子

1

TA的资源

一粒金砂(中级)

18
 
dcexpert 发表于 2014-11-16 20:59
对于51单片机,我记得以前SST的51单片机支持下载一个固件,就可以通过Keil仿真。支持断点等功能,但是只 ...

恩,我试试看吧
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

开源项目 更多>>
    随便看看
    查找数据手册?

    EEWorld Datasheet 技术支持

    相关文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表