99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

核桃設計分享
認證:優質創作者
所在專題目錄 查看專題
看看硬件工程師是如何寫代碼的(一),巧妙的程序!
看看硬件工程師是如何寫代碼的(二),榨干CPU的性能
作者動態 更多
6層板各種堆疊方案對比!
5天前
MIPI接口PCB布局走線注意事項!
1星期前
Altium designer原理圖轉PCB時報錯,出現Unknown Pin時該如何處理?
2星期前
郵票孔和V-CUT到底用哪個?該如何選擇?
2星期前
郵票孔設計規范——知識點積累
2星期前

看看硬件工程師是如何寫代碼的(一),巧妙的程序!

目前本人已經不再寫代碼了,只是想把自己走過的彎路,踩過的坑分享出來,希望更多的小伙伴能看到,少走彎路,僅供參考哈!

回想起來核桃已經很多年沒有敲代碼了,這么多年一直從事硬件工程師這個崗位,相比于軟件的ABCD,我更傾向于原理圖的設計與PCB,喜歡折騰,喜歡松香的味道。

但是,剛畢業那會,要想得到更多的機會,只能硬著頭皮學硬件和軟件,大概有一年左右的時間吧,都是一個人兼顧軟件和硬件,自己畫板,自己調代碼!

說實話,只有自己寫代碼調試自己的板子,才能更加清楚的認識到自己的板卡還有哪些可以優化地方,對于以后從事硬件工程師的崗位益處良多!

我們先來看一段51單片機的點燈程序,如下:

void main(void)

{ 

while(1)

  {

     LED=0;

     delayms(100);

     LED=1;

    delayms(100);

    }

}

程序是非常簡單的,相信很多小伙伴剛開始學的時候都是這樣寫的,程序一樣是可以正常運行的,那這段程序有什么問題呢?

可以看的出來,整個大循環里面除了LED=0和LED=1外,剩下的就是 delayms(100);這個延時函數,是一直讓CPU處于等待的狀態,啥事都干不了,一直空耗著CPU的資源。

思考問題:如果只是為了點亮一顆LED,這樣寫是沒問題的,但是實際的項目中不可能用一個CPU啥事都不干,就為了點燈,我相信沒有哪個老板肯讓你這么浪費,所以我們首要做的就是:

把CPU釋放出來,哪怕讓它一遍一遍的掃描有什么任務可以執行,也不要讓它一直在空等待!

那該如何實現?

具體思路:

從上面的程序可以知道,延時的時間是delayms(100),也就是100ms,那我們可以為系統加入一個1ms的基準時間,然后再對這個基準時間進行計數100次,達到100次后,清理該計數值,再對LED的狀態進行轉換即可!

大概程序如下:

#include

sbit LED=P1^0;   //定義LED管腳

bit 1mscriterion=0;//1ms時間基準

unsigned int 1mscount=0;//1ms基準時間計數變量

unsigned char LEDsign=0;//LED狀態變量,0為點亮,1為熄滅

void Time0int(void)

{ 

   TMOD &= 0xf0 ;

   TMOD |= 0x01 ; //定時器 0 工作方式 1

   TH0 = 0xfc ; //定時器初始值

   TL0 = 0x66 ;

   TR0 = 1 ;

   ET0 = 1 ;

}

void LEDcontrol()

{

    if(LEDsign==0)

       {

          LED=0;//LED點亮

       }

    else

      {

         LED=1;//LED熄滅

      }

}

void LEDStateful Switch(void)

{

   if(1mscriterion)  //1ms基準時間到

    {

        1mscriterion=0;先清零

        1mscount++;//LED計數器加1

        if(1mscount>=100) //計數達到100,證明100ms已經到了

         {

             1mscount=0;//一定要先清零

              LEDsign=!LEDsign;//LED狀態取反

          }

     }

}

void main(void)

{

 Time0int();

  EA=1;

  while(1)

   {

      LEDcontrol();

      LEDStateful Switch();

    }

}

void Time01ms(void)interrupt 1

{

   TH0=0xfc;  //重新賦值

   TL0=0x66;

   1mscriterion=1; //1ms基準時間到

} 

由于核桃很長時間沒有寫代碼了,有不對的地方望小伙伴們能指出來!

還有核桃不是專業寫代碼的,以上僅供參考哈!

好了,這章就先寫到這吧!我們下一章接著嘮!

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 6
收藏 7
關注 182
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 日本色片在线观看 | 国外激情av片 | 91逼逼| 日韩免费视频播放 | 强插女教师AV在线 | 国产不卡片 | 色欲av久久无码影院色戒 | 国产成人久久久精品二区三区 | 久久久无码一区二区三区 | 农田丰满艳肉妇hd | 成年动漫在线精品视频 | 伊人狠狠干 | 国产精品久久久久久久久久免费 | 国产日本在线视频 | 99久RE热视频这里只有精品6 | 熟妇人妻无乱码中文字幕真矢织江 | 欧美片网站免费 | 国产97视频 | 久久久精品一区二区毛片免费看 | 视频精品中文字幕一区二区 | 婷婷久久国产对白刺激五月99 | 18禁裸乳无遮挡自慰免费动漫 | 无码精品人妻一区二区三区老牛 | 久久亚洲精品无码gv | 国产SUV精品一区二区33 | 久久久久久久久久久久久久久久久久久 | 亚洲一区二区三区色噜噜 | 年轻的朋友6韩剧免费 | 美日韩一级大片 | 国产精品久久久久久久久免费蜜臀 | 国产成人AV大片在线播放 | 91精品国产精品 | 中文有码vs无码人妻 | 日本十八禁视频无遮挡 | 久久99精品久久久久久236 | 久久精品精品久久 | 人妻丰满熟妇AV无码区乱 | 青草久久人人97超碰 | 高H猛烈失禁潮喷A片在线观看 | 成人免费久久 | 精品在线免费看 |