📄 rs485.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: PCF8563.C
**创 建 人: 叶皓贲
**最后修改日期: 2003-3-4
**描 述: DP-1581的8563T及7289a键盘LED演示程序
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 叶皓贲
** 版 本: 1.0
** 日 期: 2003-3-4
** 描 述: DP-1581演示程序
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "REG52.h"
#include <intrins.h>
#include <absacc.h>
#include "VIIC_C51.h"
#include "ZLG7290.h"
sbit KEY_INT=P3^2;
sbit RS485_RE=P1^5;
bit rec_data;
unsigned char rec_temp=1;
/* 全局变量 */
unsigned char disp_buf[8]={0,0,0,0,0,0,0,0};
/*********************************************************************************************************
** 函数名称: display
** 功能描述: 7298A led显示
** 输 入: *sd : 显示缓冲区的头地址
**
** 输 出: 0 : OK;
** 1 : FAIL;
** 全局变量: 无
** 调用模块: ZLG7289_SendBuf
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
unsigned char display_send(unsigned char sd)
{
disp_buf[0] = sd; // 装载" dp-932"
disp_buf[1] = 31;
disp_buf[2] = 0x1E;
disp_buf[3] = 0x0e;
disp_buf[4] = 0x05;
disp_buf[5] = 31;
disp_buf[6] = 31;
disp_buf[7] = 31;
ZLG7290_SendBuf(disp_buf,8);
return 0;
}
unsigned char display_rec(unsigned char sd)
{
disp_buf[0] = sd; // 装载" dp-932"
disp_buf[1] = 31;
disp_buf[2] = 0x0c;
disp_buf[3] = 0x0e;
disp_buf[4] = 0x18;
disp_buf[5] = 31;
disp_buf[6] = 31;
disp_buf[7] = 31;
ZLG7290_SendBuf(disp_buf,8);
return 0;
}
/*********************************************************************************************************
** 函数名称: DelayNS
** 功能描述: 长软件延时
** 输 入: no : 延时参数,值越大时延时越久
**
** 输 出: 0 : OK;
** 1 : FAIL;
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
unsigned char DelayNS(unsigned char no)
{
unsigned char i,j; //延时参数
for(; no>0; no--)
{
for(i=0; i<100; i++)
for(j=0; j<100; j++);
}
return 0;
}
/*********************************************************************************************************
** 函数名称: delay
** 功能描述: 短软件延时
** 输 入: j : 延时参数,值越大时延时越久
**
** 输 出: 0 : OK;
** 1 : FAIL;
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
unsigned char delay(unsigned char j)
{
unsigned char k,l;
for(l=0;l<=j;l++)
for(k=0;k<=250;k++);
return 0;
}
void main()
{
unsigned char key;
rec_data=0;
//====设置波特率===================
delay(100);
TMOD = 0X20;
SCON=0X50;
TH1=0XFA;
TL1=0XFA;
PCON=0X80;
TR1=1;
EA=1;
ES=1;
RS485_RE=0;
while(1)
{
if(KEY_INT==0)
{
key=ZLG7290_GetKey();
delay(20);
display_send(key);
RS485_RE=1;
SBUF=key;
delay(30);
}
if(rec_data)
{
rec_data=0;
display_rec(rec_temp);
delay(20);
}
}
}
void Serial_ISR() interrupt 4
{
if(TI)
{
TI=0;
RS485_RE=0;
}
else
{
RI=0;
rec_data=1;
rec_temp=SBUF;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -