第五個(gè)試驗(yàn)----跟我學(xué)作單片機(jī)運(yùn)算加減乘除法
看到這個(gè)題目,呵呵,可能好多人要打石頭哥的板子;7+5等于幾啊?這還用你教?但是單片機(jī)里,數(shù)字是用二進(jìn)制來(lái)表示的:這個(gè)就有一點(diǎn)拗口啦/雖然我們的教材到這里你可能還沒(méi)有學(xué)會(huì)一個(gè)指令。但是我的意思是首先作幾個(gè)試驗(yàn),提高大家對(duì)單片機(jī)的興趣。具體的指令太多了,不過(guò)還好,一般我們只需要記住常用的10-20條就夠了。OK,現(xiàn)在開(kāi)始動(dòng)手。
我們寫(xiě)入以下兩條指令
MOV P1,#23H
END
這個(gè)程序大家想必看得懂, 就是把23H這個(gè)16進(jìn)制數(shù)送往P1口(即P1.0--P1.7)匯編得到HEX燒寫(xiě)后然后把芯片插入實(shí)驗(yàn)卡座; 可以看到P1.0-1.7的狀態(tài)為;
P1.0 滅
P1.1 滅
P1.2 亮
P1.3 亮
P1.4 亮
P1.5 滅
P1.6 亮
P1.7 亮
(倚天開(kāi)發(fā)套件運(yùn)行照片)
為什么會(huì)這樣呢?
注意,因?yàn)槲覀兊腜1口的8個(gè)燈,都是一端接正5V,一端接端口的,那么呢端口為低電平0。發(fā)光管亮。高電平不亮。從高往低排列(從1.7---1.0)那么就是00100011。這個(gè)數(shù)字就是23H啦。什么?你不信?好了,請(qǐng)您接著看!00100011二進(jìn)制呢就是100011,按照數(shù)學(xué)的原則前面的0不算數(shù)。
跟我打開(kāi)電腦的程序/附件/計(jì)算器,然后把計(jì)算器設(shè)置為科學(xué)型。然后點(diǎn)擊二進(jìn)制,輸入100011
然后點(diǎn)擊一下十六進(jìn)制可以看到數(shù)字變成了23。這就是我們輸入的23H了,
練習(xí):25H+36H?
程序如下:
MOV R0,#25H;將立即數(shù)25送寄存器R0
MOV A,#36H;將立即數(shù)36送累加器A
ADD A,R0;將R0與A的內(nèi)容相加,結(jié)果在A
NOP;空操作
POV P1,A;將累加器A的值送P1口。
END;結(jié)束
將程序編譯以后燒入片子運(yùn)行;可以看到燈的狀態(tài)為
P1.0 滅
P1.1 滅
P1.2 亮
P1.3 滅
P1.4 滅
P1.5 亮
P1.6 滅
P1.7 亮
就是二進(jìn)制數(shù)01011011。我們還是用上面的計(jì)算器來(lái)看看結(jié)果對(duì)不對(duì):先將計(jì)算器設(shè)置為16進(jìn)制,輸入25+36=結(jié)果為5E
然后呢再點(diǎn)擊二進(jìn)制結(jié)果為1011110,可見(jiàn)結(jié)果完全正確〉
大家接著可以自行練習(xí)
減法指令SUBB
乘法指令 MUL
除法指令 DIV
的用法, 相信經(jīng)過(guò)這一節(jié)的學(xué)習(xí),大家對(duì)這幾個(gè)指令的印象會(huì)非常深刻了。同時(shí)讓我們對(duì)于計(jì)算機(jī)的數(shù)字有了一個(gè)
深刻的認(rèn)識(shí)。
評(píng)論