新闻中心

EEPW首页>嵌入式系统>设计应用> C51串口源代码实例

C51串口源代码实例

作者: 时间:2016-11-27 来源:网络 收藏
串口实现函数:
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() interrupt4
{
//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("---------------------------------------------------------------");
}


关键词:C51串口源代

评论


技术专区

关闭