找回密码
 立即注册
查看: 193|回复: 4

仿真时切换外部晶振死机,但下载到单片机又能正常运行 | 已解决

[复制链接]
  • TA的每日心情
    奋斗
    2024-5-4 13:59
  • 签到天数: 102 天

    [LV.6]常住居民II

    13

    主题

    60

    回帖

    376

    积分

    中级会员

    积分
    376
    发表于 2024-1-30 19:46:34 | 显示全部楼层 |阅读模式
    单片机型号为STC8H8K64U PDIP40

    程序如下
    1. unsigned char reg_ck;
    2.         P_SW2 |= 0x80;     //扩展寄存器(XFR)访问使能
    3.     P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    4.     P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    5.     P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    6.     P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    7.     P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    8.     P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    9.     P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    10.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    11.         XOSCCR = 0xc0;  //启动外部晶振
    12.         reg_ck =  XOSCCR;
    13.         reg_ck =  CLKDIV;
    14.         while(1)  //等待时钟稳定
    15.         {
    16.              reg_ck = XOSCCR;
    17.                  if(reg_ck & 0x01)
    18.                      break;  
    19.         }
    20.         reg_ck = XOSCCR;
    21.         CLKDIV = 0x00;  //时钟不分频
    22.         CLKSEL = 0x01; //选择外部晶振
    23.     IT0 = 0; //设置int0 为上升/下降沿触发驱动
    24.         EX0 = 1; //使能INT0中断
    25.         EA = 1;          //使能全局中断
    26.     while(1)
    27.     {
    28.     }
    复制代码
    仿真单步执行 CLKSEL = 0x01; //选择外部晶振 这句时就死机,提示
    微信图片_20240130194438.png

    但把这个hex文件下载到单片机直接运行,又可以正常运行。

    请问有什么方法能够正常仿真这段代码?


    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-12 14:57
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    0

    主题

    25

    回帖

    166

    积分

    注册会员

    积分
    166
    发表于 2024-1-30 21:05:07 | 显示全部楼层
    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-4 13:59
  • 签到天数: 102 天

    [LV.6]常住居民II

    13

    主题

    60

    回帖

    376

    积分

    中级会员

    积分
    376
     楼主| 发表于 2024-1-30 21:19:04 | 显示全部楼层
    kaily 发表于 2024-1-30 21:05
    仿真时不能切换时钟

    原来这样,多谢了。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 86 天

    [LV.6]常住居民II

    13

    主题

    199

    回帖

    531

    积分

    高级会员

    积分
    531
    发表于 2024-1-31 15:40:55 | 显示全部楼层
    是不是因为仿真时切换时钟后影响了调试数据通信的波特率?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-12 14:57
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    0

    主题

    25

    回帖

    166

    积分

    注册会员

    积分
    166
    发表于 2024-1-31 22:14:57 | 显示全部楼层
    challis 发表于 2024-1-31 15:40
    是不是因为仿真时切换时钟后影响了调试数据通信的波特率?

    是的。
    仿真开始时,波特率是使用默认的内部时钟进行计算的
    如果运行过程中切换时钟,波特率就变了
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 13:09 , Processed in 0.113399 second(s), 47 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表