找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3662|回复: 9
打印 上一主题 下一主题
收起左侧

STC15 89C52单片机串口1切换问题

[复制链接]
跳转到指定楼层
楼主
我把AUXR1 = 0x40 切换为P3.6 P3.7,但用串口助手COM5(调试时用)连接P3.6 P3.7时没有反应,用回COM4(下载时用)却有反应,是切换不成功的意思????
还是还有什么东西漏掉了??






  1. #include "reg52.h"
  2. #include "string.h"        

  3. typedef unsigned int u16;         
  4. typedef unsigned char u8;
  5. sfr AUXR1 = 0xa2; //串口切换控制寄存器
  6. #define AUXR1 = 0x40        //串口切换到P3.6和P3.7

  7. u8 i = 0;
  8. u8 buff[30];
  9. u8 *p;

  10. void UartInit(void){                //9600bps@11.0592MHz
  11.         SCON = 0x50;                    //8位数据,可变波特率
  12.         TMOD=0X20;                        //设置计数器工作方式2
  13. //        AUXR |= 0x01;                    //串口1选择定时器2为波特率发生器
  14. //        AUXR |= 0x04;                    //定时器2时钟为Fosc,即1T
  15.         TL1 = 0xfd;                        //设定定时初值
  16.         TH1 = 0xfd;                        //设定定时初值
  17. //        AUXR |= 0x10;                    //启动定时器2
  18.         ES = 1;
  19.         EA = 1;
  20.         TR1 = 1;

  21. }
  22. void main()
  23. {        
  24.         UartInit(); //        串口初始化

  25.         while(1)
  26.         {
  27.                
  28.         }               
  29. }
  30. void Usart() interrupt 4
  31. {
  32.         u8 receiveData;
  33.         

  34.         if(i >= 5){         
  35.                 i = 0;
  36.                 memset(buff, 0, sizeof buff);               
  37.         }

  38.         receiveData=SBUF;//出去接收到的数据
  39.         buff[i] = receiveData;
  40.         RI = 0;//清除接收中断标志位

  41.         if(i>2){
  42.                 SBUF=buff[i];//将接收到的数据放入到发送寄存器
  43.                 while(!TI);                         //等待发送数据完成
  44.                 TI=0;                                //清除发送完成标志位
  45.         }
  46.                                                 
  47.         i++;

  48. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2019-12-25 12:01 | 只看该作者
  把‘#define’去掉,直接 AUXR1 = 0x40;
回复

使用道具 举报

板凳
ID:213173 发表于 2019-12-25 13:51 | 只看该作者
STC15系列可以切换串口,STC89C52没有此功能。
回复

使用道具 举报

地板
ID:472235 发表于 2019-12-25 18:27 | 只看该作者
xuyaqi 发表于 2019-12-25 12:01
把‘#define’去掉,直接 AUXR1 = 0x40;

还是不行
回复

使用道具 举报

5#
ID:472235 发表于 2019-12-25 18:28 | 只看该作者
wulin 发表于 2019-12-25 13:51
STC15系列可以切换串口,STC89C52没有此功能。

它是有两个芯片的,一个89c52,一个STC15W408AS
回复

使用道具 举报

6#
ID:718536 发表于 2020-12-31 17:27 | 只看该作者
我的也是切不过去。这是不是 一个坑来的?还有串口1必须切换到3.6 3.7脚吗?不能用3.0    3.1脚做串口吗?
回复

使用道具 举报

7#
ID:911776 发表于 2021-5-27 11:06 | 只看该作者
suqianfu 发表于 2020-12-31 17:27
我的也是切不过去。这是不是 一个坑来的?还有串口1必须切换到3.6 3.7脚吗?不能用3.0    3.1脚做串口吗?

P3.0, P3.1是下载仿真用的,用了这两个,下载时在软件上需要勾选“下次冷启动时,P3.2 P3.3为00时才可以下载程序”
回复

使用道具 举报

8#
ID:1040462 发表于 2022-7-25 13:06 | 只看该作者
wulin 发表于 2019-12-25 13:51
STC15系列可以切换串口,STC89C52没有此功能。

15怎么切 求大神指点。
回复

使用道具 举报

9#
ID:213173 发表于 2022-7-25 20:42 | 只看该作者
啥也不会玩51 发表于 2022-7-25 13:06
15怎么切 求大神指点。




回复

使用道具 举报

10#
ID:858196 发表于 2022-7-26 09:32 | 只看该作者
啥也不会玩51 发表于 2022-7-25 13:06
15怎么切 求大神指点。

他这个程序是有问题,看芯片手册,切换串口根本不是AUXR这个寄存器,AUXR是辅助功能寄存器,真正切换用的是AUXR1,可以令S1_S1 = 0,S1_S0 = 1,就可以切换串口1的P36 37引脚,建议有问题时候看下芯片手册,或者官方的示例程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表