📄 main.c
字号:
#include ".\pubDcl.dcl"
#include ".\reg52.h"
#include ".\extio.h"
#include ".\valuedef.h"
#include ".\display.c"
#include ".\otimer.c"
#include ".\ht9200.c"
//#include ".\okey.c"
#include ".\serial.c"
/*
void senddata_init()
{
uchar i ;
send_number[0] = 8 ;
send_number[1] = 0 ;
send_number[2] = 5 ;
for(i=3;i<Maxnumber;i++)
{
send_number[i] = 0xff ; //初始化拨号的号码
}
}
void mem_move(uchar *out,uchar *in,uchar Len)
{
uchar i ;
for(i=0;i<Len;i++)
*(out +i) = *(in +i) ;
}
void sendnumber() //拨号
{
uchar i ;
for(i=0;i<Maxnumber;i++)
{
if(send_number[i] != 0xff)
{
disp_buf[0] = send_number[i] + 0x80;
delay(100) ;
send_ht9200(send_number[i]) ;
}
else return ;
}
}
void send_dtmf(uchar in)
{
uchar i ;
for(i=0;i<10;i++) //send 0-9
{
disp_buf[0] = i + 0x80;
delay(100) ;
send_ht9200(i) ;
}
disp_buf[0] = in + 0x80;
delay(100) ;
send_ht9200(in) ; //send in
}
*/
void SysInit()
{
P0=0xff;
P1=0x0f;
P2=0xef;
P3=0xfb;
keylen = 0 ;
channel = 1 ;
set_flag = 0 ;
play_flag = 0 ;
ring_flag = 0 ;
zaiji_flag = 0 ;
P2_BUF = 0xff ;
send_time = 0xff ;
mem_set(send_flag,FALSE,4) ;
mem_set(key_buf,0xff,Maxnumber) ;
checkRING_Init() ;
checkDV_Init() ;
checkDXC_Init() ;
// senddata_init() ;
}
void Sys_Start()
{
SysInit() ;
Sys_TimerInit () ;
// OKey_RP_Init() ;
disp_Init();
Serial_Init() ;
delay(800) ;
while(check_DXC() == TRUE)
{
Updata_1Led(17,20,0,20) ; //disp PHDX
ALARM = 0 ;
delay(100) ;
ALARM = 1 ;
delay(250) ;
ALARM = 0 ;
delay(100) ;
ALARM = 1 ;
}
}
main()
{
uchar temp_ret;
uchar temp_data;
Sys_Start();
Serial_SendCommand("ok",2) ;
while(1)
{
/* if((send_time>=0)&&(send_time<4)&&(send_flag[send_time] == FALSE))
{
SW = 1 ;
zaiji_flag = 1 ;
Updata_1Led(send_time+1,25,25,25) ; //disp channel
P3 = 0xdc | (send_time&0x03) ; //选择通道 0-3
sendnumber() ; //拨号
send_flag[send_time] = TRUE ;
temp_ret = Sys_TimerReqire(OTimerID0,200,0) ; //超时处理
}*/
temp_ret = check_RING() ; //ring check
if(temp_ret == TRUE)
{
disp_buf[0] = 21 + 0x80 ;
disp_buf[1] = 0 + 0x80 ;
disp_buf[2] = 18 + 0x80 ;
disp_buf[3] = 2 + 0x80 ;
Serial_SendCommand("ring",4) ;
/* ALARM = 0 ;
delay(400) ;
ALARM = 1 ;
delay(500) ;
ALARM = 0 ;
delay(400) ;
ALARM = 1 ;
SW = 1 ;
delay(100) ;
zaiji_flag = 1 ;
send_ht9200(0x0a) ; //send A
temp_ret = Sys_TimerReqire(OTimerID0,200,0) ; //超时处理*/
ring_flag++ ;
delay(800) ;
}
temp_ret = check_DV() ; //check dtmf dv
if(temp_ret == TRUE)
{
temp_data = DTMF_read() ; //in data
if(temp_data != 0xff )
{
// disp_buf[1] = 0 ;
// disp_buf[2] = 0 ;
disp_buf[0] = temp_data + 0x80; //display
Serial_SendCommand(&temp_data,1) ;
// Sys_TimerRelease(OTimerID0) ; //release timer
/* if(temp_data == 0x0a)
{
delay(800) ;
ALARM = 0 ; //SEND MUSIC
delay(1000) ;
ALARM = 1 ;
send_dtmf(0x0b) ; //send 0-9,b
temp_ret = Sys_TimerReqire(OTimerID0,200,0) ; //超时处理
}
else if(temp_data == 0x0b)
{
delay(300) ;
send_dtmf(0x0c) ; //send c end now start check next channel
delay(100) ;
SW = 0 ;
mem_set(disp_buf,0,4) ;
delay(500) ;
}
else if(temp_data == 0x0c)
{
send_time ++ ;
if(send_time > 3)
{
SW = 0 ;
delay(400) ;
send_time = 0xff ;
mem_set(send_flag,FALSE,4) ;
Updata_1Led(12,16,21,0) ; //disp CEND
ALARM = 0 ;
delay(200) ;
ALARM = 1 ;
}
else
{
SW = 0 ;
delay(1000) ;
}
}*/
// if(ring_flag == 1)
// {
/* key_buf[keylen] = temp_data ;
if(keylen<Maxnumber) keylen ++ ;
if(keylen>=12)
{
Serial_SendCommand(key_buf,keylen) ;
keylen = 0 ;
ring_flag = 0 ;
}
// }*/
}
}
temp_ret = Analyse_OTimerID() ;
if(temp_ret == OTimerID0)
{
SW = 0 ;
zaiji_flag = 0 ;
send_time = 0xff ;
mem_set(send_flag,FALSE,4) ;
Updata_1Led(16,23,23,0) ;
ALARM = 0 ;
delay(100) ;
ALARM = 1 ;
delay(250) ;
ALARM = 0 ;
delay(100) ;
ALARM = 1 ;
}
/* temp_ret = OKey_RP_Scan();
if((temp_ret!=OKey_Macro_NoKey)&&(temp_ret!=Macro_UnhandEvent))
{
if((temp_ret>=0)&&(temp_ret<10))
{
if(zaiji_flag == 1)
{
Updata_1Led(channel,25,25,temp_ret) ;
send_ht9200(temp_ret) ; //send number key
}
else
{
key_buf[keylen] = temp_ret ;
if(keylen<Maxnumber) keylen ++ ;
if(keylen<2)
mem_set(disp_buf,0,4) ;
Updata_Number(temp_ret) ; //disp number
}
}
else if(temp_ret == 15) //# set
{
if(set_flag == 1)
{
set_flag = 0 ;
mem_move(send_number,key_buf,keylen) ;
keylen = 0 ;
ALARM = 0 ; // set ok
delay(200) ;
ALARM = 1 ;
mem_set(disp_buf,0,4) ;
}
else if(set_flag == 2)
{
set_flag = 0 ;
channel = key_buf[keylen-1]%4 ;
P3 = 0xdc|((channel-1)&0x03) ;
keylen = 0 ;
ALARM = 0 ; // set ok
delay(200) ;
ALARM = 1 ;
mem_set(disp_buf,0,4) ;
}
}
else if(temp_ret == 14) //* auto check
{
send_time = 0 ; //start send
disp_buf[3] = send_time + 0x80 ;
}
else if(temp_ret == 13) //set
{
set_flag ++ ; //start set
if(set_flag > 2)
set_flag = 0 ;
keylen = 0 ;
if(set_flag == 0)
mem_set(disp_buf,0,4) ;
else Updata_1Led(5,25,25,set_flag) ;
}
else if(temp_ret == 12) //clear
{
SW = 0 ;
keylen = 0 ;
set_flag = 0 ;
play_flag = 0 ;
zaiji_flag = 0 ;
send_time = 0xff ;
P3 = 0xdc|((channel-1)&0x03) ;
Sys_TimerRelease(OTimerID0) ;
mem_set(send_flag,FALSE,4) ;
mem_set(key_buf,0xff,Maxnumber) ;
mem_set(disp_buf,0,4) ;
delay(500) ;
}
else if(temp_ret == 11) // play music
{
if(play_flag == 0) //play
{
play_flag = 1 ;
ALARM = 0 ;
Updata_1Led(17,18,10,24) ; //disp Play
}
else //stop
{
play_flag = 0 ;
ALARM = 1 ;
mem_set(disp_buf,0,4) ; //no disp
}
}
else if(temp_ret == 10) //摘机或挂机
{
if(zaiji_flag == 0) //摘机
{
zaiji_flag = 1 ;
SW = 1 ;
Updata_1Led(2,25,0,21) ; //disp Z-ON
delay(500) ;
}
else //挂机
{
zaiji_flag = 0 ;
SW = 0 ;
Updata_1Led(2,25,0,22) ; //disp Z-OF
delay(500) ;
}
}
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -