C8051F340 無法燒錄問題..
打擾了
請問一下...
使用Silicon Lab IDE/使用USB燒錄治具(EC30000EC5F)
連線未燒錄空MCU可以連線
但燒錄完成之後,就再也無法連線下載
想請問一下,程式何處沒設定好
導致無法下載燒錄?
如何重設MCU再度燒錄?
void PCA_Init()
{
PCA0CN = 0x40;
PCA0MD &= ~0x40;
PCA0MD = 0x09; // Timer0 int->0x04
PCA0CPM0 = 0xC2;
PCA0CPM1 = 0xC2;
PCA0CPM2 = 0xC2;
PCA0CPM3 = 0xC2;
PCA0CPL0 = 0xFF;
PCA0CPH0 = 0xFF;
PCA0CPL1 = 0xFF;
PCA0CPH1 = 0xFF;
PCA0CPL2 = 0xFF;
PCA0CPH2 = 0xFF;
PCA0CPL3 = 0xFF;
PCA0CPH3 = 0xFF;
}
void Port_IO_Init()
{
// P0.0 - Skipped, Open-Drain, Digital
// P0.1 - Skipped, Open-Drain, Digital
// P0.2 - Skipped, Open-Drain, Digital
// P0.3 - Skipped, Open-Drain, Digital
// P0.4 - Skipped, Open-Drain, Digital
// P0.5 - Skipped, Open-Drain, Digital
// P0.6 - CEX0 (PCA), Open-Drain, Digital
// P0.7 - CEX1 (PCA), Open-Drain, Digital
// P1.0 - CEX2 (PCA), Open-Drain, Digital
// P1.1 - CEX3 (PCA), Open-Drain, Digital
// P1.2 - Skipped, Open-Drain, Digital
// P1.3 - Skipped, Open-Drain, Analog
// P1.4 - Skipped, Open-Drain, Analog
// P1.5 - Skipped, Open-Drain, Analog
// P1.6 - Skipped, Open-Drain, Analog
// P1.7 - Skipped, Open-Drain, Analog
// P2.0 - Unassigned, Open-Drain, Digital
// P2.1 - Unassigned, Open-Drain, Digital
// P2.2 - Unassigned, Open-Drain, Digital
// P2.3 - Unassigned, Open-Drain, Digital
// P2.4 - Unassigned, Open-Drain, Digital
// P2.5 - Unassigned, Open-Drain, Digital
// P2.6 - Unassigned, Open-Drain, Digital
// P2.7 - Unassigned, Open-Drain, Digital
P1MDIN = 0x07;
P0SKIP = 0x3F;
P1SKIP = 0xFC;
XBR1 = 0x44;
}
void Oscillator_Init()
{
// OSCICN = 0x87;
int i = 0;
PFE0CN &= ~0x20;
FLSCL = 0x10;
PFE0CN |= 0x20;
CLKMUL = 0x80;
for (i = 0; i < 20; i++); // Wait 5us for initialization
CLKMUL |= 0xC0;
while ((CLKMUL & 0x20) == 0);
CLKSEL = 0x02;
OSCICN = 0x87;
}
void Interrupts_Init()
{
EIE1 = 0x10;// fot PCA0 interrupt
IE = 0x80;
}
// Initialization function for device,
// Call Init_Device() from your main program
void dvC8051F4XXInitial(void)
{
PCA_Init();
Port_IO_Init();
Oscillator_Init();
Interrupts_Init();
}
int state_RGB=0;
static void PCAIsr (void) interrupt 11 using 2
{
PCA0CN &=0x7F; // clear CF flag
switch (state_RGB)
{
case 0:
PCA0CPL2=0x80;
PCA0CPH2=0x80;
PCA0CPL1=0xFF;
PCA0CPH1=0xFF;
PCA0CPL0=0xFF;
PCA0CPH0=0xFF;
state_RGB=1;
break;
case 1:
PCA0CPL2=0xFF;
PCA0CPH2=0xFF;
PCA0CPL1=0x80;
PCA0CPH1=0x80;
PCA0CPL0=0xFF;
PCA0CPH0=0xFF;
state_RGB=2;
break;
case 2:
PCA0CPL2=0xFF;
PCA0CPH2=0xFF;
PCA0CPL1=0xFF;
PCA0CPH1=0xFF;
PCA0CPL0=0x80;
PCA0CPH0=0x80;
state_RGB=0;
break;
}
}
void main (void)
{
//***
dvC8051F4XXInitial();
while(1){
}
}
//-----