仪器社区

单片机频率计的这段程序怎么理解

王松民商法 2017-12-05
评论
全部评论
ozhengshun
#include
unsigned char code
dispcode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char a=0,b=0,c=0,d=0;
unsigned int pinlv=0;
unsigned long int count=0;
void delay() //延时约20ms
{
int j;
for(j=0;j<2000;j++);
}

void display() //显示函数
{
a=pinlv/1000;
b=pinlv/10;
c=pinlv%100/10;
d=pinlv%10;

P2=0xf1;
P0=dispcode[a]; //显示千位
delay();

P2=0xf2;
P0=dispcode[b]; //显示百位
delay();

P2=0xf4;
P0=dispcode[c]; //显示十位
delay();

P2=0xf8;
P0=dispcode[d]; //显示个位
delay();

}
void delay1(n) //延时约2n毫秒
{
int i,j;
for(i=0;i {
for(j=0;j<255;j++) {}
display();
}

}

void main(void)
{
EA=0;
TMOD=0x51; //定时器0为16位计数器模式,定时器0为16位定时器模式
TH0=15602/256; //50毫秒定时。
TL0=15602%256;
T1=1;
ET0=1;
//

EA=1;
TR1=1;
TR0=1;
while(1)
{
display();
}

}

void time0(void)interrupt 1 using 2 //定时器0中断,使用第二工作寄存器组
{
ET0=0;
count++;
if(count==20) //1秒时间到
{
count=0;
TR1=0;
pinlv=TH1*256+TL1; //取计数器1的计数值
TH1=0; //取值后重新归零
TL1=0;
TR1=1;
}
TH0=15602/256; //定时器0赋初值
TL0=15602%256;
TR0=1;
ET0=1;

}
3 0 2017-12-06 0条评论 回复
ok面筋可带劲了
什么单 片机,哪一段呢?
11 0 2017-12-06 0条评论 回复
小花妹妹mmm
程序呢?没有贴出来吗?
13 0 2017-12-06 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论