历史上的今天

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

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

发布者:脑电狂潮 来源: 51hei关键字:STC12C60S2  单片机  双485通讯  通讯控制 手机看文章 扫描二维码
随时随地手机看文章

电路原理图如下:
 

程序说明


接线: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;

}

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

                              结束

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



关键字:STC12C60S2  单片机  双485通讯  通讯控制 引用地址:STC12C60S2单片机双485通讯开发双485通讯控制程序

上一篇:51单片机数字频率计仿真(可按键切换量程)
下一篇:单片机6位数电子密码锁源码+PCB+仿真原理图设计(可改密码

推荐阅读

2018年11月13日,致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下友尚推出安森美半导体(ON Semiconductor)NCP1399的电流型LLC-150W电源的解决方案。 大联大友尚代理的ON Semiconductor推出的LLC-NCP1399是业界首款采用电流控制模式的LLC AC-DC控制IC。输入85-260VAC输出DC19.5V7A,主要驱动器件应用600V门极驱动器简化布局并减...
上周完成了一个小项目,项目涉及到stm32的低功耗的待机模式,特在此记录下32的待机模式。芯片:STM32f030F4库:HAL库唤醒方式:用RTC和PA0的上升沿唤醒先来看下低功耗模式下的情况(只看停止跟待机):停止模式停止模式在保留SRAM和寄存器内容的同时实现了非常低的功耗。1.8V域中的所有时钟停止,PLL、HSI RC和禁用HSE晶体振荡器。电压调节器也可以安装在...
北京时间11月11日,日本汽车公司本田宣布,在2021年3月31日前上市的旗舰车型“LEGEND”,将会搭载刚获得日本国土交通省认定的L3级自动驾驶功能,也就是说可以在高速公路或拥堵状态下,司机可以“脱眼脱手”。为了让“LEGEND”车型实现这样的功能,本田为其配置了超豪华的传感器配置,包括5个毫米波雷达,以及惊人的5个激光雷达!这是迄今为止,量产车上计...
晶丰明源公告,公司拟以现金人民币2.04亿元收购上海芯飞半导体技术有限公司(“上海芯飞”)少数股东持有的上海芯飞49%股权。收购完成后,上海芯飞将成为公司全资子公司。公告显示,上海芯飞49%的股权的交易对价系交易各方基于沃克森(北京)国际资产评估有限公司出具的评估报告协商确定。整体估值相对上海芯飞2021年6月30日账面净资产溢价率640.33%,溢价较高...

史海拾趣

问答坊 | AI 解惑

手机电池,落后的960毫安

锂电之后,再无革命性的电池技术。这很可悲。 手机应用繁多,缺乏更好电力支撑。这很可悲。       不论是手机上网,还是手机游戏、手机影音,都需要在手机上进行较长时间的操作,需要手机的电池能够支持更长的时间。而硬件配 ...…

查看全部问答∨

利用超小型ADC设计低功耗医疗设备方案

目前医疗设备的发展正在彻底变革家庭医疗保健市场,人们无需离开家门就能诊断出各种健康状况。技术的发展使得便携式自助护理保健系统成为现实,这些系统可以帮助人们监视诸如血压、血糖和体温等重要指标。         家庭医疗 ...…

查看全部问答∨

关于IEC61850规约

我是从事电力行业产品工作的,电力系统现在要搞数字化变电站,要求产品具备IEC61850规约要求的功能,不知有哪位大侠能给提供一些相关的资料(IEC61850的规约我有)。谢谢!…

查看全部问答∨

CCeSocket 该怎么使用?

我原来用VC做了一个socket通讯的服务端和客户端测试程序 在wince下,我用那个测试程序的服务端做为测试服务程序(在本本上,当然没有移植到wince下) 然后照网上的例子,改了一个最简单的wince客户端 CCeSocket m_socket; UpdateData(TRUE); & ...…

查看全部问答∨

AVR mega16资料如何获得

AVR mega16资料如何获得? 怎么办?…

查看全部问答∨

点阵式液晶开发问题,请大侠帮忙啊

我现在要开发一个小产品,需要用到点阵液晶显示块。 由于产品比较小,而且成本要低,所以只能采用定制液晶玻璃的办法。液晶玻璃的基本参数就是80*32点阵。 主要功能就是:1、开机后显示固定汉字;2按键被按下后,显示八个数字,松开后接着显示开 ...…

查看全部问答∨

求助:图像采集及处理用那个型号DSP好?

打算用DSP做图像采集处理系统,请问用TI的那个型号的DSP较好啊,我想用TMS320C6000系列,但不知道那个具体型号好些那,麻烦各位帮助解答一下,谢谢!…

查看全部问答∨

论坛兑换板子调试心得+程序+protues仿真(串口)

串口查询方式:单片机通信最常用的方式,也是与PC机通信最多的方式。 心得:主要熟悉串口寄存器的设置,本人遇到一个问题,通信方式的设置,例如采用11.0592M晶振,UBRR=71,正常模式下,波特率是9600;倍速模式是19200.提醒大家看手册的时候注意U ...…

查看全部问答∨

本人发现ST研讨会所发DVD上的M8库文件有问题

在DVD上的M8固件库与IAR编译器一起会发现错误。但其怪的是他的版本号与我所用的(在IAR上正常编译)的一样! 请大家分析! /**   ******************************************************************************  &nbs ...…

查看全部问答∨

LM258组成的电压比较器

LM258组成的电压比较器,最高能测多高频率的信号, 组成的电压比较器反应时间如何计算?最高能测的频率如何计算? 小弟在网上找了好多资料都搞不懂,望帮帮忙。…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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