|
void main()
{
beep = 0; //開機叫一聲
delay_1ms(150);
P0 = P1 = P2 = P3 = 0xff; //初始化單片機IO口為高電平
send_wave(); //測距離函數
smg_display(); //處理距離顯示函數
time_init();
EXINTinit(); //定時器初始化程序
init_eeprom(); //開始初始化保存的數據
send_wave(); //測距離函數
send_wave(); //測距離函數
HW = 1;
while(1)
{
EXINTinit();
if(flag_300ms == 1)
{
flag_300ms = 0;
clock_h_l(); //報警函數
if(beep == 1)
send_wave(); //測距離函數
if(menu_1 == 0)
smg_display(); //處理距離顯示函數
}
key(); //按鍵函數
if(key_can < 10)
{
key_with(); //按鍵處理函數
}
}
}
/*********************定時器1中斷服務程序************************/
void time1_int() interrupt 3
{
static uchar value; //定時2ms中斷一次
TH1 = 0xf8;
TL1 = 0x30; //2ms
display(); //數碼管顯示函數
value++;
if(value >= 150)
{
value = 0;
flag_300ms = 1;
}
}
void EXINTinit()//定時器初始化
{
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
}
void EX0INT() interrupt 0//int0中斷 代碼
{
int k,m,n;
for(m=0;m<3;m++)
{
for(n=0;n<10;n++ )
{
for(k=0;k<100;k++)
{ delay10ms();
}
}
}}
void delay10ms()
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
|
|