我是把AUXR1 = 0x40切换到P3.6、P3.7,但用串口助手连接P3.6、P3.7管脚时没反应,反而是原来的默认串口有反应??
#include "reg52.h"
#include "string.h"
sfr AUXR1 = 0xa2; //串口切换控制寄存器
typedef unsigned int u16;
typedef unsigned char u8;
#define AUXR1 = 0x40;
u8 i = 0;
u8 buff[30];
u8 *p;
void UartInit(void){ //9600bps@11.0592MHz
SCON = 0x50; //8位数据,可变波特率
TMOD=0X20; //设置计数器工作方式2
// AUXR |= 0x01; //串口1选择定时器2为波特率发生器
// AUXR |= 0x04; //定时器2时钟为Fosc,即1T
TL1 = 0xfd; //设定定时初值
TH1 = 0xfd; //设定定时初值
// AUXR |= 0x10; //启动定时器2
ES = 1;
EA = 1;
TR1 = 1;
}
void main()
{
UartInit(); // 串口初始化
while(1)
{
}
}
void Usart() interrupt 4
{
u8 receiveData;
if(i >= 5){
i = 0;
memset(buff, 0, sizeof buff);
}
receiveData=SBUF;//出去接收到的数据
buff[i] = receiveData;
RI = 0;//清除接收中断标志位
if(i>2){
SBUF=buff[i];//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
i++;
} |