怎样编写单片机的串口通信的程序,一般的步骤是怎么样

怎样编写单片机的串口通信的程序,一般的步骤是怎么样,第1张

编写串口通讯程序步骤为:

1、设置波特率

2、设置串口工作方式

3、收发数据

比如:

main()

{

unsigned char dat

TMOD=0x20

TH1=0xfd

TL1=0xfd

TR1=1

SCON=0x50

while(1)

    {

    while(RI==0)

    RI=0

    dat=SBUF

    SBUF=~dat

    while(TI==0)

    TI=0

    }

}

从你出现的问题看,你应该是发的0,1,2,3……255的数,而不是它们对应的ASCII的值。比如你要发送在串口调试工具中显示0,应该发送0的ASCII值;假设你的串口发送一字节的函数为:sendbyte(unsigned

char

n)

则发送函数可以这样写:

void

send(void)

{

unsigned

char

i

for

(i=0i<256i++)

{

sendbyte(n/100+'0')

sendbyte(n%100/10+'0')

sendbyte(n%100%10+'0')

}

}

去掉16进制显示,就能看到0-255的显示了

修改如下:

#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>0c--)

{

for (b=38b>0b--)

{

for (a=130a>0a--)

}


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

原文地址: http://outofmemory.cn/yw/11170163.html

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

发表评论

登录后才能评论

评论列表(0条)

保存