标签:
8051 串口 通讯 通信 c51
MCU-51串口通信程序
51串口通讯是51单片机的基本,以前每次用串口通信都要自己写程序,想偷懒的话到网上找程序,每次都要花费很长时间才能调通串口。其实对于51 c语言程序来说,写好一个通用程序后,以后每次复制粘贴,程序中调用相应函数既可,而不用每次都为程序发愁。
本文keil项目文件 
#include <reg51.h>
#include <string.h>
unsigned char ch;
bit read_flag= 0 ;
void init_serialcom( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
//UART为模式1,8位数据,允许接收
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
//定时器1为模式2,8位自动重装
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFD ; //Baud:19200 fosc="11".0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
TI=1;
}
//向串口发送一个字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0);
TI= 0 ;
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
if (RI)
{
RI = 0 ;
ch=SBUF;
read_flag= 1 ; //就置位取数标志
}
}
main()
{
init_serialcom(); //初始化串口
while ( 1 )
{
if (read_flag) //如果取数标志已置位,就将读到的数从串口发出
{
read_flag= 0 ; //取数标志清0
send_char_com(ch);
}
}
}
这个程序由四部分组成
init_serialcom( void ) //初始化串口
send_char_com( unsigned char ch) //向串口发送字符
serial () interrupt 4 using 3 //中断串口接收字符
main() //主函数
其中前三个函数都不太需要改变,以后应用的时候直接复制粘贴就行,主要修改的是主函数。这个程序实现的是接收字符,再把这个字符串口发送。
还要一个要注意的是波特率,而波特率可用用下面两个小程序算出

下载:

下载:
关于keil对串口调试,可以参见下一篇博文。
参考资料:
1. 单片机C51串口中断接收和发送测试例程(含通信协议的实现)
http://www.dz863.com/interface-circuits/RS232-Seria-circuits/rs232-C51.htm
2. 51单片机串口波特率计算--博客之家
http://street.bloghome.cn/posts/86892.html
系统分类:
单片机 | 用户分类:
MCS51 | 来源:
原创 | 【推荐给朋友】 | 【添加到收藏夹】
该用户于2009/2/10 10:58:36编辑过该文章