请教大家:初始化时,串行口的发,比如串口1的TXD,必须置高吗?
如题,为了测试串口,我写了如下程序:#include "STC32G.h"
void Port_Mode()
{
P3M1=0x00; P3M0=0x00;
P3=0x00;
}
void Uart1_Init(void) //9600bps@12.000MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0xC7; //设置定时初始值
T2H = 0xFE; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
ES = 1; // 开串口1中断
TI=0;
}
void UART1(void) interrupt 4 // 串行口1中断函数
{
if (RI)
{
RI=0;
}
}
void main()
{
Port_Mode();
Uart1_Init(); //9600bps@12.000MHz
EA=1;
while(1)
{
SBUF=0x55;
while(!TI);
TI=0;
}
}
不想,串口调不通,在把函数 Port_Mode()中 P3=0x00;改为P3=0x02;后可以了,串口的2个管脚我设为准双向,这2个管脚的初始值我原以为设为高或低都可以,不想TXD设为低后,不行,必须设为高,请教大家,这时为什么,谢谢。
发送管脚设置成强推挽,接收设置成高阻输入 神农鼎 发表于 2026-1-7 12:59
发送管脚设置成强推挽,接收设置成高阻输入
谢谢管理员的回复,我刚试了下,发送脚设为强推挽,接收设为高阻输入,P3=0x00;还是不行,P3=0x02;串口就可以正常工作。 newlined 发表于 2026-1-7 13:35
谢谢管理员的回复,我刚试了下,发送脚设为强推挽,接收设为高阻输入,P3=0x00;还是不行,P3=0x02;串口 ...
串口默认是高电平,TXD需要置1 DebugLab 发表于 2026-1-7 14:35
串口默认是高电平,TXD需要置1
好的,谢谢版主的回复。
页:
[1]