STC51单片机学习笔记5——串口发送&查询接收

串口发送,查询接收:

#include<reg52.h>
//11.0592M 9600

void Delay(void);
void chuankou_init(void);
unsigned char Receive(void);
void Send(unsigned char dat);

unsigned int kk;


void main()
{
  chuankou_init() ;
    kk=0x0103;
  while(1)
  {
    Delay();
    Send('A');
   //Send(Receive()+1);

  }
}
void chuankou_init()
{
   TMOD=0x20;  //定时器T1工作于方式2 ,8位自动重装
   SCON=0x50;  //SCON=0101 0000B,串口工作方式1,允许接收(REN=1)
   PCON=0x00;  //PCON=0000 0000B,波特率9600
   TH1=0xFD ;  //根据规定给定时器T1赋初值
   TL1=0xFD;  //根据规定给定时器T1赋初值      
   TR1=1;    //启动定时器T1   
   REN=1;    //允许接收
}

void Send(unsigned char dat)
{
   SBUF=dat;
   while(TI==0)         //等待发送完毕
      ;
    TI=0;
    Delay();
}

 unsigned char Receive(void)
{
  unsigned char dat;
  while(RI==0)  //只要接收中断标志位RI没有被置“1”
         ;      //等待,直至接收完毕(RI=1)
      RI=0;      //为了接收下一帧数据,需将RI清0
     dat=SBUF;  //将接收缓冲器中的数据存于dat
      return dat;
}
void Delay()
{
  unsigned char i,j;
  for(i=0;i<250;i++)
    for(j=0;j<250;j++)
      ;
}

完整资料打包

STC51单片机学习笔记5-串口发送&查询接收资源-单片机文档类资源-CSDN下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单的示例代码,实现51单片机通过串口接收字符串: ```c #include <reg51.h> #define FOSC 11059200L // 定义晶振频率 #define BAUD 9600 // 定义波特率 #define MAX_LEN 20 // 定义接收的最大长度 unsigned char RxdBuf[MAX_LEN]; // 定义接收缓冲区 unsigned char RxdLen = 0; // 定义接收长度 void InitUART() // 初始化串口 { SCON = 0x50; // 设置串口工作方式 TMOD &= 0x0F; // 清除T1工作方式 TMOD |= 0x20; // 设置T1为模式2 TH1 = TL1 = -(FOSC / 12 / 32 / BAUD); // 计算T1重载值 TR1 = 1; // 启动T1计数器 ES = 1; // 使能串口中断 EA = 1; // 使能总中断 } void UART_Isr() interrupt 4 // 串口中断处理函数 { if (RI) // 如果收到数据 { RI = 0; RxdBuf[RxdLen] = SBUF; // 将数据存入接收缓冲区 if (RxdBuf[RxdLen] == '\0') // 如果接收到字符串结束符 { RxdLen = 0; // 清空接收长度 } else if (RxdLen < MAX_LEN - 1) // 如果接收长度未达到最大值 { RxdLen++; // 接收长度加1 } } } void main() { InitUART(); // 初始化串口 while (1) { if (RxdLen > 0) // 如果接收数据 { // 处理接收到的字符串 // ... RxdLen = 0; // 清空接收长度 } } } ``` 这段代码通过中断方式接收串口数据,并将数据存入接收缓冲区。当接收到字符串结束符时,将会清空接收长度,并可以对接收到的字符串进行处理。需要注意的是,由于51单片机的RAM较小,所以接收缓冲区大小需要适当设置,以免超出RAM容量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengyuzhe13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值