历史上的今天
今天是: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 } /******************************************************************** 主函数 *********************************************************************/ 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; } /******************************************************************** 结束 *********************************************************************/
史海拾趣
|
数据分析线程在读信号量和消费者指针的控制下成功读取一包数据后,根据通道标示号提取此包中每个通道的数据,写入对应的内存映射文件中,再调用数据处理函数对每个通道数据做误码分析。误码分析的结果可由主界面线程调用显示。数据分解流程如图4所 ...… 查看全部问答> |
|
大家好,我想请问各位大虾,如何在evc下实现状态提示呢,比如说我正在上传文件会有一个窗口提示正在上传,等传输完毕了提示上传成功,然后就关闭了!!请各位大虾多帮忙,谢谢各位了!!!… 查看全部问答> |
|
兄弟在嵌入式领域混了快2年了,整天做驱动程序,什么 gpio啊 boot room nand nor 电路图啊寄存器啊 ,跟这些东西打交道,有点烦了,现在想改行做做通信,不知道都需要啥基础知识呢?我的TCP/ip协议学的蛮精的也。… 查看全部问答> |
|
在应用程序里如何查询某个USB连在哪一个USB controller上 在具有多个USB controller和多个USB设备的情况下, 如何查询这些USB设备连接在哪个USB controller上。 设备管理器中,如果选择“依连接排序设备”,就可以看到所 有设备的Device Tree,VC里有什么API或者什么方法可以获得 类似的信息吗? 请高 ...… 查看全部问答> |
|
非隔离型降压式电源设计方法概论 非隔离降压型电源是现在普遍使用的电源结构,几乎占了日光灯电源百分之九十以上。很多人都以为非隔离电源只有降压型一种,每每一说到不隔离,就想到降压型,就想到说对灯不安全(指电源损坏)。其实降压型不只是一 ...… 查看全部问答> |
|
RT,求一份用freescale C语言编写的模糊控制程序。有的发一份到 362645744@qq.com 谢谢了。作为交换,可以把我这里用汇编写的模糊控制程序传给你。… 查看全部问答> |
|
我用hot51开发板做实现测量电压和输出相同电压的功能,但是没有响应,麻烦大家指出我程序的问题,谢谢了 /* PCF8591四路电压 LCD1602显示 参考电压接至5V电源 */ /* 最小输出电压:0.00V 最大输出电压:5.00V 分辨率:0.02V */ /****************** ...… 查看全部问答> |




