大多數人是不希望上來就看到一大堆代碼和英文的。
人們更希望有中文的理論和詳細的說明。
所以,我們采用引誘的方式,提出問題,然后給出解決辦法,最后等你真的明白理論的時候,我們把解決辦法與代碼對應著拿出來。
現在我們的回到話題,什么是程序
書面給出的答案是,機器在運行時,那些執行指令的序列,叫程序
看到這里你有什么感想,太多的名詞不明白,或者看起來熟悉,卻沒有很透徹的體會,是的。
書,作為作品,必須精簡正確。但很難通俗易懂。
在我的世界里,學習是愉快的,因為我一定會多打比方,多聯系人類社會里的現象,找出邏輯關系
其實程序就是做一件事情的先后循序。程序的程,有過程的意識,而序,當然是序列的意識了
比如,我想做一道鍋包肉的菜,我的程序是
1選材,(肉,各種調料)
2工具,鍋碗瓢盆
3制作工藝,先切肉,上漿,油炸,烹飪,成盤
當然,這里還有許多細節沒寫(畢竟我們不是烹飪學校科班出身對吧)
但基本上已經說明,做一件事情的步驟序列了,
計算機程序(或單片機程序)也是一樣的
我們也要
1選材(用那些數據,常量數,變量,等等)
2工具(我們采用哪一種語言,和相對應的編譯器)
3制作工藝(先加誰,后減誰,放在那里,什么時候輸出)
這就是程序
定義方面就算是過關了,等你真的寫了好多程序的時候,那時候你也可能像今天的我一樣侃侃而談,取告訴別人什么是程序
程序在那里!
芯片分兩種,
一種是有ALU(運算器)的,
一種是沒有ALU的
計算機和51單片機,都屬于有運算器的
像164,595,138這樣的芯片是沒有運算器ALU的
單片機和電腦從邏輯機構上說,都一樣
1 運算器
2存儲器
3控制器
4時鐘
5總線
這5個部件共同組成了CPU
我們的程序,是存儲在存儲器里的,是會被運算器執行的
我們的程序在存儲器中被提取出來,送到運算器和控制器,經過讀取和執行,最終將我們的代碼(0000 1000)這樣的編程電器信號
機器就根據我們寫的代碼,對等的用電器信號驅使機器工作
系統除了要有 內存(里邊的程序) 運算器/控制器 總線,
更要有外圍設備,(各種傳感器)
外部的顯示世界里的信息,溫度,濕度,光照度,聲音,重量等等,是借助對應的傳感器,變成數字信號的
單片機根據程序的指令,科學且有條不紊的接收數字信號
程序內部,對數據進行處理判斷 最后得出想要的結果
程序控制單片機(機器),發出控制指令,智慧外圍設備的另一部分 工作,達到預期的效果
舉例 (空調)
溫度傳感器 探測 室內溫度
單片機在程序的指揮下,接收溫度傳感器的數據信息(溫度數值)
程序判斷外部溫度N 然后與用戶設定的舒適溫度M 比較
如果(N< M){ 太冷,我們發出控制信號,驅動制暖電機轉動 }
否則(N=M ){ 停止所有電機轉動,進入待機狀態(溫度傳感器除外)}
否則(N>M ){ 太熱,我們發出控制信號,驅動制冷電機轉動 }
如此循環判斷,驅動(冷熱電機)工作,達到空調的目的
在這里,有硬件,有程序,還有數據
硬件是工作的主體
程序硬件的靈魂
數據是程序的骨架
學單片機,要軟硬兼施。
|