?? 監(jiān)控程序.c
字號(hào):
#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) /*初始化定時(shí)器1和2*/
{
IP=0x00;
TCON=0x00;
TMOD=0x21; /*0in1,1in2*/
TH0=0x3c;
TL0=0xb0;
TIMER0_COUNT=0x00;
IE=0x82; /*開(kāi)定時(shí)器0中斷*/
TR0=1;
TR1=1;
}
void serialinit(void) /*串口初試化,波特率2400 公式TH1=TL1=256-(Fosc/(384*波特率))*/
{
TH1=0xf5; /* 10M OSC */
TL1=0xf5;
SCON=0x50;
PCON=0X00;
}
/**************************************
* 串口接收 *
*入口參數(shù):無(wú) *
*返回值:0:無(wú)數(shù)據(jù), *
**************************************/
UCHAR SerialReceive(void)
{
UCHAR data SerialValue=0;
while(RI==0) ;
SerialValue=SBUF;
RI=0;
return(SerialValue);
}
/**************************************
* 串口發(fā)送 *
*入口參數(shù):發(fā)送的數(shù)據(jù) *
*返回值:無(wú) *
**************************************/
void SerialTransmit(UCHAR Serial_Value)
{
UCHAR data SerialValue;
UINT data i;
SerialValue=Serial_Value;
SBUF= SerialValue;
for (i=0;i<1000;i++ ) /*延遲一會(huì)兒*/
{
}
}
/**************************************
* 字符顯示 *
*入口參數(shù):字符串 *
*返回值:無(wú) *
**************************************/
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);
}
}
/**************************************
* 字符轉(zhuǎn)換成整型 *
*入口參數(shù):接收字符型數(shù)據(jù) *
*返回值: 整型 *
**************************************/
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);
}
/**************************************
* 整型轉(zhuǎn)換成字符16 *
*入口參數(shù):接收整型型數(shù)據(jù) *
*返回值: 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);
}
}
/**************************************
* 整型轉(zhuǎn)換成字符10 *
*入口參數(shù):接收整型型數(shù)據(jù) *
*返回值: none *
**************************************/
UINT itoc10(UCHAR cc)
{
if((cc/10)>=1)
{
SerialTransmit('0'+(cc/10));
SerialTransmit('0'+(cc-((cc/10)*10)));
}
else
SerialTransmit('0'+cc);
}
/**************************************
* 串口接收處理 *
*入口參數(shù):發(fā)送的數(shù)據(jù) *
*返回值:無(wú) *
**************************************/
void SerialProcess()
{
Receive_Value=SerialReceive();
if(Receive_Value)
{
}
}
/**************************************
* 485發(fā)送處理 *
*入口參數(shù):發(fā)送的數(shù)據(jù) *
*返回值:無(wú) *
**************************************/
void RS485Send(UCHAR cc)
{
完成數(shù)據(jù)打包及相關(guān)處理
}
/*************************************
* 定時(shí)器0中斷服務(wù)程序 *
*************************************/
void Timer0(void) interrupt 1 using 2
{
TH0=0x3c;
TL0=0xb0;
TIMER0_COUNT++;
if (TIMER0_COUNT>=8)//修改
{
看門(mén)狗刷新,運(yùn)行燈等
}
TR0=1;
}
/*************************************
* 外部中斷0服務(wù)程序 *
* (有振鈴時(shí)的中斷) *
*************************************/
void int0() interrupt 0 using 2
{
}
/*************************************
* 外部中斷1服務(wù)程序 *
* (雙音多頻信號(hào)有效時(shí)的中斷) *
*************************************/
void int1() interrupt 1 using 2
{
}
/**************************************
* E2PROM 寫(xiě)操做程序 *
*入口參數(shù):地址及值 *
*返回值:無(wú) *
**************************************/
void WriE2PROM( UCHAR add,UCHAR cc)
{
}
/**************************************
* E2PROM 讀操做程序 *
*入口參數(shù): 地址 *
*返回值:結(jié)果 *
**************************************/
UCHAR ReadE2PROM( UCHAR add)
{
}
/**************************************
* 雙音多頻發(fā)送程序 *
*入口參數(shù): 號(hào)碼 *
*返回值:無(wú) *
**************************************/
void SeadDTMF( UCHAR number)
{
}
/**************************************
* 雙音多頻接收程序 *
*入口參數(shù): 無(wú) *
*返回值:號(hào)碼 *
**************************************/
UCHAR ReadDTMF()
{
}
/************************主函數(shù)*******************************/
void main(void)
{
UCHAR data ;
Timer0and1Init();
serialinit();
for(;;)
{
//查詢(xún)下級(jí)各子站信息(相關(guān)485操作);
//接收雙音多頻(上級(jí)命令)
// 解釋命令并執(zhí)行(發(fā)送DTMF)
}
}
/*有關(guān)E2PROM參考程序(需修改)*/
/*有關(guān)Dtmf 參考程序(需修改)*/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -