|
單片機程序如下
定時器設(shè)為4ms,每4ms 變量“dd”的值加1,加到11后(44ms),max和min的值變化一次,為什么最后測量到的周期是8ms?
#include "reg51.h"
#include<intrins.h>
unsigned int cd,dd;
unsigned char min=0,max=0x50;
sbit LED=P2^0;
void led_int() interrupt 1 using 0
{
TH0=0xf1; //延時約3.905ms初值
TL0=0xf1;
TR0=1;
dd++;
if(dd==11)
{
if((min==0x50)&&(max==0)){cd=0;}
if((min==0)&&(max==0x50)){cd=1;}
if(cd){min++;max--;}
else {min--;max++;}
dd=0;
}
}
void delay(unsigned int i)
{
unsigned int j;
while(i--)
{
for(j=0;j<0x20;j++);
}
}
void main()
{
TMOD=0x01; //模式0
TH0=0xf1; //3.905ms高位
TL0=0xf1; //3.905ms低位
EA=1;
ET0=1;
TR0=1;
while(1)
{
LED=0;
delay(max);
LED=1;
delay(min);
}
}
|
|