MCU-51串口通信程序<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
51串口通讯是51单片机的基本,以前每次用串口通信都要自己写程序,想偷懒的话到网上找程序,每次都要花费很长时间才能调通串口。其实对于<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />51 c语言程序来说,写好一个通用程序后,以后每次复制粘贴,程序中调用相应函数既可,而不用每次都为程序发愁。
本文keil项目文件 https://static.assets-stash.eet-china.com/album/old-resources/2009/2/10/30f9d9a1-6ff8-4a4c-85f1-31ff01233798.rar
#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() //主函数
其中前三个函数都不太需要改变,以后应用的时候直接复制粘贴就行,主要修改的是主函数。这个程序实现的是接收字符,再把这个字符串口发送。
还要一个要注意的是波特率,而波特率可用用下面两个小程序算出
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
下载:https://static.assets-stash.eet-china.com/album/old-resources/2009/2/10/aa1a4062-3250-49ae-81d2-a616788bb760.rar
下载:https://static.assets-stash.eet-china.com/album/old-resources/2009/2/10/769ab1ba-1b4e-447d-b303-4c2f805cebb7.rar
关于keil对串口调试,可以参见下一篇博文。
参考资料:
http://www.dz863.com/interface-circuits/RS232-Seria-circuits/rs232-C51.htm
2. 51单片机串口波特率计算--博客之家
用户592064 2010-11-21 17:57
用户592064 2010-11-21 15:44
用户1505348 2009-9-1 18:56
coyoo 2009-8-24 11:41
用户1443749 2009-8-23 12:33
用户534970 2009-8-22 08:40
coyoo 2009-8-20 11:28
tengjingshu_112148725 2009-7-6 09:10
用户174496 2009-7-2 12:19
tengjingshu_112148725 2009-4-20 09:00