您现在的位置: 主页 > MCU > 单片机技术应用 > STC12C5A60S2串口演示程序 -
本文所属标签:
为本文创立个标签吧:

STC12C5A60S2串口演示程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]
#include"reg51.h"#defineFOSC18432000L#defineBAUD115200#defineNONE_PARITY0//无校验位#defineODD_PARITY1//奇校验#defineEVEN_PARITY2//偶校验#defineMARK_PARITY3//标记校验#defineSPACE_PARITY4//

#include"reg51.h"

#defineFOSC18432000L
#defineBAUD115200
#defineNONE_PARITY0//无校验位
#defineODD_PARITY1//奇校验

本文引用地址: http://www.21ic.com/app/mcu/201806/761562.htm

#defineEVEN_PARITY2//偶校验
#defineMARK_PARITY3//标记校验
#defineSPACE_PARITY4//空校验

#definePARITYBITEVEN_PARITY

#defineS2RI0x01
#defineS2TI0x02
#defineS2RB80x04
#defineS2TB80x08

sfrAUXR=0x8e;
sfrS2CON=0x9a;
sfrS2BUF=0x9b;
sfrBRT=0x9c;
sfrIE2=0xaf;

bitbusy;

voidSendData(chardat);
voidSendString(char*s);

voidmain()
{
#if(PARITYBIT==NONE_PARITY)
S2CON=0x5a;//8位可变波特率(无校验位)
#elif(PARITYBIT==ODD_PARITY)||(PARITYBIT==EVEN_PARITY)||(PARITYBIT==MARK_PARITY)
S2CON=0xda;//9位可变波特率,校验位初始为1
#elif(PARITYBIT==SPACE_PARITY)
S2CON=0xd5;//9位可变波特率,校验位初始为0
#endif

BRT=-(FOSC/32/BAUD);//设置独立波特率发生器的重载初值
AUXR=0x14;//独立波特率发生器工作在1T模式
IE2=0x01;//使能串口2中断
EA=1;//开总中断

SendString("STC12C5A60S2rnUART2Test!rn");
while(1);
}

voidUart2()interrupt8using1
{
if(S2CON&S2RI)
{
S2CON&=~S2RI;//清除接收完成标志
P0=S2BUF;//P0显示串口数据
P2=(S2CON&S2RB8);//P2.2显示校验位
}
if(S2CON&S2TI)
{
S2CON&=~S2TI;//清除发送完成标志
busy=0;
}
}

voidSendData(chardat)
{
while(busy);//等待上个数据发送完成
ACC=dat;//取得偶校验位P
if(P)//根据P来设置串口数据的校验位
{
#if(PARITYBIT==ODD_PARITY)
S2CON&=~S2TB8;//置校验位为0
#elif(PARITYBIT==EVEN_PARITY)
S2CON|=S2TB8;//置校验位为1
#endif
}
else
{
#if(PARITYBIT==ODD_PARITY)
S2CON|=S2TB8;//置校验位为1
#elif(PARITYBIT==EVEN_PARITY)
S2CON&=~S2TB8;//置校验位为0
#endif
}
busy=1;
S2BUF=ACC;//发送数据
}

voidSendString(char*s)
{
while(*s)//判断字符串结束标志
{
SendData(*s++);//发送字符
}
}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > STC12C5A60S2串口演示程序 -
 

"STC12C5A60S2串口演示程序 -"的相关文章

网站地图

围观()