單片機編程開發技巧
來源:程序員人生 發布時間:2016-08-29 09:10:33 閱讀次數:2597次
工作了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樣的功能。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈