仿真时切换外部晶振死机,但下载到单片机又能正常运行 | 已解决
单片机型号为STC8H8K64U PDIP40程序如下
unsigned char reg_ck;
P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
XOSCCR = 0xc0;//启动外部晶振
reg_ck =XOSCCR;
reg_ck =CLKDIV;
while(1)//等待时钟稳定
{
reg_ck = XOSCCR;
if(reg_ck & 0x01)
break;
}
reg_ck = XOSCCR;
CLKDIV = 0x00;//时钟不分频
CLKSEL = 0x01; //选择外部晶振
IT0 = 0; //设置int0 为上升/下降沿触发驱动
EX0 = 1; //使能INT0中断
EA = 1; //使能全局中断
while(1)
{
}仿真单步执行 CLKSEL = 0x01; //选择外部晶振 这句时就死机,提示
但把这个hex文件下载到单片机直接运行,又可以正常运行。
请问有什么方法能够正常仿真这段代码?
仿真时不能切换时钟
详情参考下面的帖子
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=108&highlight=%E4%BB%BF%E7%9C%9F&page=1&extra=#pid371
kaily 发表于 2024-1-30 21:05
仿真时不能切换时钟
原来这样,多谢了。 是不是因为仿真时切换时钟后影响了调试数据通信的波特率? challis 发表于 2024-1-31 15:40
是不是因为仿真时切换时钟后影响了调试数据通信的波特率?
是的。
仿真开始时,波特率是使用默认的内部时钟进行计算的
如果运行过程中切换时钟,波特率就变了
页:
[1]