我把AUXR1 = 0x40 切換為P3.6 P3.7,但用串口助手COM5(調試時用)連接P3.6 P3.7時沒有反應,用回COM4(下載時用)卻有反應,是切換不成功的意思????
還是還有什么東西漏掉了??
9b8e83117119c737e130e6948410013.jpg (190.88 KB, 下載次數: 55)
下載附件
2019-12-25 10:59 上傳
- #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++;
- }
復制代碼
|