12下一页
返回列表 发新帖我要提问本帖赏金: 10.00元(功能说明)

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

[复制链接]
 楼主| henangongda123 发表于 2021-6-18 09:08 | 显示全部楼层 |阅读模式
使用的骗子型号是: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 | 显示全部楼层
  1.             /********* UART1初始化操作 **********/
  2. /***********************************************************
  3. 函数名:UART1_Init()
  4. 功  能:串口1初始化
  5. 参  数:无
  6. 返回值:无
  7. /**********************************************************/
  8. void UART1_Init(void)
  9. {
  10. //        P_SW1 |= 0x40;              //串口1引脚切换到P3.6,P3.7
  11.         SCON |= 0x50;               //串口1选择模式1(8位数据位,可变波特率),使能UART1接收
  12.         T2L = BRT;
  13.         T2H = BRT>>8;               //设置T2定时器波特率为9600(主频12MHz)
  14.         AUXR = 0x15;                //选择T2定时器作为波特率发射器,并开启T2定时器(1T模式)
  15.         ES = 1;                     //使能UART1接收/发送中断
  16.         EA = 1;                     //使能全局中断
  17. }
  18. /***********************************************************
  19. 函数名:UART1_Isr()
  20. 功  能:串口1接收/发送中断函数
  21. 参  数:无
  22. 返回值:无
  23. /**********************************************************/
  24. void UART1_Isr(void) interrupt 4
  25. {
  26.         uchar Receive_Byte;
  27.         if(RI)                      //串口1接收中断置位
  28.   {
  29.                 RI = 0;                   //清除接收中断标志位RI
  30.                 Receive_Byte = SBUF;      //读取串口一字节接收数据
  31.                 uart_receive_input(Receive_Byte);//接收数据传入mcu_api.c文件
  32. //                LED=~LED;
  33.   }
  34.         if(TI)                      //串口1发送中断置位
  35.   {
  36.     TI = 0;                   //清除发送中断标志位TI
  37. //                LED=~LED;
  38.   }
  39. }

 楼主| 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 打赏了 5.00 元 2021-06-19
理由:感谢提醒!

 楼主| henangongda123 发表于 2021-6-18 09:45 | 显示全部楼层
ayb_ice 发表于 2021-6-18 09:22
将P3.7设置为推挽输出

Why?
ayb_ice 发表于 2021-6-18 09:55 | 显示全部楼层
coody 发表于 2021-6-18 10:53 | 显示全部楼层
没问题啊,我经常切换到P3.6 P3.7,均设置为准双向口(也可以开通额外的3.7K电阻)。
 楼主| henangongda123 发表于 2021-6-18 10:54 | 显示全部楼层

还没空试,晚点我试试
 楼主| 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和用到的寄存器,要养成这个好习惯。

打赏榜单

henangongda123 打赏了 5.00 元 2021-06-19
理由:说好的!

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片
 楼主| 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引脚的有多少?考虑卖吗?

没有 用完了 他们有现货啊 只是价格高而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

2115

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部