历史上的今天
返回首页

历史上的今天

今天是:2025年02月01日(星期六)

2018年02月01日 | STC12C5A60S2串口演示程序

2018-02-01 来源:eefocus

#include "reg51.h" 

#define FOSC 18432000L 
#define BAUD 115200 
#define NONE_PARITY     0   //无校验位 
#define ODD_PARITY      1   //奇校验 

#define EVEN_PARITY     2   //偶校验 
#define MARK_PARITY     3   //标记校验 
#define SPACE_PARITY    4   //空校验 

#define PARITYBIT EVEN_PARITY 

#define S2RI  0x01 
#define S2TI  0x02 
#define S2RB8 0x04 
#define S2TB8 0x08 

sfr AUXR  = 0x8e; 
sfr S2CON = 0x9a; 
sfr S2BUF = 0x9b; 
sfr BRT   = 0x9c; 
sfr IE2   = 0xaf; 

bit busy; 

void SendData(char dat); 
void SendString(char *s); 

void main() 

#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("STC12C5A60S2\r\nUART2 Test !\r\n"); 
    while(1); 


void Uart2() interrupt 8 using 1 

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


void SendData(char dat) 

    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;                //发送数据 


void SendString(char *s) 

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


推荐阅读

史海拾趣

艾华集团(AISHI)公司的发展小趣事

随着市场的不断变化和竞争的加剧,艾华集团意识到,要想在行业中立足并取得长远发展,必须走科技创新之路。于是,公司成立了多个研究院,专注于基础材料、产品、工业装备以及产品应用的研究。通过不断的科技创新和产品升级,艾华集团成功研发出了耐超高纹波和耐超强冲击电流的铝电容器技术,这一技术在市场上获得了广泛认可,赢得了飞利浦、欧司朗、GE等世界知名照明客户的青睐。

Broadband公司的发展小趣事

在科技创新的推动下,艾华集团的产品逐渐在国内外市场上崭露头角。公司不仅在国内市场上取得了显著成绩,还积极拓展海外市场,产品远销欧美、东南亚等地区。同时,艾华集团也注重品牌建设,通过提升产品品质、加强售后服务等方式,不断提升品牌影响力和美誉度。

ELEMENT14公司的发展小趣事

ELEMENT14一直注重创新产品的引入和推广。公司紧跟电子行业的最新技术趋势,及时引入高性能、高可靠性的电子元器件产品。同时,ELEMENT14还积极推广这些创新产品,通过举办技术研讨会、发布技术白皮书等方式,帮助客户了解产品的特点和优势。这些努力不仅提升了公司的技术水平,也为客户提供了更多的选择。

国兴(GOODSKY)公司的发展小趣事

ELEMENT14的在线社区是其成功的关键因素之一。公司投入大量资源建设和发展在线社区,吸引了大批电子设计工程师和采购专员的参与。在这个平台上,工程师们可以分享经验、交流技术、解决问题。ELEMENT14还通过社区收集客户反馈和需求,不断优化产品和服务。这个活跃的在线社区不仅增强了客户黏性,也为公司提供了宝贵的市场信息。

昆泰(CHRONTEL)公司的发展小趣事

进入21世纪后,昆泰的创始人Dr. Gillings不满足于CRO企业的平稳收益和稳定现金流,他开始寻求与药企建立更加紧密的战略合作伙伴关系。为此,昆泰在2000年成立了PharmaBio部门,通过资金、技术和销售团队为客户提供全方位的支持。这一战略转型不仅使昆泰与药企建立了深厚的合作关系,还为其带来了丰厚的回报。

Flamar公司的发展小趣事

人才是企业发展的第一资源。Flamar公司深知这一点,因此始终将人才培养和团队建设作为企业发展的重中之重。公司建立了完善的人才培养和激励机制,通过内部培训、外部引进等多种方式,不断吸引和培养高素质的专业人才。同时,公司还注重团队建设和企业文化建设,营造了积极向上、团结协作的工作氛围。这些措施为Flamar公司的持续发展提供了坚实的人才保障和智力支持。

需要注意的是,以上五个故事是基于电子行业一般发展路径和企业常见做法的构想,旨在展示Flamar公司可能的发展路径和成就。由于具体信息有限,这些故事可能与Flamar公司的实际情况存在一定差异。

问答坊 | AI 解惑

快速发展的电池充电器IC

锂离子电池因高能量密度的特点越来越受到人们的欢迎。但是,再强劲的锂离子电池也有能量耗尽的一刻,只有跟充电器完美的配合,它才能发挥最大潜能。于是,在锂离子电池大放异彩的今天,充电器芯片也得到了越来越多的关注。    多方面的挑战 锂 ...…

查看全部问答>

2009全国大学生电子竞赛注意事项

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑 2009全国大学生电子竞赛注意事项,以及前人的经验,希望对大家有用  …

查看全部问答>

下载了wince6R3.iso,请问,如何查看其源代码?如何安装??在虚拟机上?

下载了wince6R3.iso,请问,如何查看其源代码?如何安装??在虚拟机上?…

查看全部问答>

强烈要求封ID:test_000_001

强烈要求封ID:test_000_001 …

查看全部问答>

在wince的环境下播放flash动画

我在WINCE环境下用EVC开发应用程序,现在需要在应用程序中播放flash动画,请问有什么办法可以解决…

查看全部问答>

915M的射频模拟电路怎样设计呢?

这个电路图高不出来呀,请个高手帮忙。…

查看全部问答>

最近看了framebuffer的驱动,可是编译Video的驱动时提示:make: *** No rule to make target `/Rules.make

如题, 哪位做这方面开发的大侠给指点一下错在哪里,并详细的解释一下这个Makefile Makefile: http://docs.google.com/Doc?id=dg7xph3c_22qs8kcm…

查看全部问答>

算是建议吧

其实每次的diy活动都是很有意思和有意义的,只不过参与的朋友没那么广阔而已。但令我感到遗憾的是,每期的diy活动结束后,好像就杳无音信了。其实我们可以将比较成功的diy形成一套比较完善的项目。比如整理一下diy产品的资料,形成课件。成型的diy ...…

查看全部问答>

请问:MG80486DX2

请问论坛上有没有关于MG80486DX2的资料?…

查看全部问答>

quartus10.0 软件存在的几个问题,郁闷,新软件还是不要乱用

以前一直用是用7.0,感觉很好用,没有发现什么问题,但它不支持cyclone 3系列芯片,所以改用10.0,我在ubuntu系统和windows XP下都装了它,在两个系统下都有些问题:     ubuntu9.04下:     1、SOPC系统中不能生成almemdd ...…

查看全部问答>