C51单片机如何从PC机串口接收字符串

C51单片机如何从PC机串口接收字符串,第1张

我的程序的一部分,供参考

//主流程

void main(void)

{

//系统初始化

SCON = 0x50; //串口方式为1,SM2= 0,TB8= 1

PCON = 0x80; // SMOD=1

TMOD = 0x22; //设定定时器0/1的工作模式为方式2

//设置T0中断的定时时间为1/7200毫秒

TH0 = 0x00;

TL0 = 0x00;

//设置异步串口的波特率

//TH1 = 0x0f4; //OSC = 110592MHz bps = 4800 SMOD=1

//TL1 = 0x0f4;

TH1 = 0x0fd; //OSC = 110592MHz bps = 19200 SMOD=1

TL1 = 0x0fd;

//设置中断优先级,T0中断为高优先级中断,其他为低优先级中断

IP = 0x02; // 设置中断优先级--T0为高优先级,其他低

ET0 = 1; //定时器0中断

ES = 1; //串行接口中断

EA = 1; //系统中断允许

TR0 = 1; //启动定时器0

TR1 = 1;

//串口接收中断处理程序

//发送采用查询处理

void SerialComm(void) interrupt 4

{

_pReceive[_cReceive] = SBUF;

_cReceive ++;

if(_cReceive >= RecBuffSize) _cReceive = 0;

RI = 0;

}

//串口发送一个字节

//senddata:需要发送的数据

void SendOneByte(unsigned char senddata)

{

ES = 0;

TI = 0;

SBUF = senddata;

while(TI == 0);

TI = 0;

ES = 1;

}

1、51单片机串行口是独立的硬件,对其设置完之后,它就独立工作了。如果REN=1,它会自动检测RXD,当它收齐了一帧数据,就自动将数据放到(接收)SBUF,然后在RI置一。 CPU的中断系统,如果已经开放了串口中断,CPU就会自动转到0023H去执行程序。

2、例程:

#include <AT89X51H>//单片机51头文件,存放着单片机的寄存器

unsigned char dat;        //用于存储单片机接收发送缓冲寄存器SBUF里面的内容

sbit gewei=P2^2;          //个位选通定义

sbit shiwei=P2^3;         //十位选通定义

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};

//{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

void Delay(unsigned int tc)     //延时程序

{

while( tc != 0 )

   {unsigned int i;

    for(i=0; i<100; i++);

    tc--;}

}

void LED()    //LED显示接收到的数据

{  

   shiwei=0; 

   P0=~table[dat/16]; 

   Delay(8); 

   shiwei=1;

   gewei=0;  

   P0=~table[dat%16]; 

   Delay(5); 

   gewei=1;

}

void Init_Com(void)//功能:串口初始化,波特率9600,方式1

{

     TMOD = 0x20;

     PCON = 0x00;

     SCON = 0x50;

     TH1 = 0xFd;

     TL1 = 0xFd;

     TR1 = 1;

}

void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////

{

  Init_Com();//串口初始化

//  P1=0xf0;

  while(1)

   {

       if ( RI )      //扫描判断是否接收到数据,

       {

            dat = SBUF;//接收数据SBUF赋与dat

     RI=0;           //RI清零。

            SBUF = dat;//在原样把数据发送回去

}

LED();  //显示接收到的数据

   }

}

以上就是关于C51单片机如何从PC机串口接收字符串全部的内容,包括:C51单片机如何从PC机串口接收字符串、C语言如何处理51串口接收数据、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10220265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存