試用定時/計數器T1對外部事件計數,要求每計數5,就將T1改成定時方式,控制P1.7輸出一個脈寬為10ms的正脈沖,然后又轉為計數方式,如此反復循環。設晶振頻率為11.0592MHz。
程序如下
#include<stc15.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^7;
uchar i,m;
void GPIO()
{
P1M1=0;P1M0=0;
}
void timer_count()
{
TMOD=0X40;
TH1=0Xff;
TL1=0Xfb;
TR1=1;
}
void timer_time()
{
TMOD=0X00;
TH1=0X3c;
TL1=0Xb0;
TR1=1;
}
void main(void)
{
GPIO();
while(1)
{
i=0;m=0;
while(1)
{
timer_count();
while(1)
{
if(TF1==1)
{
TF1=0;
m=1;
}
if(m==1)
break;
}
if(m==1)
break;
}
while(1)
{
timer_time();
while(1)
{
if(TF1==1)
{
TF1=0;
led=!led;
i=1;
}
if(i==1)
break;
}
}
if(i==1)
break;
}
} |