<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)的“語(yǔ)言”規(guī)范

          單片機(jī)的“語(yǔ)言”規(guī)范

          作者: 時(shí)間:2013-01-26 來(lái)源:網(wǎng)絡(luò) 收藏
            我在多年教學(xué)中發(fā)現(xiàn),的學(xué)習(xí),還是以編程為難點(diǎn)。翻開(kāi)現(xiàn)在的教材,硬件部分與知識(shí)講解部分基本上都是大同小異,唯有程序編寫(xiě)部分,真可謂是五花八門(mén),異彩紛呈。試想一下,面對(duì)五花八門(mén)的程序編寫(xiě)資料,學(xué)生們又如何能知道從哪兒下手呢?這也難怪多數(shù)同學(xué)認(rèn)為,編程只是個(gè)別學(xué)生的事情,與他們無(wú)關(guān)了。

            這是在學(xué)校里面的教學(xué)情況,社會(huì)上學(xué)習(xí)單片機(jī)的情況又怎樣呢?隨著電子元器件技術(shù)的發(fā)展,硬件電路的制作越來(lái)越簡(jiǎn)單容易,有些器件可以直接把管腳焊接在一起,甚至無(wú)需用電路板連接即可使用,讓大家感到頭疼的還是編程。

            尤其是業(yè)余單片機(jī)愛(ài)好者,沒(méi)有受過(guò)專(zhuān)業(yè)的訓(xùn)練,大多數(shù)情況下是使用別人寫(xiě)好的程序,最多是在別人的程序上修改。我們看有關(guān)單片機(jī)制作的文章,內(nèi)容大都是介紹原理,說(shuō)到編程,往往只是說(shuō)可以到哪兒下載。說(shuō)實(shí)在的,就是出現(xiàn)在文章里,懂得的人不必去看,不懂的人看也看不懂,也是費(fèi)力不討好。

            難道學(xué)習(xí)編程真的是"無(wú)章可循",教編程只能是"即興發(fā)揮"式的嗎?經(jīng)過(guò)多年的教學(xué)實(shí)踐,我摸索出了一種編程的方法,取得了很好的教學(xué)效果,我暫且把它稱(chēng)作--單片機(jī)的"語(yǔ)言"。

            單片機(jī)如何"說(shuō)話"單片機(jī)的匯編語(yǔ)言,既然稱(chēng)作"語(yǔ)言",它跟我們的自然語(yǔ)言是有相似之處的。比如它有語(yǔ)句,語(yǔ)句要符合語(yǔ)法規(guī)則。

            說(shuō)到""二字,有的朋友會(huì)說(shuō),既然是"語(yǔ)言",只要語(yǔ)句正確,語(yǔ)法正確,想怎么說(shuō)就怎么說(shuō),想怎么寫(xiě)就怎么寫(xiě),只要編譯通過(guò),功能能夠?qū)崿F(xiàn)就可以,難道還要有什么""不成?答案是,當(dāng)然需要。我們?cè)趯W(xué)習(xí)自然語(yǔ)言時(shí)也是要有規(guī)范的。語(yǔ)文課本里的文章,我們不是把它們叫做"范文"嗎。當(dāng)然,自然語(yǔ)言的使用可以非常靈活自由,但也要看是哪一類(lèi)的文章。像詩(shī)歌、散文這類(lèi)的文章,語(yǔ)言的使用可以非常靈活,而像一些應(yīng)用文,語(yǔ)言的使用就要受到限制,如我們學(xué)習(xí)寫(xiě)請(qǐng)假條,尋人啟事,會(huì)議通知之類(lèi)的文章,就要遵守一定的格式。我們?cè)谶M(jìn)行應(yīng)用文寫(xiě)作的時(shí)候,只有遵守這些"格式",才能寫(xiě)出合格的應(yīng)用文來(lái)。

            匯編語(yǔ)言是我們跟單片機(jī)打交道所使用的語(yǔ)言,我們使用匯編語(yǔ)言跟單片機(jī)"說(shuō)話",讓它聽(tīng)從我們的指揮,首先是讓它能聽(tīng)懂我們的"說(shuō)話",那就是要正確使用指令。單片機(jī)的"大腦"還沒(méi)有我們?nèi)四X這么聰明,我們?cè)谡f(shuō)話時(shí)能揣測(cè)對(duì)方的意思,而單片機(jī)只能?chē)?yán)格按照我們的約定來(lái)執(zhí)行我們的命令。其次是如何"說(shuō)話".匯編語(yǔ)言屬于工程語(yǔ)言,工程語(yǔ)言的精髓就是規(guī)范。它的規(guī)則更加嚴(yán)謹(jǐn),書(shū)寫(xiě)要求更加嚴(yán)格。越是規(guī)范嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言,學(xué)習(xí)起來(lái)就越應(yīng)該有法可依。而找到了這個(gè)"法",我們的學(xué)習(xí)就會(huì)向前邁出一大步。匯編語(yǔ)言里有什么樣的規(guī)范呢?

            在進(jìn)行匯編語(yǔ)言的教學(xué)時(shí),我們首先向?qū)W生們強(qiáng)調(diào),匯編語(yǔ)言程序由三部分組成:①預(yù)定義部分;②主程序部分;③子程序部分。這就是匯編語(yǔ)言程序編寫(xiě)的規(guī)范格式。當(dāng)然,有些簡(jiǎn)單的程序,可能會(huì)缺少某一部分,但是我們還是從一開(kāi)始就向?qū)W生們強(qiáng)調(diào),簡(jiǎn)單的程序也要盡量寫(xiě)出這三部分。因?yàn)殡S著程序內(nèi)容的增加,這三部分的結(jié)構(gòu)與層次的重要意義就會(huì)越發(fā)地顯現(xiàn)出來(lái)。下面我們以一個(gè)最簡(jiǎn)單的單片機(jī)控制電路為例子,介紹這種規(guī)范程序的寫(xiě)法,并逐一介紹每部分的內(nèi)容與含義。

            圖1是單片機(jī)系統(tǒng)的三個(gè)管腳p0.1,p0.2,p0.3與三個(gè)發(fā)光二極管的電路連接圖。從圖1中我們可以看到,只要控制單片機(jī)p0這三個(gè)腳的電位,我們就可以隨意控制這三個(gè)LED燈的亮滅。我們的控制要求是:LED1亮1s滅1s,接著LED2亮1s滅1s,接著LED3亮1s滅1s,結(jié)束。

          單片機(jī)的“語(yǔ)言”規(guī)范

          圖1 單片機(jī)系統(tǒng)與LED的電路連接圖

            電路功能很簡(jiǎn)單,編程思路可以這樣來(lái)敘述。如圖2。

          單片機(jī)的“語(yǔ)言”規(guī)范

          圖2 電路編輯思路

            程序編寫(xiě)也很簡(jiǎn)單,大多數(shù)人認(rèn)為程序可以直接寫(xiě)出來(lái),請(qǐng)看下面的程序示例一。

            //程序功能:三個(gè)LED燈依次各亮滅1s

            start: clr p0.0 //點(diǎn)亮第一個(gè)LED燈

            acall delay1s

            setb p0.0 //熄滅第一個(gè)LED燈

            acall delay1s

            clr p0.1 //點(diǎn)亮第二個(gè)LED燈

            acall delay1s

            setb p0.1 //熄滅第二個(gè)LED燈

            acall delay1s

            clr p0.2 //點(diǎn)亮第三個(gè)LED燈

            acall delay1s

            setb p0.2 //熄滅第三個(gè)LED燈

            acall delay1s

            ajmp $ //待機(jī)狀態(tài)

            delay1s: //延時(shí)1s子程序

            mov r5,#50

            d3: mov r6,#100

            d2: mov r7,#100

            d1: djnz r7,d1

            djnz r6,d2

            djnz r5,d3

            ret

            end //程序結(jié)束


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();