STC12C5A60S2串⼝2通信测试程序(实现串⼝⾃发⾃收)快速导航
STC12C5A60S2串⼝2管脚定义
证券经纪人管理暂行规定#include<STC12C5A60S2.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*Define UART parity mode*/
#define NONE_PARITY 0 //None parity
#define ODD_PARITY 1 //Odd parity
#define EVEN_PARITY 2 //Even parity
#define MARK_PARITY 3 //Mark parity
#define SPACE_PARITY 4 //Space parity
#define PARITYBIT EVEN_PARITY //Testing even parity
#define FOSC 11059200L //系统频率
#define BAUD 115200 //UART 波特率
#define S2RI 0x01 //S2CON.0
#define S2TI 0x02 //S2CON.1
#define S2RB8 0x04 //S2CON.2
#define S2TB8 0x08 //S2CON.3
bit busy;
void UartInit2(void)
{
担当者BRT =-(FOSC/32/BAUD);//设置波特率发⽣器⾃动重载
AUXR =0x14;//波特率发⽣器⼯作在1T模式下
AUXR =0x14;//波特率发⽣器⼯作在1T模式下 IE2 =0x01;//使能串⼝2中断
EA =1;//开总中断
}
void putchar(char ch)
{
while(busy);//等待完成之前的数据被发送
ACC = ch;//计算校验位 P (PSW.0)
if(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;//发送数据到串⼝2缓冲区
}
//向串⼝发送⼀段字符串顽皮故事
void prints(char*s)
{
while(*s)
{
putchar(*s++);
}
}
void main()
{
UartInit2();
prints("Hello World");
while(1);
}
void Uart2() interrupt 8 using 1
{
uchar dataTemp;//⽤于存放接收数据
ccyvif(S2CON & S2RI)
{
顾炎武全集dataTemp = S2BUF;//串⼝接收到的数据
/*实现串⼝数据⾃发⾃收*/
S2BUF = dataTemp;//将接收到的数据发送出去
}
if(S2CON & S2TI)
{
S2CON &=~S2TI;//清除发送中断标志位
busy =0;//清除发送忙标志
}
}
本程序参考资料STC官⽅代码