基本原理是用555定时器组成振荡器,用51单片机的定时器进行计数。然后代码中的定时器部分不懂,求助各位
附上定时器部分的代码:
赋初值:
TMOD=0x15;//0001 0101
TH0=0;
TL0=0;
TH1=(65536-49989)/256; //T1设初值
TL1=(65536-49989)%256;
中断:
void t0(void) interrupt 1 using 0 //计脉冲个数
{
T0count++;
}
void t1(void) interrupt 3 using 0 //定时1s
{
TH1=(65536-50045)/256;
TL1=(65536-50045)%256;
timecount++;
if(timecount==20)
{
TR0=0;
TR1=0;
timecount=0;
flag=1;
}
}
此帖出自
小平头技术问答
TMOD=0x15;//0001 0101
给你张图,从网上找的
由图可见,TMOD的高4位用于T1,低4使用于T0 GATE:门控制位。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。 C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。TMOD=0x15//就是用了定时器0的计数功能,这个计数就要对应到相应的引脚上去,来一个脉冲,累加1
而楼主中程序还用定时器1来定一个1S中,这个用来干嘛?这个不用解释吧,1s中记了多少个数,这个数的意义是什么?不用解释了吧
一周热门 更多>