為什么可以編程來控制單片機(jī)阿
為什么可以編程來控制單片機(jī)阿
你是要問為什么僅僅是一些語句就能使單片機(jī)工作吧?其實(shí)我們寫的每一個(gè)程序都有一個(gè)二進(jìn)制編碼,說白了程序*百科*到單片機(jī)中都是一些1和0組成的,1是邏輯門的開而0是邏輯門的關(guān),也就是1和0控制了單片機(jī)中某些單元的開和關(guān),如果你學(xué)過邏輯門的話你就會(huì)明白實(shí)際生活中的許多事情(包括執(zhí)行動(dòng)作的過程)都可以用邏輯表達(dá)式來表示,看看邏輯電路吧,你會(huì)懂的,這也是單片機(jī)內(nèi)部的原理基礎(chǔ)。
為什么編程器可以給單片機(jī)編程?燒寫又是怎么回事?
單片機(jī)就是單片計(jì)算機(jī)。需要軟件支持。
它除專用單片機(jī)外一般出廠沒有程序,但有存儲(chǔ)器,可以用編程器給它的存儲(chǔ)器寫入程序,讓單片機(jī)工作。
有的單片機(jī)里是一次性編程的存儲(chǔ)器。它寫進(jìn)數(shù)據(jù)后就把與寫入連線的熔絲燒斷,保護(hù)里邊的程序不被破譯,所以編程有時(shí)又說是燒寫。
單片機(jī)為什么能直接燒錄程序?
單片機(jī)能直接燒錄程序是因?yàn)閱纹瑱C(jī)中已經(jīng)存在了一個(gè)燒寫程序。
啟動(dòng)單片機(jī)時(shí)首先運(yùn)行這程序,程序判斷端口狀態(tài),如果符合“要燒寫ROM”的狀態(tài)存在,就從某個(gè)端口(串口、SPI等等)讀取數(shù)據(jù),然后寫入到單片機(jī)的ROM中。
如果沒有“要燒寫ROM”的狀態(tài),就轉(zhuǎn)到用戶的程序開始執(zhí)行。
單擊片燒錄原理總結(jié):
ICP:使用SWD接口進(jìn)行燒錄,如J-Link燒錄器和J-Flash軟件配合使用。
ISP:使用引導(dǎo)程序(Bootload)加上外圍UART/USB等接口進(jìn)行燒錄。
IAP:軟件自身實(shí)現(xiàn)**電擦除和編程的方法,不使用任何工具。程序通常分成兩塊,分別為引導(dǎo)程序和應(yīng)用程序。
為什么單片機(jī)也用C語言編程
對于單片機(jī)來說,匯編,C都可實(shí)現(xiàn)編程,編譯器會(huì)根據(jù)寫的程序翻譯成單片機(jī)的機(jī)器碼,不存在哪個(gè)芯片專用C或匯編; 只是匯編和C有各自的優(yōu)缺點(diǎn)。 一般來說匯編的程序更接近于機(jī)器碼,小程序執(zhí)行效率高,但是單片機(jī)種類不同,匯編語言也相差很大,比如51,pic,AVR,ARM; C語言編屬于高級(jí)語言,具有可移植性,能夠結(jié)構(gòu)化編程。
使用標(biāo)準(zhǔn)C語言的程序,幾乎都可以不作改變移植到不同的微機(jī)平臺(tái)上,對于嵌入式等的微控制芯片,屬于標(biāo)準(zhǔn)C語言的部分也很少需要修改,而且程序很容易讀懂。
C語言編寫程序結(jié)構(gòu)清晰,移植性好,容易維護(hù)和修改。
單片機(jī)能做什么
單片機(jī)主要用于嵌入式應(yīng)用,大量用于自動(dòng)控制的電子設(shè)備,如手機(jī),照相機(jī),微波爐,洗衣機(jī)等。
單片機(jī)也可用于任何需要決策或系統(tǒng)監(jiān)控的應(yīng)用程序。
有許多單片機(jī)可用于集成到產(chǎn)品中。
單片機(jī)通常具有模擬和數(shù)字輸入/輸出功能。
用戶可以使用各種編程語言對微控制器進(jìn)行編程??梢蚤_發(fā)這些軟件程序來監(jiān)視和獲取某些輸入,執(zhí)行高速計(jì)算和分析并生成輸出以控制各種設(shè)備,例如LCD屏幕,電機(jī)驅(qū)動(dòng)器等。
硬件特征:
(1)單片機(jī)的體積比較小, 內(nèi)部芯片作為計(jì)算機(jī)系統(tǒng),其結(jié)構(gòu)簡單,但是功能完善,使用起來十分方便,可以模塊化應(yīng)用。
(2)單片機(jī)有著較高的集成度,可靠性比較強(qiáng),即使單片機(jī)處于長時(shí)間的工作也不會(huì)存在故障問題。
(3)單片機(jī)在應(yīng)用時(shí)低電壓、低能耗,是人們在日常生活中的首要選擇, 為生產(chǎn)與研發(fā)提供便利。
(4)單片機(jī)對數(shù)據(jù)的處理能力和運(yùn)算能力較強(qiáng),可以在各種環(huán)境中應(yīng)用,且有著較強(qiáng)的控制能力。
單片機(jī)為什么還在用C語言編程
單片機(jī)產(chǎn)品的成本是非常敏感的。想用python和ruby和java又沒內(nèi)存處理器又太慢,想用.net又嫌貴(M¥有wince或microframework),所以只能用C/C++了,無奈面對單片機(jī)的C++編譯器又沒有一個(gè)靠譜的,所以就只能用C語言了。
基于成本原因,對于單片機(jī)開發(fā)來說,最重要的是在極其有限的ROM和RAM中實(shí)現(xiàn)最多產(chǎn)品的功能。
或者反過來說,實(shí)現(xiàn)相同的產(chǎn)品功能,所需要的ROM和RAM越小越好,因?yàn)橐话銇碚fROM/RAM越小單片機(jī)越便宜。C++的高級(jí)特性引起的代碼體積膨脹比C大得多,這一缺陷是致命的。以前有過EmbeddedC++,去掉了一些標(biāo)準(zhǔn)C++的復(fù)雜特性,但是用的人不多,因?yàn)閱纹瑱C(jī)產(chǎn)品的業(yè)務(wù)邏輯一般沒那么復(fù)雜,用C就綽綽有余。