历史上的今天
返回首页

历史上的今天

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

正在发生

2019年11月13日 | STC12C60S2单片机双485通讯开发双485通讯控制程序

2019-11-13 来源:51hei

电路原理图如下:
 

程序说明


接线:MAX485-1 D+ 链接 MAX485-2 D+ ;MAX485-1 D- 链接 MAX485-2 D-

功能:串口一 自动发送一个tab数据,串口二接收,接收后数据显示在P0口的led灯上
          串口二 自动发送一个tab数据,串口一接收,接收后数据显示在p0口的led灯上
                  按key1,P0口显示0xAA
                  按key2,P0口显示0x55
                  按key3,P0口显示0xf0
                  按key4,P0口显示0x0f
*********************************************************************/

#include "STC12C5A60S2.h"  //库文件

#define uchar unsigned char//宏定义无符号字符型

#define uint unsigned int  //宏定义无符号整型

/********************************************************************

                            初始定义

*********************************************************************/

uchar dat1=0,dat2=0;

uchar tab[8]={0xfe,0xfd,0xfB,0xf7,0xef,0xdf,0xBf,0x7f};

sbit key1=P2^0;

sbit key2=P2^1;

sbit key3=P2^2;

sbit key4=P2^3;

/********************************************************************

                            串口初始化

*********************************************************************/

void init ()

{

        TMOD = 0x20;                           //定时器1产生波特率

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

        TH1= TL1 = 0xfd;                 //波特率 9600

        S2CON= 0x50;                     //方式1,八位数据,可变波特率

        BRT= 0XFD;                                  //设置波特率9600

        TR1= 1;                                          //启动定时器产生波特率        

        AUXR= 0x10;                                 //启动波特率发生器

        IP= 0x00;                                 //优先级默认

        EA = 1;                                  //开总中断

        ES= 1;                                         //开串口1中断

        IE2=0x01;                                 //开串口2中断

}

/********************************************************************

                            串口一 发送一个字符

*********************************************************************/

void  uart1_txd(uchar x)

{

        SBUF = x;

}

/********************************************************************

                            串口二   发送一个字符

*********************************************************************/

void  uart2_txd(uchar x)

{

        S2BUF = x;

}

/********************************************************************

                             延时函数

*********************************************************************/

void delay ( uint t )

{

        uint i,j;

        for( i=0; i        for( j=0; j<250; j++);

}

/********************************************************************

                              主函数

*********************************************************************/

void main()

{

    uchar i;

        init();


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

           {

             uart1_txd(tab[i]);//串口一发送数据

             delay(500);          

                 P0=dat2;                  //串口二接收数据在led灯显示

                 delay(500);


                 uart2_txd(tab[7-i]); //串口二发送数据

             delay(500);          

                 P0=dat1;                 //串口一接收数据在led灯显示

                 delay(500);

           }

        while(1)

        {

          if(key1==0){delay(20);while(!key1){P0=0xAA;} }

          if(key2==0){delay(20);while(!key2){P0=0x55;} }

          if(key3==0){delay(20);while(!key3){P0=0xf0;} }

          if(key4==0){delay(20);while(!key4){P0=0x0f;} }


        }

}

/********************************************************************

                            串口二    发送接收中断函数

*********************************************************************/

void uart2_isr()  interrupt 8

{

        if( S2CON & 0x01 )

        {

                S2CON &= ~0x01;

                dat2= S2BUF;

        }

        if( S2CON & 0x02 )

        {

                S2CON &= ~0x02;

        }

}

/********************************************************************

                            串口一 发送接收中断函数

*********************************************************************/

void uart_isr()  interrupt 4 

{

        if( RI )

           RI = 0;

            dat1 = SBUF;

        if( TI ) 

            TI = 0;

}

/********************************************************************

                              结束

*********************************************************************/



推荐阅读

史海拾趣

璟德(ACX)公司的发展小趣事

璟德电子工业股份有限公司(ACX)于1998年在中国台北板桥市正式成立,初始资本为2300万美元。公司从创立之初就专注于利用低温共烧陶瓷(LTCC)技术,研发与制造无线通信组件与模块。这一技术选择为公司日后的成功奠定了坚实的基础。在创立初期,璟德(ACX)面临着激烈的市场竞争和技术挑战,但公司凭借对技术的深入理解和不懈的创新精神,逐步在行业中崭露头角。

Chiplus Semiconductor Corp公司的发展小趣事

随着全球半导体市场的不断扩大,Chiplus也加快了市场拓展的步伐。公司不仅在日本、欧盟、美国和泛太平洋亚洲地区建立了稳定的客户群体,还积极开拓新兴市场,提升品牌知名度和影响力。同时,Chiplus还加强了与全球知名企业的合作,通过技术合作、产业链协同等方式,共同推动半导体行业的发展。

Fractus公司的发展小趣事

Fractus公司的创新之路可以追溯到上世纪八十年代后期,在加泰罗尼亚理工大学(UPC)的研究实验室中,关于天线技术的早期研究拉开了序幕。这一时期的学术研究为后来Fractus的技术创新奠定了坚实的基础。随着研究的深入,Fractus逐渐掌握了几何结构天线设计的核心技术,并开始探索其在无线通信领域的应用潜力。

国芯佳品公司的发展小趣事

1999年,Carles Puente博士和Ruben Bonet联合创立了Fractus公司,致力于将几何结构天线技术商业化。公司成立之初便取得了重大突破,获得了全球首个分形天线和多重分形天线专利。这些专利不仅展示了Fractus在天线设计领域的领先地位,也为公司后续的发展奠定了坚实的技术基础。

鑫雁公司的发展小趣事

在短短几年内,聚洵半导体实现了业绩的快速增长。据公司董事长兼总经理张智才介绍,在2020年这一特殊年份,聚洵依然实现了业绩增长500%的佳绩,累计出货量超过2亿颗,成交客户数量达500多家。这一成绩不仅彰显了聚洵在产品研发和市场销售方面的实力,也赢得了业界的广泛认可。公司的典型终端客户包括美的、格兰仕、小米等知名品牌,进一步证明了聚洵产品在市场上的竞争力和影响力。

Crane Co.公司的发展小趣事

Crane Co.的创立可以追溯到1855年,当时R. T. 克瑞黄铜与铸钟厂在芝加哥正式成立。公司起初主要生产阀门、配件和特种铸件,这些产品为当时的工业发展提供了关键支持。随着美国工业的蓬勃发展,Crane Co.凭借其精湛的铸造技术和优质的产品质量,逐渐在阀门制造领域崭露头角。

问答坊 | AI 解惑

多线程技术在数据实时采集分析中的应用(2)

数据分析线程在读信号量和消费者指针的控制下成功读取一包数据后,根据通道标示号提取此包中每个通道的数据,写入对应的内存映射文件中,再调用数据处理函数对每个通道数据做误码分析。误码分析的结果可由主界面线程调用显示。数据分解流程如图4所 ...…

查看全部问答>

稳压电源使用手册

稳压电源使用手册…

查看全部问答>

LCD屏幕漂移

我的LCD刷新在30MHZ时显示正常,只是有点闪,提高到60MHZ时屏幕漂移,并且坐标不对。…

查看全部问答>

求无线游戏手柄的内部构造

哪位大侠可以告诉我无线游戏手柄的内部构造,即由那些部分、元器件组成的。谢谢了!…

查看全部问答>

evc 提示框的实现

大家好,我想请问各位大虾,如何在evc下实现状态提示呢,比如说我正在上传文件会有一个窗口提示正在上传,等传输完毕了提示上传成功,然后就关闭了!!请各位大虾多帮忙,谢谢各位了!!!…

查看全部问答>

想转行做数据通信了。

兄弟在嵌入式领域混了快2年了,整天做驱动程序,什么 gpio啊 boot room nand nor 电路图啊寄存器啊 ,跟这些东西打交道,有点烦了,现在想改行做做通信,不知道都需要啥基础知识呢?我的TCP/ip协议学的蛮精的也。…

查看全部问答>

在应用程序里如何查询某个USB连在哪一个USB controller上

在具有多个USB controller和多个USB设备的情况下, 如何查询这些USB设备连接在哪个USB controller上。 设备管理器中,如果选择“依连接排序设备”,就可以看到所 有设备的Device Tree,VC里有什么API或者什么方法可以获得 类似的信息吗? 请高 ...…

查看全部问答>

LED日光灯电源设计心得

非隔离型降压式电源设计方法概论 非隔离降压型电源是现在普遍使用的电源结构,几乎占了日光灯电源百分之九十以上。很多人都以为非隔离电源只有降压型一种,每每一说到不隔离,就想到降压型,就想到说对灯不安全(指电源损坏)。其实降压型不只是一 ...…

查看全部问答>

freescale的模糊C语言编程 谁有?

RT,求一份用freescale C语言编写的模糊控制程序。有的发一份到 362645744@qq.com   谢谢了。作为交换,可以把我这里用汇编写的模糊控制程序传给你。…

查看全部问答>

各位大侠看看我的程序哪儿有问题啊

我用hot51开发板做实现测量电压和输出相同电压的功能,但是没有响应,麻烦大家指出我程序的问题,谢谢了 /* PCF8591四路电压 LCD1602显示 参考电压接至5V电源 */ /* 最小输出电压:0.00V 最大输出电压:5.00V 分辨率:0.02V */ /****************** ...…

查看全部问答>