單片機有了硬件后,要真正地能進(jìn)行計算和控制,還必須有軟件的配合。軟件主要指的是各種程序。只有將各種正確的程序“灌入”(存入)單片機(http://www.cy8cjiemi.com),它才能有效地 工作。單片機所以能自動(dòng)地進(jìn)行運算和控制,正是由于人把實(shí)現計算和控制的步驟一步步地用命令的形式,即一條條指令預先存入到存貯器中,單片機在CPU的控制下,將指令一條條地取出來(lái),并加以翻譯和執行。就以?xún)蓚(gè)數相加這一簡(jiǎn)單的運算來(lái)說(shuō),當需要運算的數已存入存貯器后,還需要進(jìn)行以下幾步: 第一步:把第一個(gè)數從它的存貯單元中取出來(lái),送至運算器。 第二步:把第二個(gè)數從它所在的存貯單元中取出來(lái),送至運算器; 第三步:相加; 第四步:把相加完的結果,送至存貯器中指定的單元。 所有這些取數、送數、相加、存數等等都是一種操作,我們把要求計算機執行的各種操作用命令的形式寫(xiě)下來(lái),這就是指令。但是怎樣才能辨別和執行這些操作 呢?這是在設計單片機時(shí)由設計人員賦予它的指令系統所決定的。一條指令,對應著(zhù)一種基本操作;單片機所能執行的全部指令,就是該單片機的指令系統,不同種 類(lèi)的單片機,其指令系統亦不同。 使用單片機時(shí),事先應當把要解決的問(wèn)題編成一系列指令。這些指令必須是選定的單片機能識別和執行的指令。單片 機用戶(hù)為解決自己的問(wèn)題所編的指令程序,稱(chēng)為源程序。指令通常分為操作碼和操作數兩大部分。操作碼表示計算機執行什么操作,即指令的功能;操作數表示參加 操作的數或操作數所在的地址(即操作數所存放的地方編號)。因為單片機是一種可編程器件,只“認得”二進(jìn)碼(0、1)。要單片機運作,單片機系統中 的所有指令,都必須以二進(jìn)制編碼的形式來(lái)表示。例如,在Intel公司的MCS-51系列單片機中,從存貯器中取出一數到CPU中的累加器的指令代碼為 74H,累加器內容加立即數的代碼為24H,再加上立即數代碼,累加器送數到內部RAM存貯器的代碼為F6H~F7H等。這些指令是用十六進(jìn)制表示二進(jìn)制 的機器碼。 MCS-51單片機的字長(cháng)為8位,有時(shí),要完成某些操作用一個(gè)字節尚不能充分表達。所以,在指令系統中有單字節指令,也有多字節指 令。機器碼是由一連串的0和1組成,沒(méi)有明顯的特征,不好記憶,不易理解,易出錯。所以,直接用它來(lái)編寫(xiě)程序十分困難。因而,人們就用一些助記符--通常 是指令功能的英文縮寫(xiě)來(lái)代替操作碼,如MCS-51中數的傳送常用MOV(Move的縮寫(xiě))、加法用Add(Addition的縮寫(xiě))來(lái)作為助記符。這 樣,每條指令有明顯的動(dòng)作特征,易于記憶和理解,也不容易出錯。用助記符來(lái)編寫(xiě)的程序稱(chēng)為匯編語(yǔ)言程序。但是,助記符編寫(xiě)的程序便于人理解,可單片機卻只 認識二進(jìn)制機器代碼,因此,為了讓單片機能“讀懂”匯編語(yǔ)言程序必須再轉換成由二進(jìn)制機器碼構成的程序,這種轉換過(guò)程,就稱(chēng)為“匯編”。匯編可借助于人工 查表法來(lái)實(shí)現,也可借助PC機通過(guò)所謂“交叉匯編程序”來(lái)完成。由機器碼構成的用戶(hù)程序一旦“進(jìn)入”了單片機,再“啟動(dòng)”單片機,就可讓它執行輸入程序所 規定的任務(wù)。 |