while(1)//判断是否90us
{ if(clk_port != 0) {
m++; if(m > 20) { flag=1;//是90us范围则退出 count_clk++; break;
}
}
else { m = 0; } asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP");
} if(flag) { flag = 0; display(22,2); }
while(clk_port != 0); //等待90US完了没?
for(i=0;i<24;i++)//开始采集 {
value0 = data_port; //得到一数据 if(value0) { byte0 |= 0x00800000; //数据是1则把第24位置1,保存在BYTE0,0则直接位 } if(i<23) { byte0 >>= 1; } while(clk_port==0); //低电平时是否读完数据? while(clk_port);//高电平等待,低电平读数据
}
这段程序我分别用HT和另一系列的单片机(义隆)做测试,在HT上读不到准确的数据,在另一单片机(4M)上可以读到准确并稳定的数据.我现在怀疑是HT的速度不够快,不知如何解决这问题??? HT的是用HI_TECH编译的.所以有LONG型的. 我所要采集的数据是6.5US读一个数据,连续读24个数据.HT的已经是8M的晶振速度了,上面那个90US的我在两上单片机上测试是一样的了,关键在于连续采集数据时的速度,之前我发了个贴子说HT的速度慢,现在不知是否能证实了呢? 如果把采集数据这段程序换成汇编写的话是否能达到要求呢?请工程师帮我写写汇编的程序啦,我怕写出来还是达不到要求....有人在51单片机上能做到,HT的不能做到吗???
|