ssss000 发表于 2013-11-12 13:29:07

用stc串口2驱动ch375芯片的初始化程序,有经验的请进入!

void CH375_PORT_INT()       //1200bps@18.432MHz
{
S2CON = 0xd0;       //9位数据,可变波特率
BRT = -(FOSC/32/BAUD);        //设定独立波特率发生器重装值
AUXR &= 0xfb;       //独立波特率发生器时钟为Fosc/12,即12T
AUXR |= 0x10;       //启动独立波特率发生器
S2CON |=0x02;          //S2TI=1
IE2=0x01;
EA=1;
}
            
void CH375_Write_Cmd(uchar cmd)
{

S2CON &=0xfd;       //S2TI=0
S2CON |=0x08;       //S2TB8 = 1;
S2BUF = cmd;
while (!(S2CON & S2TI));
S2CON&=~S2TI;           //S2TI=0;
}
void CH375_Write_Dat(uchar dat)
{
S2CON &=0xfd;       //S2TI=0
S2CON &=0xf7;   //        S2TB8 = 0;
S2BUF = dat;
while ( S2TI == 0 );
}

uchar CH375_Read_Dat()
{
while (!(S2CON&S2RI));
S2CON&=~S2RI;        //        S2RI = 0;
return( S2BUF );
}

void Uart2() interrupt 8 using 1
{
   if(S2CON&S2RI)
{
        S2CON&=~S2RI;           //清除S2RI位
}
if(S2CON&S2TI)
{
S2CON&=~S2TI;       //清除S2TI位
}
}
uchar CH375_Wait_Init()//等待中断信号,回复高电平
{
INT=1;
while(INT);
CH375_Write_Cmd(CMD_GET_STATUS);
return CH375_Read_Dat();
}
void main()
{
CH375_PORT_INT();
CH375_InitDisk();
while(1);
}

uchar CH375_InitDisk()
{
uchar status;
UART_Send_Str("初始化U盘:\n");
UART_Send_Str("请插入U盘\n");
status=CH375_Wait_Init(); //等待U盘插入时产生中断,INT回复高电平
if(status==USB_INT_CONNECT)        //如果状态码表明U盘已连接
{
UART_Send_Str("U盘已插入\n");
}
else
{
UART_Send_Str("U盘插入错误\n");
}
CH375_Write_Cmd(CMD_DISK_INIT);
status=CH375_Wait_Init();
if(status!=USB_INT_SUCCESS)
{
UART_Send_Str("U盘初始化失败\n");
return(status);
}
UART_Send_Str("初始化U盘成功n");
UART_Send_Str("\n");
return(0);       //U盘已经成功初始化
}
麻烦帮我看看,我用串口2来驱动CH375却不能实现初始化,看看我哪里配置的不对?
页: [1]
查看完整版本: 用stc串口2驱动ch375芯片的初始化程序,有经验的请进入!