国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > 单片机编程开发技巧

单片机编程开发技巧

来源:程序员人生   发布时间:2016-08-29 09:10:33 阅读次数:2387次

工作了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样的功能。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生