我是把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++;
} |