//串口引脚切换
//参数说明 port :串口号 ConfigPin :引脚指定
void UartChangePin(u8 port,u8 ConfigPin)
{
if(0==port)
{
/*
// P_SW1 = 0x00; //RXD /P3.0, TXD /P3.1
// P_SW1 = 0x40; //RXD_2/P3.6, TXD_2/P3.7
// P_SW1 = 0x80; //RXD_3/P1.6, TXD_3/P1.7
// P_SW1 = 0xc0; //RXD_4/P4.3, TXD_4/P4.4
*/
switch(ConfigPin)
{
case 1:
//P_SW1 = 0x00; //RXD /P3.0, TXD /P3.1 错误写法 只能对位操作,不影响其他位
P_SW1 &= ~(1<6);
P_SW1 &= ~(1<7);
break;
case 2:
// P_SW1 = 0x40; //RXD_2/P3.6, TXD_2/P3.7
P_SW1 |= (1<6);
P_SW1 &= ~(1<7);
break;
case 3:
//P_SW1 = 0x80; //RXD_3/P1.6, TXD_3/P1.7
P_SW1 &= ~(1<6);
P_SW1 |= (1<7);
break;
case 4:
//P_SW1 = 0xc0; //RXD_4/P4.3, TXD_4/P4.4
P_SW1 |= (1<6);
P_SW1 |= (1<7);
break;
}
}
else if(1==port)
{
/*
P_SW2 = 0x00; //RXD2/P1.0, TXD2/P1.1
P_SW2 = 0x01; //RXD2_2/P4.0, TXD2_2/P4.2
*/
switch(ConfigPin)
{
case 1:
// P_SW2 = 0x00; //RXD2/P1.0, TXD2/P1.1
P_SW2 &= ~(1<0);
break;
case 2: //RXD2/P1.0, TXD2/P1.1
// P_SW2 = 0x01; //RXD2_2/P4.0, TXD2_2/P4.2
P_SW2 |= (1<0);
break;
}
}
}
这里STC单片机用的位操作可以防止对其他功能的误操作。 如串口引脚和SPI引脚的映射关系