📄 init.c
字号:
#include".\MBTD.h"
#include <intrins.h>
#include".\Function.h"
unsigned char dtmf_truck;
unsigned char dtmf_drop;
unsigned char remote_key;
unsigned char off_hook_scan_js=0;
bit first_key; //judge the first key
bit dorop_read_flg; //get the dtmf of drop
bit truck_read_flg; //get the dtmf of truck
bit off_hook_now,off_hook_buf,off_hook_out,off_hook_bef,scan_end_flg; //check the offhook flg
bit ring_now,ring_buf,ring_out,ring_bef,ring_end_flg;
bit program_flg;
bit sys_20second_flg;
bit resp_run_flg; //
bit resp_ok;
bit time_out_flg;
bit start_flg;
bit sys_5sec_flg=0;
bit dail_flg; //start dial the destination number
bit sys_2sec_flg;
bit car_select_flg;
bit ring_flg;
bit wake_up_flg;
bit DTMF_get_flg=0;
bit dial_flg;
extern bit car_bin_flg;
unsigned char drop_buf[32] _at_ 0x100;
unsigned char drop_count=0;
unsigned char dtmf_buf;
unsigned char tx_time;
unsigned char send_count_buf;
unsigned char ring_js;
unsigned int sys_20sec_js;
unsigned int Calling_wait_js;
unsigned int resp_run_js;
unsigned int sys_5sec_js=0;
unsigned int key_get_js;
unsigned int tt_time;
unsigned int sys_2sec_js; //
unsigned int ring_check_js;
unsigned char wake_up_js;
unsigned int alarm_js;
unsigned char alarm_enable=0;
unsigned char alarm_first=0;
/*
void timer0(void) interrupt 1 // no operation?
{
TL0=V_T0&0xff;
TH0=V_T0>>8;
}
*/
void timer1(void) interrupt 3 using 1 //5ms time base
{
TL1=V_T1&0xff;
TH1=V_T1>>8;
TF1=0;
off_hook_scan_js++; // scan the signal of offhook
if(off_hook_scan_js>=OFF_HOOK_SCAN_TIME)
{
off_hook_scan_js=0;
off_hook_now=!pulse;
scan_end_flg=1;
}
//----------------------------------------------------------
ring_js++;
if(ring_js>=6)
{
ring_js=0;
ring_now=!ring;
ring_end_flg=1;
}
//--------------------------------------------------------
if(ring_flg)
{
ring_check_js++;
if(ring_check_js>=1000)
{
ring_check_js=0;
ring_flg=0;
}
}
if(tx_time)
--tx_time;
if(tt_time)
--tt_time;
//------------------------------------ key A wait time
if(calling_run_flg)
{
Calling_wait_js++;
if(Calling_wait_js>=CALLING_WAIT_TIME)
{
Calling_wait_js=0;
calling_run_flg=0;
valid_flg=1;
alarm_start=1;
}
}
else
Calling_wait_js=0;
//-------------------------------------
if(resp_run_flg)
{
resp_run_js++;
if(resp_run_js>=1600)
{
resp_run_js=0;
resp_run_flg=0;
resp_ok=1;
}
}
else
resp_run_js=0;
//------------------------------------------
sys_20sec_js++;
if(sys_20sec_js>=SYS_20SECOND) //40s
{
sys_20sec_js=0;
sys_20second_flg=1;
}
//--------------------------------------------
sys_5sec_js++;
if(sys_5sec_js>=400) // 2sec
{
sys_5sec_js=0;
sys_5sec_flg=1;
}
//------------------------------------------------
sys_2sec_js++;
if(sys_2sec_js>400)
{
sys_2sec_js=0;
sys_2sec_flg=1;
}
//-----------------------------------------
if(start_flg) //判断没有按键输入
{
key_get_js++;
if(key_get_js>=KEY_GET_TIME)
{
key_get_js=0;
start_flg=0;
time_out_flg=1;
dorop_read_flg=1;
}
}
//----------------------------------------------------
if(wake_up_flg)
{
wake_up_js++;
if(wake_up_js>=30)
{
wake_up_js=0;
LED=!LED;
}
}
if(alarm_first)
{
alarm_js++;
if(alarm_js>=SYS_30SEC)
{
alarm_js=0;
alarm_enable=1;
//alarm_first=0;
}
}
}
void int0(void) interrupt 0
{
if(!first_key)
{
dial=0;
first_key=1;
start_flg=1;
//local_tel=1;
//local_tel_js=0;
//local_flg=0;
}
//---------------Read DTMF--------------------------------------
P0=0xff;
_nop_();
oe_9170_1=1;
_nop_();
dtmf_drop=P0&0x0f;
oe_9170_1=0;
//-------------------------------------------------------
while(!pin_int0);
dorop_read_flg=1;
if(dtmf_drop==0x0a)
dtmf_drop=0;
if(dtmf_drop==0x0c)
program_flg=1;
if(dtmf_drop<0x0d)
{
drop_buf[drop_count]=dtmf_drop;
drop_count++;
if(drop_count>31)
drop_count=0;
}
key_get_js=0; //
if(dtmf_drop==0x0b)
{
send_count_buf=drop_count;
car_select_flg=1;
}
}
void int1(void) interrupt 2
{
//-----------------Read DTMF-----------------------------------
P0=0xff;
_nop_();
oe_9170_2=1; //read data
_nop_();
dtmf_truck=P0&0x0f;
oe_9170_2=0;
//-----------------------------------------------------
// while(!pin_int1);
// red_led=!red_led;
if((infrared_moniter_flag_buf&&infrared_moniter_flag)|(remote_calling_flg&&remote_calling_flg_buf))
{
DTMF_get_flg=1;
sys_20second_flg=0;
sys_20sec_js=0;
// red_led=!red_led;
}
}
void int2(void) interrupt 6 using 3 //红外中断
{
// red_led=!red_led;
if(!int_bit)
{
P1|=0x0f;
remote_key=P1&0x0f;
remote_get_flg=1;
if(infrared_moniter_flag||remote_calling_flg||dial_flg)
{
if(remote_key!=KEY_C)
{
remote_get_flg=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -