⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 简易数字电压表设计程序.lst

📁 用AD0809的电平转换数据采集,实现8路电压的循环检测
💻 LST
📖 第 1 页 / 共 2 页
字号:
8051 Assembler           Version 1.00   04/20/107 08:18:35    Page 1
K:\钟荣峰\简易电压表仿真部分\简易数字电压表设计程序.51



    1 0000              ;***************************************************
    2 0000              ;简易数字电压表设计程序
    3 0000              ;***************************************************
    4 0000              
    5 0000                         ORG  0000H
    6 0000 020030                  LJMP START
    7 0003                         ORG 0003H
    8 0003 020168                  LJMP KEY1
    9 0030                         ORG  0030H
   10 0030              
   11 0030              ;***************************************************
   12 0030              ;主程序
   13 0030              ;***************************************************
   14 0030              
   15 0030 120070           START: LCALL INI ;调入初始化子程序
   16 0033 120041           MAIN:  LCALL TEST;调入AD数据采集子程序
   17 0036 120095                  LCALL DISPLAY;调入显示子程序
   18 0039 0133                    AJMP  MAIN
   19 003B 00                      NOP
   20 003C 00                      NOP
   21 003D 00                      NOP
   22 003E 020030                  LJMP START
   23 0041              
   24 0041              ;***************************************************
   25 0041              ;AD数据采集子程序
   26 0041              ;***************************************************
   27 0041              
   28 0041 E4              TEST:  CLR A
   29 0042 F5A0                   MOV P2,A;对P2控制口清零复位并指向IN0通道
   30 0044 7870                   MOV R0,#70H
   31 0046 7B08                   MOV R3,#08H
   32 0048 120054          CON:   LCALL TESTART
   33 004B 7DFF                   MOV R5,#0FFH;延迟等待数据转换结束
   34 004D 00              DLAY:  NOP
   35 004E 00                     NOP
   36 004F 00                     NOP
   37 0050 DDFB                   DJNZ R5,DLAY
   38 0052 015F                   AJMP TAKE;跳转到数据采集
   39 0054              
   40 0054 D2A3         TESTART: SETB P2.3;通道地址锁存并且启动A/D转换
   41 0056 00                       NOP
   42 0057 00                       NOP
   43 0058 C2A3                     CLR P2.3
   44 005A 00                       NOP
   45 005B 00                       NOP
   46 005C 00                       NOP
   47 005D 00                       NOP
   48 005E 22                       RET
   49 005F D2B7             TAKE: SETB P3.7;AD输出打开
   50 0061 E580                   MOV A,P0
   51 0063 F6                     MOV @R0,A;将采集的数据存放在70H~77H单元中
   52 0064 C2B7                   CLR P3.7
   53 0066 08                     INC R0;存储单元地址加一
   54 0067 E5A0                   MOV A,P2
   55 0069 04                     INC A;通道加一
   56 006A F5A0                   MOV P2,A
   57 006C E4                     CLR A
8051 Assembler           Version 1.00   04/20/107 08:18:35    Page 2
K:\钟荣峰\简易电压表仿真部分\简易数字电压表设计程序.51



   58 006D DBD9                   DJNZ R3,CON;判断8条通道是否都转换完成
   59 006F 22                     RET
   60 0070              
   61 0070              ;***************************************************
   62 0070              ;初始化程序
   63 0070              ;***************************************************
   64 0070              
   65 0070 E4               INI:   CLR A
   66 0071 F5A0                    MOV P2,A ;对P2控制口清零复位
   67 0073 C2B5                    CLR P3.5;A/D转换复位
   68 0075 C2B7                    CLR P3.7;A/D输出复位
   69 0077 758130                  MOV SP,#30H;堆栈指针指向30H
   70 007A 7870                    MOV R0,#70H;对A/D数据存放单元70H~7BH清零
   71 007C 7A0C                    MOV R2,#0CH
   72 007E F6                LOP1: MOV @R0,A
   73 007F 08                      INC R0
   74 0080 DAFC                    DJNZ R2,LOP1
   75 0082 D288                    SETB IT0;外部中断0为跳沿触发方式
   76 0084 D2AF                    SETB EA;开中断
   77 0086 D2A8                    SETB EX0;外部中断0打开
   78 0088 D2B8                    SETB PX0;外部中断0优先
   79 008A 74FF                    MOV A,#0FFH
   80 008C F580                    MOV P0,A
   81 008E F590                    MOV P1,A
   82 0090 D2B1                    SETB P3.1;单路灯灭
   83 0092 C2B0                    CLR P3.0;循环灯亮
   84 0094 22                      RET
   85 0095              
   86 0095              ;***************************************************   
   87 0095              ;显示主程序
   88 0095              ;***************************************************
   89 0095              
   90 0095                  DISPLAY:          
   91 0095 7B08                      MOV R3,#08H
   92 0097 7870                      MOV R0,#70H
   93 0099 757B01                    MOV 7BH,#01H;显示通道路数
   94 009C 7AFF                      MOV R2,#0FFH;每路显示时间控制4ms*255
   95 009E              
   96 009E 1200AC            DIS:    LCALL DISLOOP1
   97 00A1 1200E0          DISLOOP2: LCALL DISP
   98 00A4 DAFB                       DJNZ R2,DISLOOP2
   99 00A6 08                         INC R0
  100 00A7 057B                       INC 7BH
  101 00A9 DBF3                       DJNZ R3,DIS
  102 00AB 22                         RET
  103 00AC              
  104 00AC              ;*************************************************** 
  105 00AC              ;十进制转换程序
  106 00AC              ;***************************************************
  107 00AC              
  108 00AC E6               DISLOOP1: MOV A,@R0;采集数据转换为输出显示十进制BCD码运算程序
  109 00AD 75F033                     MOV B,#51
  110 00B0 84                         DIV AB
  111 00B1 F57A                       MOV 7AH,A;个位放入7AH
  112 00B3 E5F0                       MOV A,B
  113 00B5 C2D5                       CLR F0
  114 00B7 941A                       SUBB A,#1AH
8051 Assembler           Version 1.00   04/20/107 08:18:35    Page 3
K:\钟荣峰\简易电压表仿真部分\简易数字电压表设计程序.51



  115 00B9 92D5                       MOV F0,C
  116 00BB 740A                       MOV A,#10
  117 00BD A4                         MUL AB
  118 00BE 75F033                     MOV B,#51
  119 00C1 84                         DIV AB
  120 00C2 20D502                     JB F0,LOOP2
  121 00C5 2405                       ADD A,#5
  122 00C7 F579             LOOP2:    MOV 79H,A;小数后第一位放入79H
  123 00C9 E5F0                       MOV A,B
  124 00CB C2D5                       CLR F0
  125 00CD 941A                       SUBB A,#1AH
  126 00CF 92D5                       MOV F0,C
  127 00D1 740A                       MOV A,#10
  128 00D3 A4                         MUL AB
  129 00D4 75F033                     MOV B,#51
  130 00D7 84                         DIV AB
  131 00D8 20D502                     JB F0,LOOP3
  132 00DB 2405                       ADD A,#5
  133 00DD F578            LOOP3:     MOV 78H,A;小数后第二位放入78H
  134 00DF 22                         RET
  135 00E0              
  136 00E0              ;***************************************************
  137 00E0              ;显示子程序  
  138 00E0              ;***************************************************  
  139 00E0              
  140 00E0 7978            DISP:      MOV R1,#78H
  141 00E2 E9                         MOV A,R1
  142 00E3 B47802          PLAY:      CJNE A,#78H,L1
  143 00E6 01F4                       AJMP ONE
  144 00E8 B47902          L1:        CJNE A,#79H,L2
  145 00EB 210D                       AJMP TWO
  146 00ED B47A02          L2:        CJNE A,#7AH,L3
  147 00F0 2126                       AJMP THREE
  148 00F2 213F            L3:        AJMP NUM
  149 00F4 E7              ONE:       MOV A,@R1;小数后第二位显示程序
  150 00F5 900154                     MOV DPTR,#TAB
  151 00F8 93                         MOVC A,@A+DPTR
  152 00F9 F590                       MOV P1,A
  153 00FB D2A4                       SETB P2.4
  154 00FD D297                       SETB P1.7
  155 00FF C2A5                       CLR P2.5
  156 0101 C2A6                       CLR P2.6
  157 0103 C2A7                       CLR P2.7
  158 0105 12015F                     LCALL DL
  159 0108 09                         INC R1
  160 0109 7479                       MOV A,#79H
  161 010B 01E3                       AJMP PLAY
  162 010D E7              TWO:       MOV A,@R1;小数后第一位显示程序
  163 010E 900154                     MOV DPTR,#TAB
  164 0111 93                         MOVC A,@A+DPTR
  165 0112 F590                       MOV P1,A
  166 0114 D2A5                       SETB P2.5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -