单片机编程开发技巧
来源:程序员人生 发布时间:2016-08-29 09:10:33 阅读次数:2375次
工作了7个月之久,对单片机的编程也开始渐渐熟习起来,之前总是知道单片机就是定时器,状态机,中断这些东西结合起来效力是相当高的,但是自从接手开发GPF这个芯片以后,我发现了另外1种单片机的开发技能,高手请绕道。
我们都知道,在程序中,延时会影响单片机的实时性能,致使效力明显下降,但是在GPF这个芯片的开发中,系统延时和初始化被供应商做到了1块,所以调用程序,必须要做1定的loop才能使得程序能够正常的跑起来,其实我也不知道她们为何要这么做。
在工作中,改1份源码不是马马虎虎就能够改的,当时做了这么1个程序,源码我就不公然了,写个案例解释:
void test()
{
int i = 0 ;
int tick ;
int BatteryStatus = 0;
int Voltage ;
int count = 0 ;
int Voltage_value ;
char ch ;
scanf("%d",&BatteryStatus);
while(1)
{
delay_20ms();
switch(BatteryStatus)
{
case 1:
if(count == 50)
{
printf("0x%x\n",0xE1);
count = 0 ;
};break ;
case 2:
if(count == 50)
{
printf("0x%x\n",0x90); //发通用'1'信号
count = 0 ;
};break ;
default:
break ;
}
count++ ;
#if 0
ch = getch(); //假定我在这设立1个按键
if(ch == 'q')
{
printf("%x",0x48);
break ;
}
#endif
}
}
在while循环中,首先进去是延时20个ms,然后count计数器加加,当加到50次也就是1秒钟了,然后清零。此时若按下按键,不会遭到干扰,程序正常运行,效力仍然很高。如果这时候候delay_20ms改成delay_1000ms,程序扫描按键每次就要等待1s钟,影响效力。计数值可以自我估计1下,不需要太准,这样的程序在延时不需要太精准的可以实现和定时器差不多1样的功能。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠