试用定时/计数器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;
}
} |