STC15w4k58s4单片机4串口同时收发例程

2019-11-11来源: 51hei关键字:STC15w4k58s4  单片机  串口  同时收发

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;

……………………



关键字:STC15w4k58s4  单片机  串口  同时收发 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479575.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:NTC热敏电阻测温度 单片机C和汇编源程序
下一篇:单片机MQ-2烟雾检测+ADC0809 AD转换+lcd1602显示程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

小家电热销带动盛群,新唐单片机出货量激增
由于今年白色小家电需求依旧热络,10月开始一波急单带动IC设计盛群(6202)、新唐(4919)MCU出货量增,加上年底耶诞节购物需求,及上半年库存去化告一段落,第四季业绩将优于第三季,全年营运可望倒吃甘蔗。10月相关白牌小家电零组件IC出现节前急单拉货潮,盛群表示,10月开始,已感受到订单回流迹象,客户及终端库存去化、中国双11及年底拉货旺季到来,且中国去美化政策逐季发酵,客户拉货态度转趋积极。上半年受到贸易战影响,客户拉货态度观望,下半年库存水位已降至低点,MCU厂在客户要求下,于10月备妥急单需求,主要以小家电商品IC为主,第四季进入全年出货旺季,法人预估今年第四季MCU厂业绩可望成为全年最高点。
发表于 2019-11-11
AVR单片机红外遥控键值解码实验
AVR学习笔记十八、红外遥控键值解码实验  18.1 实例功能 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 在这个实验中,我们采用红外线遥控器和一体化红外接收头来进行红外遥控键值解码的实验,本实例分为三个功能模块,分别描述如下: ● 单片机系统:利用 ATmega16单片机与一体化红外接收器组成红外接收电路。 
发表于 2019-11-11
AVR单片机红外遥控键值解码实验
AVR单片机跑马灯的仿真设计
简易的跑马灯设计。基于AVR单片机仿真原理图如下:单片机源程序如下:/********************************************************************                            汇诚科技*********************************************************************/#include <iom16v.h>
发表于 2019-11-11
AVR单片机跑马灯的仿真设计
直流有刷伺服控制系统(pic单片机,pid控制)
基于PIC18系列单片机的直流有刷伺控制系统:(来处于国外贴)1:原理图(PDF)2:原理图及PCB图(EAGLE)3:带pid + 编码器的控制程序。main.c电路原理图如下: 单片机源程序如下:// Vertical motor driver code // Oringially made by Kevin Wolfe 2009-2011// Modified by Matt Moses 2010-2011// #include <p18f1320.h>//#include <stdlib.h>//#include <delays.h>//#include
发表于 2019-11-11
直流有刷伺服控制系统(pic单片机,pid控制)
PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码
PIC单片机 proteus H桥驱动直流电机PWM控制MOSFET搭建的H桥电路驱动直流电机运行仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 1.正转-> 2.停止-> 3.反转-> 4.停止调整到高速时会观察到电机好象在逆向及慢速转动的效果,这是正常的.实际正反转速显示在电机下方(高电平有效状态)全桥正向时P1A有效,P1D调制全桥反向时P1C有效,P1B调制单片机源程序如下://-----------------------------------------------------------------//  名称: 用PIC16F690设计的PWM控制器控制H桥
发表于 2019-11-11
PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码
电池容量测试仪电路与源码(PIC16F1938单片机+AD623实现)
分享一个由PIC16F1938单片机芯片和AD623构成的电池容量测试仪.电路原理图如下:电池容量测试仪的pic单片机源码:#include    "main.h" //------------------------32MHZ---------------------------------------------- __CONFIG(FOSC_INTOSC & CLKOUTEN_OFF & BOREN_ON & PWRTE_ON & CPD_OFF          &CP_ON
发表于 2019-11-11
电池容量测试仪电路与源码(PIC16F1938单片机+AD623实现)
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved