我把AUXR1 = 0x40 切换为P3.6 P3.7,但用串口助手COM5(调试时用)连接P3.6 P3.7时没有反应,用回COM4(下载时用)却有反应,是切换不成功的意思????
还是还有什么东西漏掉了??
- #include "reg52.h"
- #include "string.h"
- typedef unsigned int u16;
- typedef unsigned char u8;
- sfr AUXR1 = 0xa2; //串口切换控制寄存器
- #define AUXR1 = 0x40 //串口切换到P3.6和P3.7
- 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++;
- }
复制代码
|