weavr 发表于 2019-7-18 14:46:28

没事试了一下STC8A外部晶振这样启动

以前用STC15系列,使用外部晶振时在软件上选一下就可以,如果外部晶振没有焊,单片机默认是内部时钟运行的,现在STC8A单片机软件上没有选项,需要在代码中启动外部晶振,官方的例程是死等晶振稳定,如果晶振没有焊,就卡住了,试了一下将死等改成等一段保守时间,如果晶振没有稳定启动,就默认用内部时钟工作。考虑到有些情况用晶振可以更稳定,但用内部时钟也能满足的情况下,这样启动,即使晶振损坏也能像STC15一样正常工作,供参考:

P_SW2 = 0x80;
XOSCCR = 0xc0;                              //启动外部晶振
for(j=0;j<65535;j++)                        //官方例程是while (!(XOSCCR & 1));
   {
          if ((XOSCCR & 1))                     //判断时钟稳定位
          {
                CKDIV = 0x00;                   //时钟不分频
                   CKSEL = 0x01;                   //选择外部晶振
                   break;
          }
   }
P_SW2 &= ~0x80;

XTXB 发表于 2019-7-18 18:53:01

小技巧集锦:
坛友MYQQ2018的经验:
如果代码里面没有使用到串口的话,不掉电下载很简单的,都用了好多年了,就几行代码,如下
void serial(void) interrupt 4
{
delay(300);
if(RI)
ISP_CONTR=0x60;         
else
TI=0;
}

孤独飞行 发表于 2019-7-19 14:03:44

XTXB 发表于 2019-7-18 18:53
小技巧集锦:
坛友MYQQ2018的经验:
如果代码里面没有使用到串口的话,不掉电下载很简单的,都用了好多年了 ...

学习了,有机会试试看,谢谢
页: [1]
查看完整版本: 没事试了一下STC8A外部晶振这样启动