STC12C5A60S2串口2通信测试程序(实现串口自发自收)

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)
{
S2CON =0x50;//8位数据,可变波特率
担当者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)
{
S2CON &=~S2RI;//清除中断标志
顾炎武全集dataTemp = S2BUF;//串⼝接收到的数据
/*实现串⼝数据⾃发⾃收*/
S2BUF = dataTemp;//将接收到的数据发送出去
}
if(S2CON & S2TI)
{
S2CON &=~S2TI;//清除发送中断标志位
busy =0;//清除发送忙标志
}
}
本程序参考资料STC官⽅代码

本文发布于:2024-09-20 13:39:09,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/32838.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议