为什么我插入USB之后没有反应?硬件查过是没有问题的,下面是按CH372的PDF的要求和我写的代码,附件里有STC12C5AS2的PDF,究竟是错在哪里了?不是在初始化时写入命令模式2就行了吗? 本地端的单片机软件 CH372芯片占用两个地址位,当A0 引脚为高电平时选择命令端口,可以写入命令;当A0引脚为 低电平时选择数据端口,可以读写数据。 单片机通过8 位并口对CH372 芯片进行读写,所有操作都是由一个命令码、若干个输入数据和若 干个输出数据组成,部分命令不需要输入数据,部分命令没有输出数据。命令操作步骤如下: ①、 在A0=1 时向命令端口写入命令代码; ②、 如果该命令具有输入数据,则在A0=0 时依次写入输入数据,每次一个字节; ③、 如果该命令具有输出数据,则在A0=0 时依次读取输出数据,每次一个字节; ④、 命令完成,可以暂停或者转到①继续执行下一个命令。 #include "STC_NEW_805.H" #include "CH375INC.H" #define uchar unsigned char #define uint unsigned int #define ulong unsigned long
sbit Ch372_Read=P3^7; sbit Ch372_Write=P3^6; sbit Ch372_CS=P4^4; sbit Ch372_A0=P4^0; sbit Ch372_En=P3^3; sbit Led=P4^1; sfr Ch372_Port=0x80; void sdelay(uchar DelayNum) { while(DelayNum--); } void ch372_writecmd(uchar Ch372Command) { uchar Command_Temp; Command_Temp=Ch372Command; Ch372_CS=0; Ch372_A0=1; Ch372_Port=Command_Temp; Ch372_Write=0; sdelay(5); Ch372_Write=1; } void ch372_writedata(uchar Ch372Data) { uchar Data_Temp; Data_Temp=Ch372Data; Ch372_CS=0; Ch372_A0=0; Ch372_Port=Data_Temp; Ch372_Write=0; sdelay(5); Ch372_Write=1; } /*void ch372_readdata() { uchar UsbData; Ch372_Port=0xff; Ch372_Read=0; sdelay(2); UsbData=Ch372_Port; sdelay(2); Ch372_Read=1; return (UsbData); } */ void ch372int() { EX0=1; ch372_writecmd(CMD_RESET_ALL) ; sdelay(1000); ch372_writecmd(CMD_SET_USB_MODE) ; sdelay(10); ch372_writedata(2); EX0=1; EA=1; } main() {
P4SW=0x70; Ch372_En=0; while(1) { ch372int(); Led=0; } }[Emot]1[/Emot]