用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]