////////////////////////////////////////////////////////////////////////////////////////////////
void init_c8051f410(void )
{
// 、、----------------------
P1MDOUT|=0X04; //P1.2推挽
P1MDOUT|=0X08; //P1.3推挽
// 、、----------------------
P0MDOUT |=0X04; //P0.2推挽
P0MDOUT |=0X08; //P0.3推挽
P0MDOUT |=0X80; //p0.7推挽
// 、、----------------------
P2MDOUT =0X03;
P2MDIN =0XFF;
XBR0 = 0x01; //UART0 连接到引脚
XBR1 = 0x40; //使能交叉开关
}
////////////////////////////////////////////////////////////////////////////////////////////////
void SYSCLK_Init (void)
{
uint dly;
OSCICN |= 0x87; // Configure internal oscillator for
while((OSCICN&0X40)!=0X40);
CLKSEL |= 0x00;
//------------------------------------
P1&=~0X03;
P1MDIN &=~0X01;
P1MDIN &=~0X02; // 模拟输入
P1MDIN &=~0X04; // p1.2模拟输入
//使能外部振荡器
OSCXCN |=0X67; //0110 0111
//等待1毫秒
do{
dly=100;
while(dly--);
}while((OSCXCN&0X80)!=0X80);
//查询XTLVLD =>1。
dly=100;
while(dly--);
CLKSEL |=0X01;
}
////////////////////////////////////////////////////////////////////////////////////////////////
void main(void)
{
PCA0MD &= ~0x40;
SYSCLK_Init();
init_c8051f410();
//---------------------------------
for(;;)
{
run_cnt++;
if(run_cnt>65530)
{
run_cnt=0;
//运行灯闪烁
led_run=~led_run;
}
}
}
如题: 晶振初始化结束后,执行到 XBR1 =0X40 后 就死机了... 不使用外部晶振没这种现象...
|