void change_ocInit(void) //切换外部晶振
{
IFD = 0x0c; //ISP Flash data,访问AUXRA时,IFD=AUXRA,使能外部晶振和默认内部高频,
//关闭OCD功能
IFMT = 0x06; //ISP Mode Table AUXRA寄存器写操作
ISPCR |= 0x80; //ISP Control Register 使能ISPEN
SCMD = 0x46;
SCMD = 0xb9;
_nop_(); //等待晶振稳定
_nop_();
_nop_();
_nop_();
_nop_();
IFD = 0x0b; //使能外部晶振和使用外部晶振
IFMT = 0x06;
ISPCR |= 0x80;
SCMD = 0x46;
SCMD = 0xb9;
ISPCR = 0x00; //关闭擦除功能
IFMT = 0x00; //进入待命状态
}
void main()
{
change_ocInit();
P4M0=0x00; //推挽
P4M1=0xff;
//P4=0x70;
//DelayMs(1000);
while(1)
{
P4 = 0xff;
P1 =~ P1;
// P4=0x00; //P4口置0
DelayMs(500);
}
} |