51单片机串口发送程序修改

发布网友 发布时间:2022-04-20 04:00

我来回答

1个回答

热心网友 时间:2022-06-01 21:02

展开3全部修改如下:
#include<reg52.h>
sbit shuru=P1^0;
unsigned char PuZh[16] = "a";
unsigned char BuZh[16] = "b";
bit flaga=0,flagb=0;
void UsartConfiguration();
void Delay10ms(unsigned int c); //误差 0us
void main()
{
unsigned char i;
UsartConfiguration();
while(1)
{
    if(shuru==0 && flaga==0)
    {
    for(i=0; i<16; i++)
        { 
        SBUF = PuZh[i]; //将要发送的数据放入到发送寄存器
        while(!TI);//等待发送数据完成
        TI=0;//清除发送完成标志位
        TR1 = 0; 
        ES = 0; 
        EA = 0; 
        }
        flaga=1;
        flagb=0;
        Delay10ms(500);//延时一下再发 
    }
    else if(shuru==1 && flagb==0)
    {
    for(i=0; i<16; i++)
        { 
        SBUF = BuZh[i]; //将要发送的数据放入到发送寄存器
        while(!TI);//等待发送数据完成
        TI=0;//清除发送完成标志位
        TR1 = 0; 
        ES = 0; 
        EA = 0; 
        }
        flaga=0;
        flagb=1;    
        Delay10ms(500);//延时一下再发
    }
}
/*******************************************************************************
* 函 数 名 :UsartConfiguration()
* 函数功能:设置串口
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void UsartConfiguration()
{
SCON=0X50;//设置为工作方式1
TMOD=0X20;//设置计数器工作方式2
PCON=0X80;//波特率加倍
TH1=0XFA;//计数器初始值设置,注意波特率是4800的
TL1=0XFA;
//ES=1;//打开接收中断
//EA=1;//打开总中断
TR1=1;//打开计数器
}
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);


}

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com