串口初始化:
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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)