欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4215|回復: 3
打印 上一主題 下一主題
收起左側

51單片機匯編源程序包 帶詳細注釋

[復制鏈接]
跳轉到指定樓層
樓主

51單片機常用的匯編程序,每個程序都帶詳細的注釋
所有資料下載:
51單片機匯編源程序包 帶詳細注釋.rar (222.66 KB, 下載次數: 46)

實例1:
  1. ;************************;
  2. ;八路模擬數據采集顯示電路;
  3. ;     2001.10.08編      ;
  4. ;************************;
  5. ;
  6. ;70H-77H存放采樣值,78H-7BH存放顯示數據,依次為個位、十位、百位、通道標志
  7. ;
  8. ;*************************************
  9. ;*                                   *
  10. ;*      主程序和中斷程序入口         *
  11. ;*                                   *
  12. ;*************************************
  13. ORG     0000H    ;程序執行開始地址
  14. LJMP    START    ;跳至START執行
  15. ORG     0003H    ;外中斷0中斷入口地址
  16. RETI             ;中斷返回(不開中斷)
  17. ORG     000BH    ;定時器T0中斷入口地址
  18. RETI             ;中斷返回(不開中斷)
  19. ORG     0013H    ;外中斷1中斷入口地址
  20. RETI             ;中斷返回(不開中斷)
  21. ORG     001BH    ;定時器T1中斷入口地址
  22. RETI             ;中斷返回(不開中斷)
  23. ORG     0023H    ;串行口中斷入口地址
  24. RETI             ;中斷返回(不開中斷)
  25. ORG     002BH    ;定時器T2中斷入口地址
  26. RETI             ;中斷返回(不開中斷)
  27. ;
  28. ;*************************************
  29. ;*                                   *
  30. ;*       初始化程序中的各變量        *
  31. ;*                                   *
  32. ;*************************************
  33. CLEARMEMIO:     CLR     A           ;
  34.                 MOV     P2,A        ;P2口置0
  35.                 MOV     R0,#70H     ;內存循環清0(70H-7BH)
  36.                 MOV     R2,#0CH     ;
  37. LOOPMEM:        MOV     @R0,A       ;
  38.                 INC     R0          ;
  39.                 DJNZ    R2,LOOPMEM  ;
  40.                 MOV     A,#0FFH     ;
  41.                 MOV     P0,A            ;P0、P1、P3端口置1
  42.                 MOV     P1,A            ;
  43.                 MOV     P3,A            ;
  44.                 RET                     ;子程序返回
  45. ;
  46. ;*************************************
  47. ;*                                   *
  48. ;*            主 程 序                 *
  49. ;*                                   *
  50. ;*************************************
  51. START:          LCALL   CLEARMEMIO      ;初始化
  52. MAIN:           LCALL   DISPLAY         ;顯示數據一次
  53.                 LCALL   TEST            ;測量一次
  54.                 AJMP        MAIN            ;返回MAIN循環
  55.                 NOP                        ;PC值出錯處理
  56.                 NOP                     ;空操作
  57.                 NOP                     ;空操作
  58.                 LJMP        START           ;重新復位起動
  59. ;
  60. DISPLAY:        MOV     R3,#08H         ;8路信號循環顯示控制
  61.                 MOV     R0,#70H         ;顯示數據初址(70H-77H)
  62.                 MOV     7BH,#00H        ;顯示通道路數(0-7)
  63. DISLOOP1:       MOV     A,@R0           ;顯示數據轉為三位十進制BCD碼存入
  64.                 MOV     B,#100          ;7AH、79H、78H顯示單元內
  65.                 DIV     AB              ;顯示數據除100
  66.                 MOV     7AH,A           ;商入7AH
  67.                 MOV     A,#10           ;A放入數10
  68.                 XCH     A,B             ;余數與數10交換
  69.                 DIV     AB              ;余數除10
  70.                 MOV     79H,A           ;商入79H
  71.                 MOV     78H,B           ;余數入78H
  72.                 MOV     R2,#0FFH       ;每路顯示時間控制 4MS*255
  73. DISLOOP2:       LCALL   DISP           ;調四位LED顯示程序
  74.                 DJNZ    R2,DISLOOP2    ;每路顯示時間控制
  75.                 INC     R0             ;顯示下一路
  76.                 INC     7BH            ;通道顯示數值加1
  77.                 DJNZ    R3,DISLOOP1    ;8路顯示未完轉DISLOOP1再循環
  78.                 RET                    ;8路顯示完子程序結束
  79. ;
  80. ; LED共陽顯示子程序,顯示內容在78H-7BH,數據在P1輸出,列掃描在P3.0-P3.3口
  81. DISP:           MOV     R1,#78H       ;賦顯示數據單元首址
  82.                 MOV     R5,#0FEH      ;掃描字
  83. PLAY:           MOV     P1,#0FFH                ;關顯示
  84.                 MOV     A,R5                    ;取掃描字
  85.                 ANL     P3,A              ;開顯示
  86.                 MOV    A,@R1              ;取顯示數據
  87.                 MOV    DPTR,#TAB          ;取段碼表首址
  88.                 MOVC   A,@A+DPTR          ;查顯示數據對應段碼
  89.                 MOV    P1,A                ;段碼放入P1口
  90.                 LCALL  DL1MS              ;顯示1MS
  91.                 INC    R1                 ;指向下一地址
  92.                 MOV    A,P3               ;取P3口掃描字
  93.                 JNB    ACC.3,ENDOUT       ;四位顯示完轉ENDOUT結束
  94.                 RL     A                  ;掃描字循環左移
  95.                 MOV    R5,A               ;掃描字放入R5暫存
  96.                 MOV    P3,#0FFH           ;顯示暫停
  97.                 AJMP   PLAY               ;轉PLAY循環
  98. ENDOUT:         MOV    P3,#0FFH           ;顯示結束,端口置1
  99.                 MOV    P1,#0FFH           ;
  100.                 RET                       ;子程序返回
  101. ;
  102. ;LED數碼顯示管用共陽段碼表,分別對應0-9,最后一個是"熄滅符"
  103. TAB:            DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
  104. ;
  105. ; 1MS延時子程序,LED顯示用
  106. DL1MS:          MOV         R6,#14H      ;
  107. DL1:            MOV         R7,#19H
  108. DL2:            DJNZ     R7,DL2
  109.                 DJNZ     R6,DL1
  110.                 RET
  111. ;
  112. ;模數轉換測量子程序
  113. TEST:           CLR     A          ;清累加器A
  114.                 MOV     P2,A       ;清P2口
  115.                 MOV     R0,#70H    ;轉換值存放首址
  116.                 MOV     R7,#08H    ;轉換8次控制
  117.                 LCALL  TESTART     ;啟動測試
  118. WAIT:           JB     P3.7,MOVD   ;等A/D轉換結束信號后轉MOVD
  119.                 AJMP   WAIT        ;P3.7為0等待
  120. ;
  121. TESTART:        SETB    P2.3       ;鎖存測試通道地址
  122.                 NOP                ; 延時2微秒
  123.                 NOP                ;
  124.                 CLR     P2.3       ;測試通道地址鎖存完畢
  125.                 SETB    P2.4      ; 啟動測試,發開始脈沖
  126.                 NOP               ; 延時2微秒
  127.                 NOP                                 ;
  128.                 CLR     P2.4                        ; 發啟動脈沖完畢
  129.                 NOP                       ;延時4微秒
  130.                 NOP                       ;
  131.                 NOP                       ;
  132.                 NOP                       ;
  133.                 RET                       ;子程序調用結束
  134. ;
  135. ; 取A/D轉換數據至70H-77H內存單元
  136. MOVD:           SETB    P2.5              ;8090輸出允許
  137.                 MOV     A,P0              ;將A/D轉換值移入A
  138.                 MOV     @R0,A             ;放入內存單元
  139.                 CLR     P2.5              ;關閉8090輸出
  140.                 INC     R0                ;內存地址加1
  141.                 MOV     A,P2              ;通道地址移入A
  142.                 INC     A                 ;通道地址加1
  143.                 MOV     P2,A              ; 通道地址送8090
  144.                 CLR        C                 ;清進位標志
  145.                 CJNE    A,#08H,TESTCON    ; 通道地址不等于8轉TESTCONT再測試
  146.                 JC      TESTCON           ; 通道地址小于8轉TESTCONT再測試
  147.                 CLR     A                 ; 大于或等于8,A/D轉換結束,恢復端口
  148.                 MOV     P2,A              ; P2口置0
  149.                 MOV     A,#0FFH           ;
  150.                 MOV     P0,A              ; P0口置1
  151.                 MOV     P1,A              ; P1口置1
  152.                 MOV     P3,A              ; P3口置1
  153.                 RET                       ; 取A/D轉換數據結束
  154. TESTCON:        LCALL   TESTART           ; 再發測試啟動脈沖
  155.                 LJMP    WAIT              ; 跳至WAIT等待A/D轉換結束信號
  156. ;
  157.                 END                       ; 程序結束
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:55584 發表于 2016-10-24 08:13 | 只看該作者
謝謝分享,下載學習
回復

使用道具 舉報

板凳
ID:398632 發表于 2018-9-16 13:47 | 只看該作者
謝謝分享。學習一下。
回復

使用道具 舉報

地板
ID:398692 發表于 2018-9-16 16:35 | 只看該作者
謝謝分享,學習一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表