用51单片机中的SBUF怎么传输两个字节的数据

用51单片机中的SBUF怎么传输两个字节的数据,第1张

ascii码在单片机中也是用16进制来表示的,只是解码后显示的是字符,你要是随便发一个字符,串口调试助手选择字符显示接收就可以显示一个字符出来(可能我们不认识这个字符)。发送一个字符串就是不停的发送直到发送完毕,51单片机有自己的串行发送端口p3.0和p3.1端口,但是它是一个字节一个字节发送的,发送完一个字节会产生一个中断(也可以用判断ti的方式判断是否发送完),中断响应后再次启动发送sbuf=0xxx,就会自动连续的发送,再加上判断就可以控制发送的字节数。

串口初始化:

void

uart_init()

{

tmod=0x20//定时器1,模式2

scon=0x50//串口通讯方式1

th1=0xfd//波特率9600

tl1=0xfd

button=0

delay(1)

ti=0//发送中断标志位清零

ri=0//接收中断标志位清零

tr1=1//启动定时器1

ea=1

//使能全局中断

es=1

//启动串口中断

}

}

void

main()

{

p1=0xff

uart_init()

while(1)

{

}

//

串行中断程序

void

commintproc()

interrupt

4

{

if(ti)

{

ti

=

0

if(sendposi

<

sendcount)

//判断是否发送完成

{

sendposi++

//发送一次计数器加一

sbuf

=

sendbuf[sendposi]//启动发送

}

程序前面加上

#include <reg52.h>

然后使用这个函数,这个函数是发送单字节的,查询方式发送。中断方式要设计串口中断,懒得写了。

void SendOneByte(unsigned char SendByte)

{

  unsigned long Count

  Count=65535

  while(!TI)     //如果是低速连续发送,此处等待上一字符发送完毕,如长时间未发送完毕则计时完成后强行清除TI发送

  {

      if(--Count==0)

      {

            break

      }

  }

  TI=0

  SBUF=SendByte

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存