历史上的今天
返回首页

历史上的今天

今天是:2024年11月11日(星期一)

正在发生

2019年11月11日 | STC15w4k58s4单片机4串口同时收发例程

2019-11-11 来源:51hei

STC15w4k58s4 芯片的4串口同时收发例程


单片机源程序如下:

#include "intrins.H"

#include "uart.H"

#define uchar unsigned  char

#define uint  unsigned   int


uchar uart1buf[6]={0xa5,0x5a,0x4a,0xf8,0xff,0xff};

uchar uart2buf[6]={0xa5,0x5a,0x4a,0xf8,0xff,0xff};

uchar uart3buf[6]={0xa5,0x5a,0x4a,0xf8,0xff,0xff};

uchar uart4buf[6]={0xa5,0x5a,0x4a,0xf8,0xff,0xff};

uchar uart2_i,uart3_i,uart4_i;

bit flag2=0,flag3=0,flag4=0;         //flag of reveived new packs  收到新数据包标志

void delay(uint k)        

{                                                

uint i,j;                                

for(i=0;i{                        

for(j=0;j<121;j++)                        

{;}}                                                

}

void main()

{

uchar i;

uint l1,l2,l3;

Uart1Init();

Uart2Init();

Uart3Init();

Uart4Init();

while(1)

{

  if(flag3==1||flag2==1||flag4==1)

  {

   flag4=0;

   flag3=0;

   flag2=0;

   for(i=0;i<6;i++)

   uart1buf[i]=uart3buf[i];

   l1=256*uart2buf[2]+uart2buf[3];

   l1=l1/10*7;

   l2=256*uart3buf[2]+uart3buf[3];

   l2=l2/10*7;

   l3=256*uart4buf[2]+uart4buf[3];

   if(l1<=l2&&l1<=l3)

   {

   uart1buf[2]=l1/256;

   uart1buf[3]=l1%256;

   }

   if(l2<=l1&&l2<=l3)

   {

   uart1buf[2]=l2/256;

   uart1buf[3]=l2%256;

   }

   if(l3<=l1&&l3<=l2)

   {

   uart1buf[2]=uart4buf[2];

   uart1buf[3]=uart4buf[3];    

   }

   if(uart1buf[2]>=0xea)

   {

   uart1buf[2]=0xea;

   uart1buf[3]=0x00;

   }

   for(i=0;i<6;i++)

   UART1_SendData(uart1buf[i]);

  }

//   delay(500);

}


void Uart2() interrupt 8 using 1

{

    if (S2CON & S2RI)

    {

        S2CON &= ~S2RI;         //清除S2RI位

                uart2buf[uart2_i]=S2BUF;

                uart2_i++;

                if(uart2_i==6)

                {

                uart2_i=0;

                flag2=1;

                if(uart2buf[2]==0&&uart2buf[3]==0)

                {

                 uart2buf[2]==0x2a;

                 uart2buf[3]==0xf8;

                }

                }

    }

    if (S2CON & S2TI)

    {

        S2CON &= ~S2TI;         //清除S2TI位

    }

}

void Uart3() interrupt 17 using 1

{

    if (S3CON & S3RI)

    {

        S3CON &= ~S3RI;         //清除S2RI位

                uart3buf[uart3_i]=S3BUF;

                uart3_i++;

                if(uart3_i==6)

                {

                uart3_i=0;

                flag3=1;

                if(uart3buf[2]==0&&uart3buf[3]==0)

                {

                 uart3buf[2]==0x2a;

                 uart3buf[3]==0xf8;

                }

                }

    }

    if (S3CON & S3TI)

    {

        S3CON &= ~S3TI;         //清除S3TI位

    }

}

void Uart4() interrupt 18 using 1

{

    if (S4CON & S4RI)

    {

        S4CON &= ~S4RI;         //清除S2RI位

                uart4buf[uart4_i]=S4BUF;

……………………



推荐阅读

史海拾趣

统宇电研(Coilmaster)公司的发展小趣事

统宇电研公司成立于1995年,初创时期面临着重重挑战。当时,电子行业正值技术革新的关键时期,无源组件市场竞争激烈。统宇电研凭借对技术的敏锐洞察力和对市场趋势的准确判断,决定专注于高性能功率电感等无源组件的研发和生产。公司团队夜以继日地攻克技术难题,不断优化产品设计,最终成功推出了一系列具有竞争力的产品,为公司赢得了市场的认可。

启珑(CHIPLON)公司的发展小趣事

面对日益激烈的市场竞争,统宇电研不断拓展市场领域,寻求新的增长点。公司积极参与国内外行业展会和论坛,加强与客户的沟通与交流,深入了解市场需求。同时,统宇电研还针对不同地区的市场特点,制定了灵活多样的销售策略和方案。这些努力使得统宇电研的市场份额不断扩大,品牌知名度也逐渐提升。

HTSEMI( Jin Yu Semiconductor )公司的发展小趣事

金宇半导体成立于2005年,由一群来自国内外顶尖高校的半导体专家共同创立。在成立初期,公司面临着资金短缺和技术瓶颈的双重挑战。创始人团队凭借在微处理器设计领域的深厚积累,成功研发出了一款低功耗、高性能的嵌入式处理器芯片,迅速获得了市场的关注。这款芯片不仅在国内智能手机市场占据了一席之地,还成功打入国际市场,为公司的后续发展奠定了坚实基础。

ZTE高新兴(Gosuncn)公司的发展小趣事

随着技术实力的不断提升,金宇半导体开始积极拓展国内外市场。公司制定了详细的市场拓展计划,通过参加国际电子展、举办技术研讨会等方式,加强与客户的沟通和交流。同时,金宇半导体还加大了品牌建设的力度,通过广告宣传、媒体合作等多种方式提升品牌知名度和美誉度。这些努力使得金宇半导体的市场份额逐年攀升,品牌影响力也日益增强。

GREEGOO公司的发展小趣事
在需要时钟分路的地方,使用专用的时钟分路、放大、整形的芯片,以确保时钟信号的无衰减传输。
Handok Co Ltd公司的发展小趣事
在需要时钟分路的地方,使用专用的时钟分路、放大、整形的芯片,以确保时钟信号的无衰减传输。

问答坊 | AI 解惑

硬件工程师在硬件开发中要注意的事项

      1 启动一个硬件开发项目        原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设 ...…

查看全部问答>

PADS自己修改快捷键

pads快捷键放在目录下,,,可以自己定义修改快捷键的PDF.压缩包是我自己做的pads快捷键放在安装目录下就OK了.有了快捷键提高了LAYOUT速度哦.…

查看全部问答>

TMS320F2812的头文件

头文件不需要自己定义,一般情况下是这样,但是奇怪的是我们常常不知道那些定义了,先来一起看一看吧! 现在把楼下的所有资源在这里回个总。哪一模块不熟悉欢迎交流。。。。 O(∩_∩)O~ [ 本帖最后由 gaoxiao 于 2009-8-24 20:45 编辑 ]…

查看全部问答>

【博客帮助帖】博客的分享功能

1)登录博客后,进入个人空间,点击上方的“分享”,如下图所示 2)进入分享界面,在这里可以分享很多东西,比如网址、视频、音乐等等,还可以查看自己和大家的分享, 3)发布分享在“我的分享”界面的右侧,如下图所示, …

查看全部问答>

Windows CE设备驱动程序开发06.pdf

Windows CE设备驱动程序开发06.pdf…

查看全部问答>

关于内存颗粒的位宽问题……

我们都知道一个内存颗粒中的数据需要通过ROW(行)和COL(列)来对其进行访问,那么该颗粒的位宽是由什么决定的?是由COL来决定的吗?…

查看全部问答>

哪位高手有针对ST2410的u-boot?

各位大侠,哪位手里有针对ST2410移植好的u-boot?最近做的项目急用,哪位好心帮帮忙!小弟多谢了! 邮箱haishi-qhm@163.com QQ154634556 不胜感激!…

查看全部问答>

WinCE上 如何设置一个进程的优先级?

WinCE上 线程的优先级是可以设置的,请问如何设置一个进程的优先级? …

查看全部问答>

这样的程序在嵌入式设备下可能会出现什么问题 应该如何改进

viod main() { char str[1024]; .... return; } 这样的程序在嵌入式设备下可能会出现什么问题 应该如何改进 面试题 堆栈小,堆栈溢出的问题?…

查看全部问答>