打印

51单片机串口发送接收问题

[复制链接]
7055|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
law3411209|  楼主 | 2021-6-14 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学习串口通信,想通过电脑串口助手发送字符单片机,单片机再把接收到的字符发送给串口助手,可是串口助手接收到的数据全是00,
#include <STC15F2K60S2.H>
#include "intrins.h"
#define uint_16 unsigned int
#define uchar_8 unsigned char
typedef unsigned char BYTE;
typedef unsigned int WORD;        

#define FOSC 11059200L              //系统频率
#define BAUD 57600                  //串口波特率

#define NONE_PARITY     0       //无校验
#define ODD_PARITY      1       //奇校验
#define EVEN_PARITY     2       //偶校验
#define MARK_PARITY     3       //标记校验
#define SPACE_PARITY    4       //空白校验

#define PARITYBIT  NONE_PARITY   //定义校验位
#define BN 6

uchar_8 code tbuf[6]={"AT+VCC"};
uchar_8 rbuf;
bit busy;
uchar_8 i,y,h=65;

void UART_INIT();
void SendData(BYTE dat);
void SendString(char *s);
void SendData2();

void main()     //主程序
{
                UART_INIT();
        _nop_();
        _nop_();
          SendData2();
                while(1)
                {
                        
                }
}
/*----------------------------
串口初始化
----------------------------*/
void UART_INIT()     //串口初始化
{
        SCON= 0x50;                                                                       //9位可变波特率,校验位初始为0
        T2L = (65536 - (FOSC/4/BAUD));   //设置波特率重装值
  T2H = (65536 - (FOSC/4/BAUD))>>8;
        AUXR = 0x14;                     //T2为1T模式, 并启动定时器2
  AUXR |= 0x01;                    //选择定时器2为串口1的波特率发生器
  ES = 1;                          //使能串口1中断
  EA = 1;
}


void Uart() interrupt 4
{
               
               
      
                 if (RI)
    {
                                ES=0;
        RI = 0;                 //清除RI位
        ACC= SBUF;              //P0显示串口数据
        ES=1;
    }
   
    if (TI)
    {
        TI = 0;                 //清除TI位
        busy = 0;               //清忙标志
    }
}

/*----------------------------
发送串口数据
----------------------------*/
void SendData(BYTE dat)
{
    while (busy);               //等待前面的数据发送完成
    ACC = dat;                  //获取校验位P (PSW.0)
    busy = 1;
    SBUF = ACC;                 //写数据到UART数据寄存器
}
void SendData2()
{
                    //while(busy);
               
                                SBUF=ACC;
                                
               
}
/*----------------------------
发送字符串
----------------------------*/
void SendString(char *s)
{
    while (*s)                      //检测字符串结束标志
    {
        SendData(*s++);             //发送当前字符
    }
}

不知道是哪里有问题?

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

56

帖子

0

粉丝