8H上电高阻,你没有设置IO模式
可以看下我的串口程序(以串口1为例)
https://www.stcaimcu.com/thread-16321-1-1.html
以下是串口2程序:
初始化:
- P_SW2|=0x80;
- P0M0=0x00;
- P0M1=0x00;
- P1M0=0x00;
- P1M1=0x00;
- P2M0=0x00;
- P2M1=0x00;
- P3M0=0x00;
- P3M1=0x00;
- P4M0=0x00;
- P4M1=0x00;
- P5M0=0x00;
- P5M1=0x00;
- P6M0=0x00;
- P6M1=0x00;
- P7M0=0x00;
- P7M1=0x00;
- //IO模式根据需要设置
- P_SW2|=0x01; //设置UART2端口为UART2_2
- AUXR=0x15; //设置定时器0为12T模式,设置定时器1为12T模式,使能定时器2,设置定时器2为1T模式
- TMOD=0x00; //设置定时器0为16位自动重载模式,设置定时器1为16位自动重载模式
- TL0=0x00; //设置定时器0初值(5ms)
- TH0=0xDC; //设置定时器0初值(5ms)
- ET0=1; //使能定时器0中断
-
- SCON=0x50; //UART1模式为8位数据,可变波特率
- S2CON=S2REN; //UART2模式为8位数据,可变波特率
- T2L=BRT; //设置波特率
- T2H=BRT>>8; //设置波特率
- ES=1; //使能UART1中断
- IE2|=ES2; //使能UART2中断
- EA=1; //使能总中断
复制代码
中断:
- void Uart2_Isr(void) interrupt 8
- {
- if(S2CON&S2RI)
- {
- S2CON&=~S2RI;
- //接收
- }
- if(S2CON&S2TI)
- {
- S2CON&=~S2TI;
- //发送
- }
- }
复制代码
|