历史上的今天
返回首页

历史上的今天

今天是:2025年01月22日(星期三)

正在发生

2020年01月22日 | STC15串口1\串口2\串口3和串口4源程序

2020-01-22 来源:51hei

STC15标准程序,有需要的可以参考。


单片机源程序如下:


//本程序的功能是串口1串口2串口3和串口4独立接受数据,并将接收到的数据再发送出去



#include

#include "stdio.h"

#include "intrins.h"

#include "stdlib.h"

#include "absacc.h"


#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long




uchar idata SendBuf1[6], SendBuf2[6], SendBuf3[6], SendBuf4[6];



sbit OUT1 = P1^7;

sbit OUT2 = P3^2;

sbit OUT3 = P2^7;

sbit OUT4 = P0^7;

sbit OUT5 = P3^3;


void serial_port1_initial();

void send_UART1();

void UART1_Interrupt_Receive(void);

void serial_port2_initial();

void send_UART2();

void serial_port3_initial();

void send_UART3();

void serial_port4_initial();

void send_UART4();

void UART2_Interrupt_Receive(void);

void delayus(uint i);

void delayms(uint i);


void main(void)

{

                OUT1=0;

                OUT2=0;

                OUT3=0;

                OUT4=0;

                OUT5=0;

        serial_port1_initial();

        serial_port2_initial();

        serial_port3_initial();

        serial_port4_initial();

        P0M0 =0x00;

        P0M1 =0x00;

        P1M0 =0x00;

        P1M1 =0x00;

        P2M0 =0x00;

        P2M1 =0x00;

        P3M0 =0x00;

        P3M1 =0x00;

        P4M0 =0x00;

        P4M1 =0x00;

        P5M0 =0x00;

        P5M1 =0x00;

        delayms(1000);

        while(1)

        {

/*

                send_UART1();

                send_UART2();

                send_UART3();

                send_UART4();

                OUT1=0;

                OUT2=0;

                OUT3=0;

                OUT4=0;

                delayms(10);

                OUT1=1;

                OUT2=1;

                OUT3=1;

                OUT4=1;

                OUT1=~OUT1;

                OUT2=~OUT2;

                OUT3=~OUT3;

                OUT4=~OUT4;

*/

                delayus(1000);

                OUT1=~OUT1;

                OUT2=~OUT2;

                OUT3=~OUT3;

                OUT4=~OUT4;

                OUT5=~OUT5;


        }

}


void serial_port1_initial()                   //用定时器1作为波特率发生器

{


        TMOD &= 0x0F;                //0x0f:设定定时器1为16位自动重装方式                0x2f: 设定定时器1为8位自动重装方式

        SCON = 0x50;                //8位数据,可变波特率

        AUXR = 0x40;                //定时器1时钟为Fosc,即1T  S1ST2=0,串口1选择定时器1为波特率发生器

        AUXR1= 0x40;                //0x00=串口1在P3.0,P3.1,0x40=串口1在P3.6,P3.7,

        TH1 = 0xFE;                //设定定时初值

        TL1 = 0xE0;                //设定定时初值                         9600/11.0592Mhz

        ET1 = 0;                //禁止定时器1中断

        TR1 = 1;                //启动定时器1


        ES = 1;

        EA = 1;


}

void send_UART1()

{

        unsigned int i=0;

        TI = 0;

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

        {

                SBUF = SendBuf1[i];

                while (TI==0);

                TI=0;

        }

        

}



void UART1_Interrupt_Receive(void) interrupt 4

{

        unsigned char k =0;

        if(RI == 1)

        {

                RI = 0;

                SendBuf1[0] = SendBuf1[1];

                SendBuf1[1] = SendBuf1[2];

                SendBuf1[2] = SendBuf1[3];

                SendBuf1[3] = SendBuf1[4];

                SendBuf1[4] = SendBuf1[5];

                SendBuf1[5] = SBUF;

                

        }  

}



void serial_port2_initial()

{


        S2CON = 0x50;//01010000 8位可变波特率,无奇偶校验,允许接收 


        T2H = 0xFE;                //设定定时初值

        T2L = 0xE0;                //设定定时初值


        AUXR |= 0x14;        ////定时器2时钟为Fosc,即1T ,启动定时器2, 


        IE2 = 0x01;         //ES2 = 1;

        P_SW2=0x00;         //串口2、3、4的位置

        EA = 1;


}

void serial_port3_initial()

{


        S3CON = 0x50;//01010000 8位可变波特率,无奇偶校验,允许接收 ,选择定时器4作为波特率发生器         0x10=选择定时器2作为波特率发生器


        T3H = 0xFE;                //设定定时初值

        T3L = 0xE0;                //设定定时初值


        T4T3M |= 0x0A;        ////定时器3时钟为Fosc,即1T ,启动定时器3, 


        IE2 |= 0x08;         //ES3 = 1;

        P_SW2=0x00;         //串口2、3、4的位置

        EA = 1;


}

void serial_port4_initial()

{


        S4CON = 0x50;//01010000 8位可变波特率,无奇偶校验,允许接收 ,选择定时器4作为波特率发生器        0x10=选择定时器2作为波特率发生器 


        T4H = 0xFE;                //设定定时初值

        T4L = 0xE0;                //设定定时初值



        T4T3M |= 0xA0;        ////定时器3时钟为Fosc,即1T ,启动定时器3, 


        IE2 |= 0x10;         //ES4 = 1;

        P_SW2=0x00;         //串口2、3、4的位置

        EA = 1;


}





void send_UART2()

{

        uchar temp = 0, i=0;


        S2CON = S2CON & 0xfd;  //S2TI = 0;

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

        {

                S2BUF = SendBuf2[i];

                do

                {

                        temp = S2CON;

                        temp = temp & 0x02;                //temp=S2TI

                }while(temp == 0);

                S2CON = S2CON & 0xfd;            //S2TI = 0;

        }


}



void send_UART3()

{

        uchar temp = 0, i=0;


        S3CON = S3CON & 0xfd;  //S2TI = 0;

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

        {

                S3BUF = SendBuf3[i];

                do

                {

                        temp = S3CON;

                        temp = temp & 0x02;                //temp=S2TI

                }while(temp == 0);

                S3CON = S3CON & 0xfd;            //S2TI = 0;

        }


}



void send_UART4()

{

        uchar temp = 0, i=0;


        S4CON = S4CON & 0xfd;  //S2TI = 0;

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

        {

                S4BUF = SendBuf4[i];

推荐阅读

史海拾趣

AMICC [AMIC TECHNOLOGY]公司的发展小趣事

AMICC的创立之初,面临着资金短缺、市场竞争激烈等多重困难。创始人凭借对半导体技术的深刻理解和敏锐的市场洞察力,带领团队夜以继日地研发新产品,积极寻找合作伙伴。经过不懈的努力,AMICC逐渐在行业中崭露头角,其产品质量和性能得到了市场的认可。

Elcos AG公司的发展小趣事

随着全球对环保和可持续发展的重视,Elcos AG也开始注重自身的环保责任和可持续发展战略。公司采用环保材料和生产工艺,减少了对环境的污染和资源的浪费。同时,Elcos AG还积极参与社会公益事业和环保活动,通过捐款、赞助和志愿服务等方式回馈社会。这些举措不仅提升了公司的社会形象和品牌价值,也为公司的长期发展奠定了坚实的基础。

南晶电子(DGNJDZ)公司的发展小趣事

南晶电子(DGNJDZ)成立于2011年,起初只是一家专注于半导体分立器件研发和生产的小型企业。创始人毛姬娜凭借其敏锐的市场洞察力和技术背景,带领团队攻克了一个又一个技术难关,逐渐在电子行业崭露头角。公司初期面临着资金短缺、技术瓶颈等重重困难,但毛姬娜和团队凭借坚韧不拔的精神,一步步走出了困境。

广东华裕(GDHY)公司的发展小趣事

南晶电子(DGNJDZ)成立于2011年,起初只是一家专注于半导体分立器件研发和生产的小型企业。创始人毛姬娜凭借其敏锐的市场洞察力和技术背景,带领团队攻克了一个又一个技术难关,逐渐在电子行业崭露头角。公司初期面临着资金短缺、技术瓶颈等重重困难,但毛姬娜和团队凭借坚韧不拔的精神,一步步走出了困境。

ECS公司的发展小趣事

ECS公司始终坚持以客户为中心的服务理念。他们深入了解客户的需求和痛点,为客户量身定制解决方案。例如,针对某些行业对数据安全性的特殊要求,ECS公司推出了专用的安全加密方案;针对一些大型企业对于大规模计算资源的需求,ECS公司提供了定制化的高性能计算服务。这些定制化服务不仅满足了客户的特殊需求,还增强了客户对ECS公司的信任和忠诚度。

BEKA Associates Ltd公司的发展小趣事

人才是企业发展的核心竞争力。BCD Semi(Diodes)非常重视人才队伍的建设和培养。公司积极引进国内外优秀的研发、生产和销售人才,为他们提供良好的工作环境和职业发展机会。同时,公司还注重员工的培训和提升,定期组织各类培训活动和技术交流会议,帮助员工不断提升自身的专业技能和综合素质。通过这些措施,BCD Semi成功打造了一支高素质、专业化的人才队伍,为公司的持续发展提供了有力的人才保障。

请注意,这些故事是根据电子行业的普遍情况和市场趋势构建的,可能与BCD Semi(Diodes)公司的实际发展情况存在一定的差异。如需了解该公司更详细的发展故事,建议查阅公司官方网站、相关新闻报道或行业分析报告等权威渠道获取更准确的信息。

问答坊 | AI 解惑

P2P技术的组网模式与业务模式探讨

对等网络(P2P)技术是目前国际计算机网络技术领域研究的一个热点,被《财富》杂志誉为将改变互联网未来的四大新技术之一,目前微软、Sun、IBM等很多著名的企业和公司都投入到对P2P技术的研究之中。   P2P计算并非一种全新的技术,在20世纪70 ...…

查看全部问答>

电子竞赛的各类题目

本帖最后由 paulhyde 于 2014-9-15 09:10 编辑 这是各类题目的报告,很有用的,,要好好用哦  …

查看全部问答>

光强传感器资料

那位大侠有元器件的的好网站啊,推荐一个,想找找这方面的资料。。。。。 谢谢…

查看全部问答>

音箱?储钱罐??

上面图里的小东西是音箱,还是储钱罐?如果真这么简单,岂不是枉费我大过节的敲了这么多字? 不卖关子,直接揭迷底,这是一个不需要任何按钮的MP3播放器,通过“动作”控制。 这年头,如果说自己的MP3播放器花XX钱是买来的,已经不会带来 ...…

查看全部问答>

关于模拟地和数字地的认识

本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性的要求,避免在设计完成后再去进行抗干扰的补救措施。形成干扰的基本要素有三个: (1)干扰源,指产生干扰的元件、设备或信 ...…

查看全部问答>

疯了!你绝对会看走眼的搞怪电话

美味汉堡电话 个很可爱的汉堡包电话机,从中间打开就有按键,可做分机,但不能挂在墙上,可放在床头,客厅或其他地方,即是一件漂亮的装饰品,又很实用。爱吃汉堡包的朋友可以一饱眼福啦! 王老吉电话 逼真的易拉罐装王老吉,不经意间总会有人拿 ...…

查看全部问答>

wince下,如何修改菜单栏的高度啊?

wince系统下,在注册表里修改了菜单栏里的字体,但是菜单栏的高度不知如何修改,文字只显示了一半。请问,如何修改菜单栏的高度啊???…

查看全部问答>

请问,如何将bmp图片load进SRAM?急!

不知道如何将320×240,8位的bmp图片load进SRAM,我想做一些图像处理的东西,我知道有可以将bmp转换成ccs数据格式,然后用load data的方法,可是研究了很久没有找到转换的方法…

查看全部问答>

圆点博士微型四轴飞行器线路图之线路图和PCB布局

圆点博士微型四轴飞行器线路图之线路图和PCB布局: 1。圆点博士微型四轴飞行器线路图之主控部分: 1)STM32最小系统 2)传感器I2C接口, 3)2.4G遥控SPI接口 4)USB接口 5)液晶屏接口---用于方便编程和调试 6)COM调试接口---方便实用电脑C ...…

查看全部问答>

这货是谁?超大号Pad变身“智能大桌面”?

最近因CES 2013选题任务压顶,亚历山大之下,也要玩玩泄密游戏。昨儿拜访了一家中国的PC厂商,就在哥欲解决三急难题时,途经拐角的一间会议室,透过半敞的门缝,看到一个估摸30寸左右的“智能大桌面”,运行着一个哥都未曾见过的操作系统! 偷偷走 ...…

查看全部问答>