就是在信号发生器,在死循环里,是应该怎样设置定时中断或者其他方法,能够使之在1分钟后停止输出?
void main()
{
init();
LCD_init();
LCD_clear();
LCD_write_str(0,0,"Delay:");
LCD_write_str(8,0,"s,");
LCD_write_str(11,0,"kHz");
LCD_write_str(0,1,"Select:");
LCD_write_str(9,1,"s,");
LCD_write_str(12,1,"kHz");
dula=0;
wela=0;
dacs=0;
dawr=0;
while(1)
{
key_scan();
if(conf==1)
{
TR0=1;
TR1=1;
conf=0;
}
}
}
void T0_time()interrupt 1
{
if(delaypl==3)//T0中断中开始,更改频率,设置初值
{
TH0=(65536-333)/256;
TL0=(65536-333)%256;
}
if(delaypl==5)
{
TH0=(65536-200)/256;
TL0=(65536-200)%256;
}
if(delaypl==7)
{
TH0=(65536-143)/256;
TL0=(65536-143)%256;
}//T0中断中结束
while(delaybx==1)//选择波形
{
P1=sin[k];
k++;
if(k==64)
k=0;
}
while(delaybx==2)
{
P1=rectangle[k];
k++;
if(k==64)
k=0;
}
while(delaybx==3)
{
P1=sawtooth[k];
k++;
if(k==64)
k=0;
}
if(delaytime==0)
{
P1=0xff;
TR1=0;
TR0=0;
}
}
void T1_time()interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num2++;
if(num2==20)//中断T1中开始部分,满20为1s
{
num2=0;
delaytime--;
delayshi=delaytime/10+0x30;
delayge=delaytime%10+0x30;
LCD_write_char(6,0,delayshi);
LCD_write_char(7,0,delayge);
}//中断T1中结束部分
}