單片機(jī)程序的作用是什么?如何編寫?如何寫入單片機(jī)?
單片機(jī)程序的用途是讓單片機(jī)“聽話”,按人們所預(yù)定的設(shè)計(jì)完成一系列動(dòng)作,最終實(shí)現(xiàn)一個(gè)特定的功能。
例如使用單片機(jī)控制流水燈,接通電源后,第一次燈亮,然后延時(shí)一段時(shí)間,第二次燈亮,然后延時(shí)一段時(shí)間,第三次燈亮……,延時(shí)一段時(shí)間后又回到第一次燈亮,如此循環(huán)不已。這里就有這樣的一些問題:第一次亮幾盞燈、延時(shí)多少時(shí)間、一個(gè)循環(huán)中設(shè)置多少次不同的燈亮的情況……,這些決定了流水燈的花樣,流動(dòng)的速度,而這些,單片機(jī)顯然沒有自我判斷能力,必須依靠人們給它“布置”任務(wù),而它則是按人們的設(shè)計(jì)依次執(zhí)行。
要讓單片機(jī)“聽話”,就要用單片機(jī)能夠聽懂的語言發(fā)布命令,單片機(jī)能夠聽懂的語言稱之為“指令”。任何一種型號(hào)單片機(jī)能夠接受的指令都是有限的,51單片機(jī)的指令條數(shù)為111條,而PIC單片機(jī)的指令僅有35條。每一條指令完成一個(gè)最基本的動(dòng)作,人們?yōu)榱艘瓿梢粋(gè)特定的功能,就要將這些指令排列組合,成為一個(gè)指令序列,這就是程序。
指令的表示形式有兩種:機(jī)器語言和匯編語言。以51為例,如果要讓P1.0引腳變?yōu)榈碗娖,用機(jī)器語言來表示就是 C2H 90H,將這兩個(gè)數(shù)放進(jìn)單片機(jī)的程序存儲(chǔ)器中,單片機(jī)執(zhí)行后,就可以讓P1.0引腳變?yōu)榈碗娖搅?而要讓P1.0引腳變?yōu)楦唠娖剑脵C(jī)器語言來表示就是D2H,90H。至于為什么是這兩個(gè)數(shù)字,大家沒必要追究,這是設(shè)計(jì)這塊芯片的設(shè)計(jì)工程師規(guī)定的,我們不能更改,只能學(xué)習(xí)。
C2H,90H就是一條指令,顯然這樣的指令形式是很難記憶的,編程也非常困難,于是人們使用了“助記符”來代替這些數(shù)字。例如C2H,90H的助記符是CLR P1.0,而D2H,90H的助記符是SETB P1.0,由于助記符采用了英語字母的縮寫,有一定含義,因此比數(shù)字形式的指令易記、易用。使用助記符形式的指令來編寫程序就稱之為“匯編語言源程序”。但是匯編語言源程序是沒有辦法直接送到單片機(jī)內(nèi)部去的,使用助記符形式的指令編寫的程序最終還是要變成為諸如:C2H,90H,D2H,90H,這種形式的指令才能被送入單片機(jī)的程序存儲(chǔ)器。將助記符形式的指令變?yōu)閿?shù)字形式的指令的過程稱之“匯編”。匯編有兩種方法,一種是“手工匯編”,即人們通過查表的形式找到所寫匯編指令的數(shù)字形式然后寫下來;另一種是“機(jī)器匯編”,即編寫好匯編語言源程序以后,使用一個(gè)計(jì)算機(jī)軟件對(duì)這些源程序進(jìn)行處理,從而得到數(shù)字形式的指令序列,這個(gè)指令序列通常被稱為“機(jī)器碼”,即可以直接被機(jī)器所執(zhí)行的代碼。
機(jī)器匯編后得到的數(shù)字形式的指令序列以一個(gè)文件的形式保存在磁盤上,這個(gè)文件的擴(kuò)展名一般是HEX,即人們常說的HEX文件。得到了HEX文件后,就可以將其寫入程序存儲(chǔ)器中了。要將程序?qū)懭胄酒ǔP枰粋(gè)稱之為“編程器”的專用設(shè)備,在計(jì)算機(jī)上運(yùn)行與之配套的編程軟件,然后在這個(gè)軟件中打開HEX文件,即可將其寫入芯片中。隨著技術(shù)的發(fā)展,編程方式越來越多,但總的概念是這樣的,具體的細(xì)節(jié),將在另一個(gè)問題“單片機(jī)編程器是什么”中回答。
編輯:admin 最后修改時(shí)間:2018-05-08