0

我正在尝试使用带有默认 mikroelectronica 示例的 pic 18f4550 构建一个非常简单的 USB 通信设备,没有任何更改(仅更改我没有连接 vusb 的几个 100nf 的硬件,所以我用 470uf 替换它们,我没有放任何 pf 与我的晶体振荡器)

硬件: usb pic18f4550原理图

该代码非常适用于 Proteus 模拟:

unsigned char k;
unsigned char userWR_buffer[64];

const char *text = "MIKROElektronika Compilers ER \r\n";
//**************************************************************************************************
// Main Interrupt Routine
//**************************************************************************************************
void interrupt()
{
  HID_InterruptProc();
}
//**************************************************************************************************
//**************************************************************************************************
// Initialization Routine
//**************************************************************************************************
void Init_Main()
{
        //--------------------------------------
        // Disable all interrupts
        //--------------------------------------
        INTCON = 0;                             // Disable GIE, PEIE, TMR0IE,INT0IE,RBIE
        INTCON2 = 0xF5;
        INTCON3 = 0xC0;
        RCON.IPEN = 0;                          // Disable Priority Levels on interrupts
        PIE1 = 0;
        PIE2 = 0;
        PIR1 = 0;
        PIR2 = 0;

        ADCON1 |= 0x0F;                         // Configure all ports with analog function as digital
        CMCON  |= 7;                            // Disable comparators
        //--------------------------------------
        // Ports Configuration
        //--------------------------------------
        TRISA = 0xFF;
        TRISB = 0xFF;
        TRISC = 0xFF;
        TRISD = 0;
        TRISE = 0x07;

        LATA = 0;
        LATB = 0;
        LATC = 0;
        LATD = 0;
        LATE = 0;
        //--------------------------------------
        // Clear user RAM
        // Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
        //--------------------------------------
}
//**************************************************************************************************

//**************************************************************************************************
// Main Program Routine
//**************************************************************************************************

void main() {
 char i;

  Init_Main();

  HID_Enable(&userWR_buffer, &userWR_buffer);

  Delay_ms(1000);
  Delay_ms(1000);
  while(1) {
    Delay_ms(1000);
    i=0;
    while(text[i]) {
      userWR_buffer[0]= text[i++];
      while (!HID_Write(&userWR_buffer, 1));
      }
    }

  Delay_ms(1000);
  HID_Disable();
}
//**************************************************************************************************
4

1 回答 1

0

我的晶体振荡器没有放任何 pf

我认为这行不通。用示波器检查晶体上发生了什么。您的设备根本没有时钟输入,因此它永远不会执行任何操作。

于 2012-11-24T17:56:21.257 回答