您的位置 首页 新能源

C51串口源代码实例

串口实现函数:voidinit_uart(void){PCON=0x80;倍频,减少误差率TMOD=0x25;设置定时器1为方式2(用于设置波特率);设置T0为计数器

串口完成函数:

void init_uart(void)
{
PCON=0x80; //倍频,削减误差率
TMOD=0x25; //设置定时器1为方法2(用于设置波特率);设置T0为计数器形式1,用作HV的查看
TH1=0xF1; //装入初值 波特率为9600 晶振27MHz TH1=0XF1
TL1=0xF1;
TR1=1; //发动定时器1
SM0=0;
SM1=1; //串口方法1,8 bit uart
REN=1; //接纳使能
EA=1;
ES=1;
return;
}
void serial() interrupt 4
{
//uartflag = 1;
RI=0;
}
//向串口发送一个字符
void send_char(U8 ch)
{
ES=0;
TI=0;
SBUF=ch;
while(!TI);
TI=0;
ES=1;
}
//向串口发送多个字符
void send_chars(U8 *ch)
{
U8 i=0;
ES=0;
TI=0;
for(i=0;ch[i]!=;i++)
{
SBUF=ch[i];
while(!TI);
TI=0;
}
ES=1;
}
//向串口发送一个字符 无需十六进制显现
void send_u8(U8 ch)
{
U8 tt;
send_char(x30); //x30其间30是十六进制 代表“0”
send_char(x58); //x58其间30是十六进制 代表“x”
tt = ch >>4 ;
if(tt<10)
{
send_char(tt+0);
}
else
{
send_char(tt+A-10);
}
tt = ch &0x0F ;
if(tt<10)
{
send_char(tt+0);
}
else
{
send_char(tt+A-10);
}
send_chars(“”);
}
//向串口发送一个字符 无需十六进制显现
void send_u16(U16 ch)
{
U8 tt;
send_char(x30); //x30其间30是十六进制 代表“0”
send_char(x58); //x58其间30是十六进制 代表“x”
tt = ch >>12 ;
if(tt<10)
{
send_char(tt+0);
}
else
{
send_char(tt+A-10);
}
tt = (ch>>8) &0x0F ;
if(tt<10)
{
send_char(tt+0);
}
else
{
send_char(tt+A-10);
}
tt = (ch>>4) &0x0F ;
if(tt<10)
{
send_char(tt+0);
}
else
{
send_char(tt+A-10);
}
tt = ch &0x0F ;
if(tt<10)
{
send_char(tt+0);
}
else
{
send_char(tt+A-10);
}
send_chars(“”);
}
void uart_welcome()
{
send_chars(“—————————————————————“);
send_chars(” Welcome to Tvia 5735 Uart Test V1.0″);
send_chars(“Built time: 2013-09-24”);
send_chars(“MCU FOSC:27Mhz Baud rate:9600″);
send_chars(“Note:”);
send_chars(“Serial debugging assistants do not need to choose a hex display”);
send_chars(“—————————————————————“);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/257522.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部