henangongda123 发表于 2021-6-18 09:08

请教一下STC8G1K08单片机串口1不能切换引脚问题

使用的骗子型号是:STC8H1K0838I-TSSOP20,串口1想用P3.6/P3.7引脚,默认的P3.0/P3.1用作下载程序用,现在发现切换串口1到P3.6/P3.7端口后,接收没有问题,能进中断,就是发送端口没信号,一直高电平,不知道咋回事!不切换的话,默认P3.0/P3.1端口就可以正常使用。程序下面贴~

henangongda123 发表于 2021-6-18 09:09

            /********* UART1初始化操作 **********/
/***********************************************************
函数名:UART1_Init()
功能:串口1初始化
参数:无
返回值:无
/**********************************************************/
void UART1_Init(void)
{
//        P_SW1 |= 0x40;            //串口1引脚切换到P3.6,P3.7
        SCON |= 0x50;               //串口1选择模式1(8位数据位,可变波特率),使能UART1接收
        T2L = BRT;
        T2H = BRT>>8;               //设置T2定时器波特率为9600(主频12MHz)
        AUXR = 0x15;                //选择T2定时器作为波特率发射器,并开启T2定时器(1T模式)
        ES = 1;                     //使能UART1接收/发送中断
        EA = 1;                     //使能全局中断
}
/***********************************************************
函数名:UART1_Isr()
功能:串口1接收/发送中断函数
参数:无
返回值:无
/**********************************************************/
void UART1_Isr(void) interrupt 4
{
        uchar Receive_Byte;
        if(RI)                      //串口1接收中断置位
{
                RI = 0;                   //清除接收中断标志位RI
                Receive_Byte = SBUF;      //读取串口一字节接收数据
                uart_receive_input(Receive_Byte);//接收数据传入mcu_api.c文件
//                LED=~LED;
}
        if(TI)                      //串口1发送中断置位
{
    TI = 0;                   //清除发送中断标志位TI
//                LED=~LED;
}
}

henangongda123 发表于 2021-6-18 09:10

P3.0/P3.1、P3.6/P3.7端口都没有设置,默认处理,本来想切换到P1.6/P1.7端口试试的,但是这两个引脚接了无源晶振,用不了。

henangongda123 发表于 2021-6-18 09:11

有哪位大神能指点一下不?5+元赏金

ayb_ice 发表于 2021-6-18 09:22

henangongda123 发表于 2021-6-18 09:11
有哪位大神能指点一下不?5+元赏金

将P3.7设置为推挽输出

henangongda123 发表于 2021-6-18 09:45

ayb_ice 发表于 2021-6-18 09:22
将P3.7设置为推挽输出

Why?

ayb_ice 发表于 2021-6-18 09:55

henangongda123 发表于 2021-6-18 09:45
Why?

试了没有

coody 发表于 2021-6-18 10:53

没问题啊,我经常切换到P3.6 P3.7,均设置为准双向口(也可以开通额外的3.7K电阻)。

henangongda123 发表于 2021-6-18 10:54

ayb_ice 发表于 2021-6-18 09:55
试了没有

还没空试,晚点我试试

henangongda123 发表于 2021-6-18 10:55

coody 发表于 2021-6-18 10:53
没问题啊,我经常切换到P3.6 P3.7,均设置为准双向口(也可以开通额外的3.7K电阻)。 ...

默认,就是不设置端口,是不是准双向口?

567 发表于 2021-6-18 15:13

复位后默认是高阻输入。

另外,程序如果调不好,考虑把芯片卖掉吗?

coody 发表于 2021-6-18 15:51

henangongda123 发表于 2021-6-18 10:55
默认,就是不设置端口,是不是准双向口?

STC8G、STC8H系列,IO上电默认状态:除了P3.0 P3.1是准双向口输出高之外,其余IO均位高阻,但内部端口锁存输出高电平。所以,你要设置IO。我从来不管默认,都是自己初始化设置IO和用到的寄存器,要养成这个好习惯。

coody 发表于 2021-6-18 15:51

567 发表于 2021-6-18 15:13
复位后默认是高阻输入。

另外,程序如果调不好,考虑把芯片卖掉吗?

这个太直接了,呵呵

henangongda123 发表于 2021-6-18 16:57

567 发表于 2021-6-18 15:13
复位后默认是高阻输入。

另外,程序如果调不好,考虑把芯片卖掉吗?

咋了 你想要这个片子?我就5片{:lol:}

henangongda123 发表于 2021-6-18 16:59

coody 发表于 2021-6-18 15:51
STC8G、STC8H系列,IO上电默认状态:除了P3.0 P3.1是准双向口输出高之外,其余IO均位高阻,但内部端口锁 ...

这样啊 我还以为串口接管IO后会自动把IO设置好,晚上有空验证一下,是不是这个IO没设置的原因

henangongda123 发表于 2021-6-19 11:58

可以结贴了,STC8G1K08单片机切换P3.6/P3.7端口为串口1输出的时候确实要先设置端口为准双向口后才会有输出

567 发表于 2021-6-19 14:31

henangongda123 发表于 2021-6-18 16:57
咋了 你想要这个片子?我就5片

就5片还搞什么程序,等程序搞好了买不到程序不就白瞎了吗?

henangongda123 发表于 2021-6-19 15:22

567 发表于 2021-6-19 14:31
就5片还搞什么程序,等程序搞好了买不到程序不就白瞎了吗?

我知道 大货肯定不用这个型号,这个是之前免费送我的样品,大货用8引脚的

567 发表于 2021-6-19 15:45

henangongda123 发表于 2021-6-19 15:22
我知道 大货肯定不用这个型号,这个是之前免费送我的样品,大货用8引脚的 ...

8引脚的有多少?考虑卖吗?

henangongda123 发表于 2021-6-19 16:55

567 发表于 2021-6-19 15:45
8引脚的有多少?考虑卖吗?

没有 用完了 他们有现货啊 只是价格高而已
页: [1] 2
查看完整版本: 请教一下STC8G1K08单片机串口1不能切换引脚问题