|
不是這樣的,。你這樣寫就是按下按鍵判斷是否num==200等于的話就滅,而你按下的時(shí)候不會(huì)那么巧剛好200的
#include <AT89X51.H>
#define uchar unsigned char
uchar a,b;//計(jì)時(shí)標(biāo)志
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;//定時(shí)50ms應(yīng)該要50000
TL0=(65536-50000)%256;
TR0=1;
LED1=1;
LED0=1;//我假設(shè)的是LED陰極接單片機(jī),陽極接VCC,所以輸出1是熄滅
while(1)
{
if(K1==0)
{
delay10ms();
if(K1==0)
{
a=1;//按下按鍵后計(jì)時(shí)標(biāo)志為1
LED0=0;//LED0亮
}
}
if(K2==0)
{
delay10ms();
if(K2==0)
{
b=1;//按下按鍵后計(jì)時(shí)標(biāo)志為1
LED1=0;//LED1亮
}
}
if(num==6000)//20*50毫秒等于1秒5分鐘需要300個(gè)1秒,所以是300*20=6000
{
a=0;//清楚標(biāo)志
LED0=0;//燈熄滅
}
if(num==12000)//20*50毫秒等于1秒5分鐘需要300個(gè)1秒,所以是300*20=6000
{
b=0;//清楚標(biāo)志
LED1=0;//燈熄滅
}
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if((a==1)|(b==1)) num++;//判斷計(jì)時(shí)標(biāo)志是否為1,為1就開始計(jì)時(shí)
|
|