阅读:1188回复:1
急急急!请高手看一下我的d12固件初始化程序有什么问题
51-d12通信:硬件只有51-12两个片子。
void init_timer0(void) { TMOD &= 0XF0; TMOD |= 0X1; TL0 = 0X0; TH0 = 0X0; ET0 = 1; TR0 = 1; PT0 = 1; } void init_special_interrupts(void) { IT0 = 0;//INT0触发方式0低电平引起0003入口 EX0 = 1;//INT0允许位1打开 PX0 = 0;//INT0优先级控制位0低优先 EA = 1;//全局中断允许位 } void init_port() { P0 = 0xFF;//各端口置1 P1 = 0xFF; P2 = 0xFF; P3 = 0xff; D12SUSPD=0X0; } void init_serial(void) { SCON = 0X53; PCON = 0X80|PCON; TMOD = 0X20; TCON = 0x10; TH1 = 0xf3; } void on_exit(void) { } void main(void) { BOOL in_loop = TRUE; init_port(); init_serial(); init_timer0(); init_special_interrupts(); bEPPflags.value=0; reconnect_USB(); D12_ReadInterruptRegister(); while( in_loop ){ if (bEPPflags.bits.bus_reset) { DISABLE; bEPPflags.bits.bus_reset = 0; ENABLE; } if (bEPPflags.bits.suspend) { DISABLE; bEPPflags.bits.suspend= 0; ENABLE; suspend_change(); } if (bEPPflags.bits.setup_packet){ DISABLE; bEPPflags.bits.setup_packet = 0; ENABLE; control_handler(); } } on_exit(); } void suspend_change(void) { } void stall_ep0(void) { D12_SetEndpointStatus(0, 1); D12_SetEndpointStatus(1, 1); } void disconnect_USB(void) { D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING, D12_CLOCK_12M); } void connect_USB(void) { DISABLE; bEPPflags.value = 0; ENABLE; D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING|D12_SOFTCONNECT, D12_CLOCK_12M); } void reconnect_USB(void) { unsigned long clk_cnt; MCU_LED0 = 0; MCU_LED1 = 0; D12SUSPD=0; disconnect_USB(); for(clk_cnt=0;clk_cnt<50000;clk_cnt++); connect_USB(); MCU_LED0 = 1; MCU_LED1 = 1; } void init_unconfig(void) { D12_SetEndpointEnable(0); } void init_config(void) { D12_SetEndpointEnable(1); } void single_transmit(unsigned char * buf, unsigned char len) { if( len <= EP0_PACKET_SIZE) {//#define EP0_PACKET_SIZE 16 D12_WriteEndpoint(1, buf, len);//端点1写 } } ......... |
|
最新喜欢:![]() |
沙发#
发布于:2003-05-16 14:54
我觉得你还是把现象贴出来好一点。
|
|