我有电子卡上的端口(带有8051微控制器的Atmel卡)。这个端口名为p3_0。端口得到'1'或'0'逻辑。
1 0 1 0
''''''' ''''''''
' ' ' '
' ''''''' '''''' And so on....
我需要将C用于8051(实际上是原始C)并编写一个能够知道频率是多少的代码。最后我需要char数组中的频率因为我需要将它打印到只知道打印char array[];
的LCD。我使用“itoa”函数将int数字,'count'转换为char array [];
。频率可以在16Hz到90Hz之间。
这就是我所做的:
void main(void)
{
init_lcd()///Print command
;print_lcd(1,"The Project"); //Print command
;print_lcd(2,"is starting:"); //Print command
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
while(1)
{
count = 0;
while(P3_0 == 1)
{
count ++;
init_lcd() //Print command
;print_lcd(1,"Counting..."); //Print command
for(i=0; i<1; i++){delay(1000);delay(1000);delay(1000);}//delay...
}
init_lcd()///Print command
;print_lcd(1,"Done Counting!"); //Print command
for(i=0; i<1; i++){delay(1000);delay(1000);delay(1000);}
;print_lcd(2,itoa(count)); //Print command
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
}
}
我的想法是检查端口,我每次都计算它为'1'。最后,我将决定每个'1'计数的时间和(计算频率是什么)
问题是:我如何知道有多少人在频率上,我可以怎样?
当计算“从频率中取出”时,还有dalay的东西。 我该如何解决?
感谢所有阅读此处输入代码的人! 我非常感谢任何帮助! 感谢所有人!
答案 0 :(得分:0)
它们是衡量频率的逻辑。 8051有2个定时器/计数器,配置一个作为定时器,另一个作为计数器,并将频率输入提供给计数器引脚,然后同时启动计数器和定时器(无论如何,它们在激活定时器时会延迟1个机器周期,但是你可以通过计算补偿它,在此负载计数器之前具有合适的值,以便您的模块可以测量低频率。当计数器溢出停止计时器并且不知道没有。你可以计算频率的计数和时间。 希望这种逻辑有效。