请帮忙看看程序为什么没有结果?
这是一个利用HS1101测湿度的程序。也就是相当于一个频率计,测量P3.5输入信号的频率,用LED显示。程序运行没有错误,但是在protues里仿真出不了结果,根本就没有显示,请各位帮帮忙……(附件里还附了硬件的连接图。)
#include <AT89X52.H>
#include <INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
#define Disdata P1
#define discan P2
sbit DIN=P3^5;
uchar T1count; //从T1的计数单元读取的计数值
uchar timecount;
uchar RH;
bit flag;
const unsigned int tab[2][11]=
{0,10,20,30,40,50,60,70,80,90,100,
7351,7224,7100,6976,6853,6728,6600,6468,6330,6186,6033};
unsigned char code dispcode[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00,0x40}; //0x40 负,共阴极
unsigned char dispbitcode[]={0xef,0xdf,0xbf,0x7f}; //显示列控制字
unsigned char dispbuf[4]={0x00,0x00,0x00,0x00};//数据显示单元
void digitalshow(unsigned char a1,unsigned char a0)
{
uchar i;
dispbuf[0]=a0;
dispbuf[1]=a1;
for(i=0;i<2;i++)
{
P2=0xff; //关闭所有显示
P0=dispcode[dispbuf[i]];
P2=dispbitcode[i];
}
}
void t0() interrupt 3 using 0
{
TH0=(65536-50000)/256; //定时50ms
TL0=(65536-50000)%256;
timecount++;
if(timecount==20)
{
TR0=0;
timecount=0;
flag=1;
}
}
void t1() interrupt 3 using 0
{
T1count++;
}
void tran(f)
{
uchar i;
for(i=0;i<=10;i++)
if(f<=tab[1][i]&&f>tab[1][i+1])
{
RH=tab[0][i]+tab[1][i]-f/((tab[0][i+1]-tab[0][i])/10);
break;
}
}
void dmsec (unsigned int count)
{
unsigned int i; // 1ms延时
while (count--)
{
for (i=0;i<125;i++){}
}
}
void mian()
{
uchar lhum,hhum;
TMOD=0x51;
TH0=(65536-50000)/256; //定时50ms
TL0=(65536-50000)%256;
TH1=0;
TL1=0;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
dmsec(1000);
tran(T1count);
hhum=RH/10; //十位数据
lhum=RH%10; //各位数据
digitalshow(5,5);
}