在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機流水燈設計方法

            單片機流水燈設計方法

            作者: 時間:2013-01-15 來源:網(wǎng)絡 收藏
            實現(xiàn)8個LED源程序 liu01.asm

                ;----- 主程序開始 -----
            START: CLR   P1.0       ;P1.0輸出低電平,使LED1點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.0       ;P1.0輸出高電平,使LED1熄滅
                CLR   P1.1       ;P1.1輸出低電平,使LED2點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.1       ;P1.1輸出高電平,使LED2熄滅
                CLR   P1.2       ;P1.2輸出低電平,使LED3點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.2       ;P1.2輸出高電平,使LED3熄滅
                CLR   P1.3       ;P1.3輸出低電平,使LED4點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.3       ;P1.3輸出高電平,使LED4熄滅
                CLR   P1.4       ;P1.4輸出低電平,使LED5點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.4       ;P1.4輸出高電平,使LED5熄滅
                CLR   P1.5       ;P1.5輸出低電平,使LED6點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.5       ;P1.5輸出高電平,使LED6熄滅
                CLR   P1.6       ;P1.6輸出低電平,使LED7點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.6       ;P1.6輸出高電平,使LED7熄滅
                CLR   P1.7       ;P1.7輸出低電平,使LED8點亮
                ACALL  DELAY      ;調用延時子程序
                SETB  P1.7       ;P1.7輸出高電平,使LED8熄滅
                ACALL  DELAY      ;調用延時子程序
                AJMP  START      ;8個LED流了一遍后返回到標號START處再循環(huán)

                ;----- 延時子程序 -----
            DELAY: MOV   R0,#255     ;延時一段時間
            D1:   MOV   R1,#255
                DJNZ  R1,$
                DJNZ  R0,D1
                RET            ;子程序返回

                END           ;程序結束

              在上面主程序中用到了五條指令:CLR、ACALL、SETB、LJMP、END。

              CLR: 是將其后面指定的位清為0,程序中使對應端口輸出低電平
              ACALL:是子程序調用指令,程序中調用了DELAY延時子程序
              SETB:是將其后面指定的位置成1,程序中使對應端口輸出高電平
              AJMP:是無條件跳轉指令,意思是:跳轉到指定的標號處繼續(xù)運行
              END: 是程序結束的偽指令,意思是告訴編譯器,程序到此結束。偽指令只告訴編譯器此程序到此有何要求或條件,它不參與和影響程序的執(zhí)行。

              在上面源程序中"ACALL  DELAY"指令的作用是調用DELAY延時子程序。為什么要使用這指令呢?如果不用該指令能夠實現(xiàn)"流水"效果嗎?答案是肯定的,一定要用該指令才能看到我們需要的"流水"效果。如果不用該指令,則由于8個LED發(fā)光與熄滅的時間都很短,我們肉眼無法看到LED的熄滅與點亮,憑我們肉眼看到的是LED1~LED8都同時亮(半亮),而看不到“流水”效果的!注:初學者可以將上面源程序中所有"ACALL  DELAY"指令行刪除后再編譯后燒寫到進行驗證一下。

              產(chǎn)生這種現(xiàn)象主要是因為執(zhí)行每條指令的時間很短,我們知道實驗板上的時鐘高達11.0592MHz,在這個時鐘信號(即晶體振蕩信號)下,一個“機器周期”僅大約1.08uS(微秒)。本程序中我們用到的SETB P.x和CLR P.x均屬于單周期指令,也就是說,執(zhí)行一句 SETB P.x 用時僅1.08uS(微秒),CLR P.x 也是1.08uS(微秒);也就是點亮和熄滅時間都為1.08uS(微秒),在如此高速的流水速度下,8個LED發(fā)光與熄滅的時間都很短,當然憑我們的肉眼看不到“流水”效果了!

              這里需要說明的是,按匯編語法要求,所編制的程序(下稱源程序)之格式和書寫要求必須依下列原則:
              1、源程序必須為純文本格式文件,如用Windows“附件”中的“記事本”編寫的文本文件或用UltraEdit文本編輯器編輯;
              2、源程序的擴展名應是 *.ASM;
              3、一行只能寫一條語句,以回車作為本句的結束,每一語句行長度應少于80個字符(即40個漢字)。
              4、每行的格式應為:標號: 命令 參數(shù) ;注釋 。即一行由四部份組成,各部份的順序不能搞錯,依實際要求可以缺省其中的一部份或幾部份,甚至全部省去,即空白行。需要使用標號時標號后面必須有“:”(冒號),而命令語句和參數(shù)之間必須用空格分開,如果命令有多個參數(shù),則參數(shù)與參數(shù)之間必須用“,”(逗號)分開,需要注釋時注釋前必須用“;”(分號),“;”后面的語句可以寫任何字符,包括漢字用于解釋前面的匯編語句,它將不參與匯編,不生成代碼。由于匯編程序對我們還不直觀,所以在編寫源程序時,應當養(yǎng)成多寫注釋的習慣,這樣有助于今后源程序的閱讀和維護。

              標號是標志程序中某一行的符號名,編譯后標號的數(shù)值就是標號所在行代碼的地址。在宏匯編ASM51中標號的長度不受限制,但標號中不能包含‘:'或其它的一些特殊符號,也不能用漢字,可以用數(shù)字作標號,但必須用字母開頭。當標號作參數(shù)用(如標號作轉移地址),在命令后面出現(xiàn)時,必須舍去‘:'(如上面程序中的 AJMP START中的START是不能再有:)。每行只能有一個標號,一個標號只能用在一處,如果有兩行用了同一個標號,則匯編時就會出錯。由于標號的長度沒有限制,可以用有意義的英文或漢語拼音來說明行,使源程序讀起來更方便。在源程序中的字母不區(qū)分大小寫,也就是說 start 和 START 是一樣的,請不要用大小寫方式去區(qū)分不同的標號。

              好啦!我們知道了程序的規(guī)則,現(xiàn)在就動手編輯源程序吧。馬上啟動Keil單片機集成開發(fā)環(huán)境,建立新工程liu01.UV2,將上面的源程序liu01.asm導入到工程中,設置好Keil工程的編譯參數(shù),編譯得到HEX格式的目標文件liu01.hex,用 ISP編程器 將目標文件liu01.hex燒寫到AT89S51單片機中,接下來就是將燒寫好的AT89S51從編程器上取下,放到“ S51增強型單片機實驗板 ”上通電,我們就看到了LED1~LED8的"流水"效果了。



            評論


            相關推薦

            技術專區(qū)

            關閉