在給一些單片機初學者解答問題的時候,我發現了一個現象,可能是因為受到電腦上學習C程序設計的影響,很多人會寫出類似這樣的程序:
[cpp] view plain copy#include
void main()
{
P1=0x00;
}
或者是這樣的程序
[cpp] view plain copy#include
int main()
{
P1=0xab;
return 0;
}
如果是在電腦上運行類似這樣的程序,程序執行結束,控制權交給系統,有返回值的返回給系統,是完全可行的,但是在單片機上就不一樣了,對于不依靠操作系統的單片機程序,main函數就是操作系統,應該是不能終止運行的,而應該是一個while(1)死循環。
沒有加while(1)的程序執行結束會出現不可預知的結果(具體要根據匯編語言PC指針指向的位置判斷),也就是程序跑飛。
雖然實際上用的時候STC單片機會循環執行程序(執行結束單片機復位,所有變量重置),但這個在芯片手冊中并沒有給出官方說明,所以并不一定總能如此。
單片機程序執行終止,這樣就會大大降低可靠性。試想你的單片機在控制一臺大型機器,如果發生不可預知的結果,后果很嚴重;如果你的手表是單片機,程序停止運行會怎樣?就停止顯示了;如果電腦的操作系統運行終止(關機除外),也會出現問題。
所以單片機的程序必然是一個死循環,一般都會有while(1),另外不需要有返回值,形如下面兩種情況。
[cpp] view plain copy#include
void main()
{
P1=0x00;
while(1);
}
[cpp] view plain copy#include
void main()
{
while(1) {
P1=0x00;
}
}
上一篇:單片機串口通信UART與USART的區別
下一篇:STC單片機程序下載失敗問題總結
推薦閱讀
史海拾趣
為了進一步拓展業務領域,CMS開始尋求跨界合作。他們與一家領先的汽車制造商達成戰略合作,共同研發車載智能系統。CMS的芯片技術為車載系統提供了強大的計算能力和數據處理能力,使得車載系統更加智能化、便捷化。這一合作不僅為CMS帶來了新的收入來源,也進一步提升了公司的品牌影響力。
隨著產品線的拓展和技術實力的增強,永源微電子開始積極拓展市場。公司在臺灣、深圳、香港、無錫等地設立了研發與銷售中心,通過多渠道的市場推廣和品牌建設活動,不斷提升“APM”品牌的知名度和影響力。同時,永源微電子還積極參加國內外電子行業的展會和交流活動,與業界同行建立了廣泛的合作關系,進一步拓展了公司的市場版圖。
Dantona Industries公司的創始人,Daniel Tona,在電子工程領域擁有深厚的背景。他看到了電子行業的巨大潛力,決定創立自己的公司。起初,他只有一間小辦公室和幾個志同道合的伙伴。為了節省成本,他們經常需要親自采購材料、組裝產品,甚至進行市場推廣。在這個過程中,他們遇到了資金短缺、技術難題以及市場競爭等多重挑戰。然而,憑借對技術的執著和對市場的敏銳洞察力,Daniel Tona帶領團隊一步步克服困難,逐漸在電子行業站穩了腳跟。
在市場拓展方面,友盟(AP)公司也展現出了強大的實力。公司通過線上線下相結合的方式,積極開展市場推廣活動,擴大品牌知名度和影響力。同時,友盟還積極參與行業交流和合作,與業界同行共同探討行業發展趨勢和未來發展方向。這些努力不僅提升了友盟在行業內的地位,也為其未來的發展奠定了堅實的基礎。
eLED.com Corp是一家專注于LED(發光二極管)領域的電子公司,成立于XX世紀初。公司創始人XX先生,在半導體行業擁有多年的研發經驗,他看到LED技術在照明和顯示領域的巨大潛力,于是決定創立eLED.com Corp。公司初期主要致力于LED產品的研發和生產,憑借其高效率和長壽命的特點,逐漸在市場上獲得認可。
為了進一步提升產品質量和技術水平,eLED.com Corp不斷投入研發資金,引入先進的生產設備和技術人才。通過與高校和研究機構的合作,公司成功開發出一系列具有自主知識產權的LED產品,逐漸在行業中樹立了良好的口碑。
觸摸屏增長迅速,正在激起激烈的競爭、推動著技術發展,以及引起OEM的興趣。iSuppli公司曾經預測,2012年全球主要觸摸屏技術的出貨額將從2006年的24億美元上升到44億美元。面對如此高速增長、競爭和技術多樣性,觸摸屏產業正在快速進化。 ...… 查看全部問答∨ |
|
usb host stack外包給了一家公司做,主要包括Audio class, Mass storage class, HID class driver。想請教如何進行驗收,如何進行驗收測試?… 查看全部問答∨ |
|
在很多linux移植教程中都有在安裝完kernel,給其打補丁的操作。我想知道以下問題: 1、這些補丁的作用是什么? 2、添加這些補丁的原因是什么,這些補丁是對其kernel的修正,還是因為移植平臺(如ARM、MIPS)的CPU不同,還是因為移植平臺開發板( ...… 查看全部問答∨ |
|
我們開發了一個usbcdrom,包括一個cdrom和一個普通優盤。在xp下第一次插入(原來這臺機器沒有插過我們的設備),就會自動安裝優盤和cdrom的驅動。但是當驅動完成后,系統會提示說“系統配置更新。需要重啟”等。其實已經可以使用了。 那位高手知道 ...… 查看全部問答∨ |
|
想用STM32的TIM3的通道3來作為計數器,計外部脈沖的個數,想將外部脈沖作為外部時鐘送給TIM3的通道3,但是看定時器 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 有獎直播:安世半導體先進 SiC MOSFET 助力提升 EV-Charger 和 OBC 應用能效
- ADI有獎下載活動之21:ADI民用雷達解決方案
- 看是德科技利用校準降低儀器測量不確定度、提高測試精度 直播享好禮!
- 【新年活動】2023,兔 do list!
- 有獎直播:助力AI算力,下一代GPU服務器中卡緣高速互連解決方案哪里找?
- 有獎直播|5G多場景終端應用對連接器的新要求及Molex的5G連接方案
- 2018,EEWORLD邀請你定下新年成長計劃
- 【EE團拍賣】\\
- 下載有禮|是德科技電子書 《通過了解測試精度的基礎知識, 提高良率并降低風險》,不做“差不多先生”
- CadenceLIVE China 2022中國線上用戶大會 報名中!