工作了7個(gè)月之久,對(duì)單片機(jī)的編程也開始慢慢熟悉起來,以前總是知道單片機(jī)就是定時(shí)器,狀態(tài)機(jī),中斷這些東西結(jié)合起來效率是相當(dāng)高的,但是自從接手開發(fā)GPF這個(gè)芯片之后,我發(fā)現(xiàn)了另外一種單片機(jī)的開發(fā)技巧,高手請(qǐng)繞道。
我們都知道,在程序中,延時(shí)會(huì)影響單片機(jī)的實(shí)時(shí)性能,導(dǎo)致效率明顯降低,但是在GPF這個(gè)芯片的開發(fā)中,系統(tǒng)延時(shí)和初始化被供應(yīng)商做到了一塊,所以調(diào)用程序,必須要做一定的loop才能使得程序能夠正常的跑起來,其實(shí)我也不知道她們?yōu)槭裁匆@么做。
在工作中,改一份源碼不是隨隨便便就可以改的,當(dāng)時(shí)做了這么一個(gè)程序,源碼我就不公開了,寫個(gè)案例解釋:
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); //發(fā)通用'1'信號(hào)
count = 0 ;
};break ;
default:
break ;
}
count++ ;
#if 0
ch = getch(); //假設(shè)我在這設(shè)立一個(gè)按鍵
if(ch == 'q')
{
printf("%x",0x48);
break ;
}
#endif
}
}
在while循環(huán)中,首先進(jìn)去是延時(shí)20個(gè)ms,然后count計(jì)數(shù)器加加,當(dāng)加到50次也就是一秒鐘了,然后清零。此時(shí)若按下按鍵,不會(huì)受到干擾,程序正常運(yùn)行,效率依然很高。如果這時(shí)候delay_20ms改成delay_1000ms,程序掃描按鍵每次就要等待1s鐘,影響效率。計(jì)數(shù)值可以自我估計(jì)一下,不需要太準(zhǔn),這樣的程序在延時(shí)不需要太精準(zhǔn)的可以實(shí)現(xiàn)和定時(shí)器差不多一樣的功能。
-
單片機(jī)
+關(guān)注
關(guān)注
6043文章
44621瀏覽量
638609 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3255瀏覽量
115380 -
GPF
+關(guān)注
關(guān)注
0文章
4瀏覽量
7683
原文標(biāo)題:?jiǎn)纹瑱C(jī)編程開發(fā)技巧經(jīng)驗(yàn)分享
文章出處:【微信號(hào):wujianying_danpianji,微信公眾號(hào):?jiǎn)纹瑱C(jī)精講吳鑒鷹】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
51單片機(jī)教程之單片機(jī)硬件結(jié)構(gòu)的詳細(xì)說明
![51<b class='flag-5'>單片機(jī)</b>教程之<b class='flag-5'>單片機(jī)</b>硬件結(jié)構(gòu)的<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/68/E2/o4YBAFvOkT6AFp-KAAnGBq8x67E538.png)
51單片機(jī)的頭文件有哪些代碼詳細(xì)說明
![51<b class='flag-5'>單片機(jī)</b>的頭文件有哪些代碼<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/A7/30/pIYBAF2B7jeATKwkAAlEFBVRhGE612.png)
51單片機(jī)的C語(yǔ)言關(guān)鍵字詳細(xì)說明
![51<b class='flag-5'>單片機(jī)</b>的C語(yǔ)言關(guān)鍵字<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/A4/38/pIYBAF1crzmAFn-gAACY6XhjCNk361.png)
51單片機(jī)的C程序基本架構(gòu)詳細(xì)說明
![51<b class='flag-5'>單片機(jī)</b>的C程序基本架構(gòu)<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/A3/A4/pIYBAF1UxsqAcg9LAAQgq-MZTzc475.png)
如何同時(shí)使用51單片機(jī)的定時(shí)器0和串口使用問題詳細(xì)說明
![如何同時(shí)使用51<b class='flag-5'>單片機(jī)</b>的定時(shí)器0和串口使用問題<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/A2/E1/o4YBAF1SVo2ARDMuAAOe6kJ993s255.png)
進(jìn)行單片機(jī)串口通信的方式詳細(xì)說明
![進(jìn)行<b class='flag-5'>單片機(jī)</b>串口通信的方式<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/9F/8E/pIYBAF1CmKeAN3QpAASlXcGzKiQ670.png)
51單片機(jī)中斷相關(guān)寄存器的詳細(xì)說明
![51<b class='flag-5'>單片機(jī)</b>中斷相關(guān)寄存器的<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/98/45/pIYBAF0S5yGAVs5-AAQaMRmcR8A281.png)
51單片機(jī)中斷系統(tǒng)的原理和結(jié)構(gòu)詳細(xì)說明
![51<b class='flag-5'>單片機(jī)</b>中斷系統(tǒng)的原理和結(jié)構(gòu)<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/AD/D3/o4YBAF3TTJOAbIpdAAHChIivfsM547.png)
單片機(jī)C語(yǔ)言編程的關(guān)鍵字詳細(xì)說明
![<b class='flag-5'>單片機(jī)</b>C語(yǔ)言<b class='flag-5'>編程</b>的關(guān)鍵字<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/B0/A1/o4YBAF3vbxmAQA2lAAkmeH1obqI500.png)
STM32單片機(jī)的輸入捕獲實(shí)驗(yàn)詳細(xì)說明
![STM32<b class='flag-5'>單片機(jī)</b>的輸入捕獲實(shí)驗(yàn)<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/B2/98/pIYBAF4NnlaAObYFAAoqtU5EhGM478.png)
愛上單片機(jī)的工程資料詳細(xì)說明
![愛上<b class='flag-5'>單片機(jī)</b>的工程資料<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/B3/B9/pIYBAF4hD26AOngWAAn7WB8ARws943.png)
K64系列單片機(jī)的參考手冊(cè)詳細(xì)說明
![K64系列<b class='flag-5'>單片機(jī)</b>的參考手冊(cè)<b class='flag-5'>詳細(xì)說明</b>](https://file.elecfans.com/web1/M00/B4/B7/o4YBAF5cbNaAYZ-JAAEVK1ZfnA4874.png)
評(píng)論