⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 功能强大的拨号器
💻 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 + -