怎樣下載單片機(jī)參數(shù)
發(fā)布時(shí)間:2019-08-02 15:34:36來源:
代碼下載到單片機(jī)中的方法有兩種,一種在通過ISP(在線下載)下載到單片機(jī),另外一種比較常見的是通過編程器把代碼燒錄到單片機(jī)。
只要把匯編指令都寫出來了,你就可以到指令表中找到每一條指令所對應(yīng)的機(jī)器碼,然后你只要在機(jī)器碼后面加上操作數(shù)即可,比如,把一個(gè)30H單元送入A累加器;指令是這樣的:MOV A , 30H .那么你可以在指令表中查到執(zhí)行這條指的機(jī)器碼是1110 0101,但是由于這條指令后面的那個(gè)30H單元的數(shù)是根據(jù)你的要求在不斷的變的,機(jī)器沒規(guī)定你只能用30H單元,所以這個(gè)30的操作數(shù)必須由你填,它們和在一塊兒,這條指令的機(jī)器碼是:1110 0101 0011 0000用十六進(jìn)制來表示:E530,很明顯前兩位E5是機(jī)器指定的,而后兩位30是你自己加進(jìn)去的。共是十六位,占用兩個(gè)字節(jié)……。
你說的LED燈閃爍,不知是指的流水燈還是一只發(fā)光二極管在不停地閃爍?但不管是哪一種,有一點(diǎn)很重要。你在編寫此程序時(shí)必須要考慮延時(shí),因?yàn)?1單片機(jī)的晶體振蕩器比較低頻率可能是6M(具體數(shù)值我已記不清了)。也就是說單片機(jī)的每一個(gè)機(jī)器周期所占用的時(shí)間僅2微秒,如果你不考慮延時(shí)的話,那么你設(shè)計(jì)的那盞燈,它閃爍的結(jié)果是;亮2微秒,熄2微秒,也就是說每一秒鐘要亮暗50萬次,肉眼看這盞燈根本就不會(huì)有熄滅的時(shí)候,只是比不閃的燈暗了一半。我們生活中用的白熾燈,每秒鐘亮暗100次,你能感覺出燈泡有熄滅的時(shí)候嗎?更何況那是50萬次啊!
比如設(shè)計(jì)流水燈的程序,不妨可以這樣考慮它的算法。計(jì)數(shù)寄存器的高八位加上低八位,合起來也只有十六位,它能數(shù)的數(shù)比較大也就是65535,就算單片機(jī)用的是比較低的6M的晶體振蕩器,一個(gè)機(jī)器周期是12個(gè)機(jī)器節(jié)拍,所以,每一個(gè)機(jī)器周期占用2微秒時(shí)間,從0數(shù)到65535,僅用了131070微秒就數(shù)完了,約130毫秒,如果就按這個(gè)延時(shí)去改變燈的亮暗時(shí)間,那么這盞燈每秒鐘要亮暗3、4次,肉眼雖然能夠看到燈有熄滅的時(shí)間了。但是眼睛看這樣的燈總不會(huì)那么舒服,所以至少應(yīng)讓它延時(shí)到1秒鐘亮暗一次。為了計(jì)算方便,就讓計(jì)數(shù)器數(shù)100毫秒的時(shí)間吧!等計(jì)數(shù)器數(shù)到100毫秒后,就讓它再數(shù)一次,然后再數(shù)一次……,等它數(shù)滿5次后,這就是500毫秒(半秒鐘),然后,我們再去改變燈的亮暗狀態(tài)。
這個(gè)程序可以這樣來編:
MOV A ,#0FEH ;比較低位設(shè)為0
MOV P1, A ;點(diǎn)亮比較低位燈
MOV TCON,#10H ;T1為方式1,定時(shí)
BEGIN: MOV R7 ,#05H ;設(shè)循環(huán)5次
STAR: MOV TH1 #3CH ;計(jì)數(shù)器數(shù)100毫秒
MOV TL1 #AFH
SETB TR1 ;開始計(jì)數(shù)
ROU: JBC TF1 SE ;100毫秒到否?
SJMP ROU ;等待到100毫秒
SE: CLR TR1 ;關(guān)閉計(jì)數(shù)器
DJNZ R7 STAR ;5次循環(huán)到否? RL A ;把0向左移一位
MOV P1 ,A ;改下一只燈亮
SJMP BEGIN
51的單片機(jī)
ORG 0000H
MAIN:MOV R2,#2
L1:MOV R3,#200
L2:MOV R4,#200
L3:NOP
NOP
DJNZ R4,L3
DJNZ R3,L2
DJNZ R2,L1
CPL P1.7
JMP MAIN
END
Medwin編寫C51匯編
八只LED燈做流水燈實(shí)驗(yàn)
單片機(jī)在上電初始后,其各端口輸出為高電平。如果我們現(xiàn)在想讓接在P1.0口的LED1亮,那么我們只要把P1.0口的電平變?yōu)榈碗娖骄涂梢粤恕O胱孡ED1滅,LED0亮,只需將P1.0升高,P1.1變低,LED1就熄滅LED2隨后既點(diǎn)亮!依始類推如下所示8只LED變會(huì)一亮一暗的做流水燈了.
P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到開始、程序結(jié)束。
我們不能說P1.1你變低,它就變低了。因?yàn)閱纹瑱C(jī)聽不懂我們的漢語的,只能接受二進(jìn)制的“1、0......”代碼。我們又怎樣來用二進(jìn)制語議論使單片機(jī)按我們的意思去工作呢?為了讓單片機(jī)工作,只能將程序?qū)憺槎M(jìn)制代碼交給其執(zhí)行;早期單片機(jī)開發(fā)人員就是使用人工編寫的二進(jìn)制代碼交給單片機(jī)去工作的。今天,我們不必用煩人的二進(jìn)制去編寫程序,完全可以將我們?nèi)菀桌斫獾?ldquo;程序語言”通過“翻譯”軟件“翻譯”成單片機(jī)所需的二進(jìn)制代碼,然后交給單片機(jī)去執(zhí)行。這里的“程序語言”目前主要有匯編和C兩種;在這里我們所說的“翻譯”軟件,同行們都叫它為“編譯器”,將“程序語言”通過編譯器產(chǎn)生單片機(jī)的二進(jìn)制代碼的過程叫編譯。前面說到,要想使LED1變亮,只需將對應(yīng)的單片機(jī)引腳電平變?yōu)榈碗娖骄涂梢粤恕,F(xiàn)在讓我們將上面提到的8只LED流水燈實(shí)驗(yàn)寫為匯編語言程序。