久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

立即注冊 登錄
返回首頁

uid:126287的個人空間

日志

章4 80C51的匯編語言程序設計

已有 859 次閱讀2016-6-11 22:34

4   80C51的匯編語言程序設計

 

180C51單片機匯編語言有何特點?

答:

匯編語言結構緊湊、靈活,匯編成的目標程序效率高,具有占存儲空間少、運行速度快、實時性強等優點。它是面向機器的語言,對于單片機硬件的操作直接、方便,有利于初學者對單片機結構的認知。

但它與高級語言相比移植性不好、編程復雜、對編程人員的基礎要求高。

2.利用80C51單片機匯編語言進行程序設計的步驟如何?

答:

一、任務分析

首先,要對單片機應用系統的設計目標進行深入分析,明確系統設計任務:功能要求和技術指標。然后對系統的運行環境進行調研。這是應用系統程序設計的基礎和條件。

二、算法設計

經過任務分析和環境調研后,已經明確的功能要求和技術指標可以用數學方法(或模型)來描述,進而把一個實際的系統要求轉化成由計算機進行處理的算法。并對各種算法進行分析比較,并進行合理的優化。

三、流程描述

程序的總體構建。先要確定程序結構和數據形式,資源分配和參數計算等。然后根據程序運行的過程,規劃程序執行的邏輯順序,用圖形符號將程序流程繪制在平面圖上。應用程序的功能通常可以分為若干部分,用流程圖將具有一定功能的各部分有機地聯系起來。

流程圖可以分為總流程圖和局部流程圖。總流程圖側重反映程序的邏輯結構和各程序模塊之間的相互關系;局部流程圖反映程序模塊的具體實施細節。

3.常用的程序結構有哪幾種?特點如何?

答:

順序程序:無分支、無循環結構的程序,其執行流程是依指令在存儲器中的存放順序進行的;

分支程序:可以改變程序的執行順序;

循環程序:按某種控制規律重復執行的程序,控制一部分指令重復執行若干次,以便用簡短的程序完成大量的處理任務。

4子程序調用時,參數的傳遞方法有哪幾種?

答:

利用累加器或寄存器;

利用存儲器;

利用堆棧。

5什么是偽指令?常用的偽指令功能如何?

答:

偽指令是匯編程序能夠識別并對匯編過程進行某種控制的匯編命令。常用的偽指令包括:

ORG功能是向匯編程序說明下面緊接的程序段或數據段存放的起始地址

END功能是結束匯編

DB功能從標號指定的地址單元開始,在程序存儲器中定義字節數據

DW功能從標號指定的地址單元開始,在程序存儲器中定義字數據空間

EQU功能是將表達式的值或特定的某個匯編符號定義為一個指定的符號名

BIT功能位地址賦給指定的符號名

6設被加數存放在內部RAM20H21H單元,加數存放在22H23H單元,若要求和存放在24H25H中,試編寫出16無符號數相加的程序(采用大端模式存儲)

答:程序如下:

ORG   0000H

MOV   R0,21H

MOV   R1,23H

MOV   A,@R0

ADD   A,@R1

MOV   25H,A

DEC    R0

DEC    R1

MOV   A,@R0

ADDC  A,@R1

MOV   24H,A

SJMP   $

END

7編寫程序,把外部RAM1000H~101FH的內容傳送到內部RAM30H~4FH中。

答:

ORG  0000H

      MOV  DPTR,#1000H

      MOV  R0,#30H

      MOV  R7,#32

LOOP:MOVX  A,@DPTR

      MOV  @R0,A

      INC  R0

      INC  DPTR

      DJNZ  R7,LOOP

      RET

8編寫程序,實現雙字節無符號數加法運算,要求 R0R1+R6R760H61H

答:

ORG  0000H

MOV   A,R1

ADD   A,R7

MOV   61H,A

MOV   A,R0

      ADDC  A,R6

      MOV   60H,A

      SJMP  $

      END

980C51的晶振頻率為6MHz,試計算延時子程序的延時時間。

DELAY:MOV   R7,#0F6H

     LP:MOV   R6,#0FAH

        DJNZ  R6,$

        DJNZ  R7,LP

        RET

答:延時時間: 2μs*{[1+(1+2*250+2*246)+2]+2}=0.247486秒(含調用指令2個機器周期)

 

10在內部RAM 30H~37H單元存有一組單字節符號數要求找出最大數存入BIG單元。試編寫程序實現。

答:

       ORG   0000H

       BIG  DATA  2FH

       ONE  DATA  2AH

       TWO  DATA  2BH

 

START:MOV   R7,#7     ;比較次數

      MOV   R0,#30H  

 LOOP:MOV   A,@R0    

      MOV   ONE,A   

      INC   R0

      MOV   TWO,@R0 

      CLR   C

      SUBB  A,@R0  

      JC    NEXT        ;ONE小,TWO大繼續比下一對數

      MOV   @R0,ONE     ;ONE大放后面(交換)

      DEC   R0              

      MOV   @R0,TWO     ;TWO小放前面

      INC   R0          ;

 NEXT:DJNZ  R7,LOOP

      MOV   BIG,37H

      SJMP  $

      END

11編寫程序,把累加器A中的二進制數變換成3BCD碼,并將百、十、個位數分別存放在內部RAM50H51H52H中。

答:單字節二進制數轉換為壓縮的BCD僅需要2個字節;在將壓縮的BCD碼拆分存于3個單元。

         org   0

         MOV   52H,#0

         MOV   51H,#0

         MOV   50H,#0

         MOV   A,#0FDh

         LCALL DCDTH

         SJMP  $

 

   DCDTH:MOV   R7,#8

         MOV   R0,A   ;暫存于R0  

    LOOP:CLR   C    

         MOV   A,R0

         RLC   A

         MOV   R0,A

         MOV   R1,#51H;

        

         MOV   A,@R1  ;  

         ADDC  A,@R1  ;

         DA    A      ;

         MOV   @R1,A  ;

         DEC   R1

         MOV   A,@R1  

         ADDC  A,@R1  

         DA    A      

         MOV   @R1,A   

         DJNZ  R7,LOOP 

         INC   R1      ;50H已是結果,R1指向51H51H單元需拆分

         MOV   A,#00H

         XCHD  A,@R1

         MOV   52H,A

         MOV   A,@R1

         SWAP  A

         MOV   @R1,A         

         RET

         END

12編寫子程序,將R1中的2個十六進制數轉換為ASCII碼后存放在R3R4中。

答:

      ORG     0

      MOV     R1,#5BH   

      MOV     A,R1

      ANL     A,#0F0H

      SWAP    A

      ACALL   ASCII

      MOV     R3,A   

      MOV     A,R1

      ANL     A, #0FH

      ACALL   ASCII

      MOV     R4, A

      SJMP     $

ASCII:PUSH    ACC

      CLR     C

      SUBB    A, #0AH

      POP     ACC

      JC      LOOP

      ADD     A, #07H

LOOP: ADD     A, #30H

      RET

      END

13編寫程序,求內部RAM50H~59H十個單元內容的平均值,并存放在5AH單元。

答:

      ORG   0000H

      MOV   R7,#10

      MOV   R0,#50H

      MOV   B,#10

      CLR   C

      CLR   A

 LOOP:ADDC  A,@R0

      INC   R0

      DJNZ  R7,LOOP

      DIV   AB

      MOV   5AH,A

      SJMP  $

     END

144.10所示,編制程序實現:上電后顯示“P”,有鍵按下時顯示相應的鍵號“0~7

答:

實現程序如下:

TEMP  EQU   30H

      ORG   0000H

      JMP   START

    ORG   0100H

START:MOV   SP,#5FH

      MOV   P0,#8CH          ;正序顯示"P"

      MOV   P3,#0FFH         ;輸入方式

      CLR   CY

NOKEY:MOV   A,P3

      CPL   A

      JZ    NOKEY            ;無鍵按下

      MOV   TEMP,P3          ;有鍵按下

      CALL  D10ms

      MOV   A,P3

      CJNE  A,TEMP,NOKEY       ;去抖動

      MOV   R2,#0            ;鍵號計數器復位

      MOV   A,TEMP

   LP:RRC   A

     JNC   DONE

      INC   R2

      SJMP  LP

  DONE:MOV   A,R2

      MOV   DPTR,#CODE_P0

      MOVC  A,@A+DPTR

      MOV   P0,A

     JMP   NOKEY

D10ms:MOV   R5,#10    ;10MS

D1ms:MOV   R4,#249   

     DL:NOP

        NOP

DJNZ  R4,DL

        DJNZ  R5,D1ms

        RET

 CODE_P0:

        DB    0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

        DB    80H,90H,88H,83H,0C6H,0A1H,86H,8EH

        END    


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 中文字幕精品视频 | 日本不卡一区二区三区 | 伊人网在线播放 | 精品国产乱码久久久久久蜜臀 | 精品国产一区二区三区久久影院 | 国产成人精品免费视频大全最热 | 亚洲免费在线观看 | 视频一区在线观看 | 毛片免费在线观看 | 在线视频三区 | 精品免费观看 | 国产精品区二区三区日本 | 国产韩国精品一区二区三区 | av天空 | 精品动漫一区 | a级黄色片在线观看 | 久久99视频免费观看 | 免费视频一区二区三区在线观看 | 99精品欧美一区二区三区综合在线 | 国产精品久久一区二区三区 | 欧美极品视频 | 欧美一区 | 亚洲国产成人精品久久久国产成人一区 | 久久久国产精品 | 国产精品久久在线观看 | 91xxx在线观看 | 一区二区精品电影 | 日韩欧美亚洲 | 婷婷99| 国产精品成人国产乱一区 | 色婷婷亚洲国产女人的天堂 | 欧美不卡一区二区 | 国产精品国产三级国产aⅴ原创 | 国产精品久久久久一区二区 | 高清视频一区二区三区 | 亚洲精品视频在线看 | 亚洲成人动漫在线观看 | 国产精品一区久久久久 | 欧美一区二区黄 | 天天综合操 | 综合久久av |