📄 监控程序.c
字号:
#include <reg52.h>
#include <string.h>
#include <ctype.h>
#define UCHAR unsigned char
#define UINT unsigned int
#define UCHAR_XDATA_PTR unsigned char xdata *data
#define XBYTE ((char*) 0x20000L)
UCHAR data TIMER0_COUNT;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
UCHAR Xgetchar(void);
void Timer0and1Init(void) /*初始化定时器1和2*/
{
IP=0x00;
TCON=0x00;
TMOD=0x21; /*0in1,1in2*/
TH0=0x3c;
TL0=0xb0;
TIMER0_COUNT=0x00;
IE=0x82; /*开定时器0中断*/
TR0=1;
TR1=1;
}
void serialinit(void) /*串口初试化,波特率2400 公式TH1=TL1=256-(Fosc/(384*波特率))*/
{
TH1=0xf5; /* 10M OSC */
TL1=0xf5;
SCON=0x50;
PCON=0X00;
}
/**************************************
* 串口接收 *
*入口参数:无 *
*返回值:0:无数据, *
**************************************/
UCHAR SerialReceive(void)
{
UCHAR data SerialValue=0;
while(RI==0) ;
SerialValue=SBUF;
RI=0;
return(SerialValue);
}
/**************************************
* 串口发送 *
*入口参数:发送的数据 *
*返回值:无 *
**************************************/
void SerialTransmit(UCHAR Serial_Value)
{
UCHAR data SerialValue;
UINT data i;
SerialValue=Serial_Value;
SBUF= SerialValue;
for (i=0;i<1000;i++ ) /*延迟一会儿*/
{
}
}
/**************************************
* 字符显示 *
*入口参数:字符串 *
*返回值:无 *
**************************************/
void Display(UCHAR *str_pointer)
{
UCHAR data string_length,temp;
UINT data i;
string_length=strlen(str_pointer);
for (i=0;i<string_length ;i++ )
{
temp=*str_pointer;
str_pointer++;
SerialTransmit(temp);
}
}
/**************************************
* 字符转换成整型 *
*入口参数:接收字符型数据 *
*返回值: 整型 *
**************************************/
UINT ctoi(UCHAR cc)
{
UINT data yy=20;
if (isxdigit(cc)==1)
{
if (isdigit(cc))
{yy=cc-'0';}
else
{
if (isupper(cc))
{yy=cc-'A'+10;}
else {yy=cc-'a'+10;}
}
}
return(yy);
}
/**************************************
* 整型转换成字符16 *
*入口参数:接收整型型数据 *
*返回值: none *
**************************************/
UINT itoc(UCHAR cc)
{
if (((cc & 0xf0)/16)<=9)
{
SerialTransmit('0'+((cc & 0xf0)/16));
}else
if (((cc & 0xf0)/16)<=0x0f)
{
SerialTransmit('A'+((cc & 0xf0)/16)-10);
}
if ((cc & 0x0f)<=9)
{
SerialTransmit('0'+(cc & 0x0f));
}else
if ((cc & 0x0f)<=0x0f)
{
SerialTransmit('A'+(cc & 0x0f)-10);
}
}
/**************************************
* 整型转换成字符10 *
*入口参数:接收整型型数据 *
*返回值: none *
**************************************/
UINT itoc10(UCHAR cc)
{
if((cc/10)>=1)
{
SerialTransmit('0'+(cc/10));
SerialTransmit('0'+(cc-((cc/10)*10)));
}
else
SerialTransmit('0'+cc);
}
/**************************************
* 串口接收处理 *
*入口参数:发送的数据 *
*返回值:无 *
**************************************/
void SerialProcess()
{
Receive_Value=SerialReceive();
if(Receive_Value)
{
}
}
/**************************************
* 485发送处理 *
*入口参数:发送的数据 *
*返回值:无 *
**************************************/
void RS485Send(UCHAR cc)
{
完成数据打包及相关处理
}
/*************************************
* 定时器0中断服务程序 *
*************************************/
void Timer0(void) interrupt 1 using 2
{
TH0=0x3c;
TL0=0xb0;
TIMER0_COUNT++;
if (TIMER0_COUNT>=8)//修改
{
看门狗刷新,运行灯等
}
TR0=1;
}
/*************************************
* 外部中断0服务程序 *
* (有振铃时的中断) *
*************************************/
void int0() interrupt 0 using 2
{
}
/*************************************
* 外部中断1服务程序 *
* (双音多频信号有效时的中断) *
*************************************/
void int1() interrupt 1 using 2
{
}
/**************************************
* E2PROM 写操做程序 *
*入口参数:地址及值 *
*返回值:无 *
**************************************/
void WriE2PROM( UCHAR add,UCHAR cc)
{
}
/**************************************
* E2PROM 读操做程序 *
*入口参数: 地址 *
*返回值:结果 *
**************************************/
UCHAR ReadE2PROM( UCHAR add)
{
}
/**************************************
* 双音多频发送程序 *
*入口参数: 号码 *
*返回值:无 *
**************************************/
void SeadDTMF( UCHAR number)
{
}
/**************************************
* 双音多频接收程序 *
*入口参数: 无 *
*返回值:号码 *
**************************************/
UCHAR ReadDTMF()
{
}
/************************主函数*******************************/
void main(void)
{
UCHAR data ;
Timer0and1Init();
serialinit();
for(;;)
{
//查询下级各子站信息(相关485操作);
//接收双音多频(上级命令)
// 解释命令并执行(发送DTMF)
}
}
/*有关E2PROM参考程序(需修改)*/
/*有关Dtmf 参考程序(需修改)*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -