您的位置 首页 元件

STC89C52单片机串口调试

实现功能:从电脑上的串口调试助手向实验板发送字符串,实验

/////////////////////////////////////////////////////////////////////////

完结功用:从电脑上的串口调试帮手向试验板发送字符串,试验板接纳到字符串后
会按发送过来的字符串返回到串口调试帮手上,注意在调试串口是应该
把USB周围的跳线帽从USB一边插到DB9上
试验板类型:KBL-XYD-C52
试验称号: 串口接纳、发送试验
编写人: 谢应东
编写日期: 2012-4-24
/////////////////////////////////////////////////////////////////////////
#include

#define uchar unsigned char
#define uint unsigned int

uchar cReceive_Data[35],cNumber=0,cFlag=0; //串口接纳数据寄存
/////////////////////////////////////////////////////////////////////////
函数称号:毫秒延时函数
函数功用:完结毫秒级的延时
参数介绍:Delay_MS: 界说需求延时的毫秒的数值
iNumber: 记载Delay_MS的数值,以for句子完结所要求的延时
iValue: 要延时毫秒所要进行的循环数值,本数值为实践测得
返回值:
注意事项:本试验是在所用晶振为12M的前提下完结的毫秒延时,本函数是经过循环的形
式完结,所以假如改动了晶振的频率,请做相应的改动
/////////////////////////////////////////////////////////////////////////
void DelayMs(unsigned int Delay_MS)
{
uint iNumber,iValue;
for(iNumber=0;iNumber{
iValue=107;
while(iValue–);
}
}
//////////////////////////////////////////////////////////////////////////
函数称号:Init_UART
函数功用:完结对串口初始化
参数介绍:无
返回值:
注意事项:试验板上所用的晶振为11.0592M的,装备的波特率为9600
/////////////////////////////////////////////////////////////////////////
void Init_UART()
{
SCON=0x50; //SCON:串行口工作方法1, 8-bit UART,答应串行接纳位(REN=1)
TMOD=0x20; //TMOD:定时器1,方法2,8位主动重装方法
PCON=0x80; //SMOD=1;(将串口传送的波特率加倍)

TH1=0xfa; //Baud:9600 fosc=11.0592MHz
TL1=0xfa;

TR1=1; //发动定时器/计数器1运转
ES=1; //开串口中止
EA=1;//开总中止
}
/////////////////////////////////////////////////////////////////////////
函数称号:Send_char
函数功用:向串口发送一个字符
参数介绍:cCharacter:要发送到电脑上的字符
返回值:
注意事项:SBUF是单片机中的串口寄存器
/////////////////////////////////////////////////////////////////////////
void Send_char(unsigned char cCharacter)
{
SBUF=cCharacter;//发送数据给“串口调试帮手”接纳窗口
while(TI==0); //等候发送完,TI置1
TI=0; //清零TI为发送中止标志
}
/////////////////////////////////////////////////////////////////////////
函数称号:Send_string
函数功用:向串口发送一个字符串
参数介绍:*string:要发送到电脑上的字符串
返回值:
注意事项:无
/////////////////////////////////////////////////////////////////////////
void Send_string(unsigned char *string)
{
while(*string)//不停地判别循环
{
Send_char(*string++);//发送一个字符到电脑上
}
}
/////////////////////////////////////////////////////////////////////////
函数称号:main
函数功用:把从电脑串口调试帮手上发送到试验板上的字符串,原样发送到串口调试助
手上
参数介绍:无
返回值:
注意事项:无
/////////////////////////////////////////////////////////////////////////
void main()
{
uchar cValue;
DelayMs(50); //安稳体系
Init_UART();//初始化串口
while(1)
{
if(cFlag==1)
{
Send_string(“\r\n您发送的字符串是:”); //发送字符串
Send_string(cReceive_Data); //发送接纳到的字符串
for(cValue=0;cValue{
cReceive_Data[cValue]=\0;
}
cFlag=0; //清收到新数据标志位
}
}
}
/////////////////////////////////////////////////////////////////////////
函数称号:UART_Routine
函数功用:串口接纳中止函数,把数据放入大局变量cReceive_Data里,并让相应的标志位
置1
参数介绍:无
返回值:
注意事项:无
/////////////////////////////////////////////////////////////////////////
void UART_Routine() interrupt 4
{
if(RI==1)//RI为承受中止标志,可能是发送发生的中止
{
ES=0; //关串口中止
cReceive_Data[cNumber++]=SBUF;//将承受数据放入预置数组
cFlag=1;
RI=0;//承受中止标志软件清零
ES=1; //开串口中止
}
}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部