求大神能帮把汇编代码改成相应的C代码吗

2019-07-18 10:54发布

新手小白在做一个液位检测仿真用到一段汇编代码,但是我不懂汇编,求大神能帮把汇编代码改成相应的C代码;
代码如下:
(1)
MOV DPTR,#TABLE            ;取段码表首址。
MOV A,LED_2                ;取显示的十位数字。
MOVC A,@A+DPTR             ;取段码。
MOV P0,A                   ;输出段码的显示。
TABLE:   DB 3FH,06H,5BH,4FH,66H        ;共阴极数码管表
     DB 6DH,7DH,07H,7FH,6FH


(2)
LED_0    EQU    30H
LED_1    EQU    31HLED_2    EQU    32HLED_3    EQU    33HBUFFER  EQU    34H           ;显示缓存ADC      EQU    35HTCNTA    EQU    36HTCNTB    EQU    37HH_TEMP   EQU    38H          ;液位上限L_TEMP   EQU    39H          ;液位下限FLAG     BIT    00HH_ALM    BIT    P3.0L_ALM    BIT    P3.1SOUND    BIT    P3.7CLOCK    BIT    P2.4ST       BIT    P2.5EOC      BIT    P2.6OE       BIT    P2.7          ORG    00H          SJMP   START          ORG    0BH         LJMP   INT_T0          ORG    1BH          LJMP   INT_T1START:   MOV    LED_0,#00H          MOV    LED_1,#00H          MOV    LED_2,#00H          MOV    DPTR,#TABLE     ;送段码表首地址          MOV    H_TEMP,#153     ;204/255=0.8  高于times New Roman">80%报警         MOV    L_TEMP,#77       ;77/255=0.3   低于30%报警         MOV    TMOD,#12H        ;开中断         MOV    TH0,#245                      MOV    TL0,#0         MOV    IE,#8AH                       CLR    C         SETB   TR0        ;ADC0808提供时钟WAIT:   SETB   H_ALM         SETB   L_ALM         CLR    ST         SETB   ST         CLR    ST          ;启动转换         JNB    EOC,$       ;等待输出结果         SETB   OE         ;允许输出         MOV    ADC,P1     ;读取A/D转换结果         CLR    OE         ;关闭输出         MOV    A,ADC       ;A/D转换结果转换成BCD         SUBB   A,L_TEMP       ;判断是否低于下限         JC     LALM         MOV    A,H_TEMP         MOV    R0,ADC         SUBB   A,R0           ;判断是否高于上限         JC     HALM         CLR    TR1         LJMP   PROCLALM:   CLR    L_ALM          ;低位报警         SETB   TR1         CLR    FLAG         LJMP   PROCHALM:   CLR    H_ALM          ;高位报警         SETB   TR1         SETB   FLAG         LJMP   PROCPROC:   MOV    A,ADC         ;数值转换         MOV    B,#51         DIV    AB         MOV    LED_2,A         MOV    A,B         MOV    B,#10         DIV    AB         MOV    LED_1,A         MOV    LED_0,B         LCALL  DISP            ;显示A/D转换结果         SJMP   WAITINT_T0:  CPL    CLOCK          ;提供ADC0808时钟         RETIINT_T1:  CPL    SOUND         INC    TCNTA         MOV    A,TANTA         JB     FLAG,I1         ;判断是低位报警还是高位报警         CJNE   A,#30,RETUNE     ;低位报警声         SJMP   I2      I1: CJNE   A,#20,RETUNE       ;高位报警声      I2: MOV    TCNTA,#0         INC    TCNTB         MOV    A,TCNTB         CJNE   A,#25,RETUNE         MOV    TCNTA,#0         MOV    TCNTB,#0         LCALL  DELAY2RETUNE:  RETIDISP:    MOV    A,LED_0         ;数码管显示子程序         MOVC   A,@A+DPTR       ;将字段码转换显示码          CLR    P2.3         MOV    P0,A         LCALL  DELAY         SETB   P2.3         MOV    A,LED_1         MOVC   A,@A+DPTR         CLR    P2.2         MOV    P0,A         LCALL  DELAY         SETB   P2.2         MOV    A,LED_2         MOVC   A,@A+DPTRORL    A,#80H                            ;显示小数点             MOV    BUFFER+2,A       ;送显示缓存         CLR    P2.1         MOV    P0,A         LCALL  DELAY         SETB   P2.1         RETDELAY:  MOV    R6,#10          ;延时5msD1:      MOV    R7,#250         DJNZ   R7,$         DJNZ   R6,D1         RETDELAY2: MOV    R5,#20D2:      MOV    R6,#20D3:      MOV    R7,#250         DJNZ   R7,$         DJNZ   R6,D3         DJNZ   R5,D2         RET TABLE:  DB     3FH,06H,5BH,4FH,66H    ;0,1,2,3,4 共阴极接法         DB     6DH,7DH,07H,7FH,6FH     ;5,6,7,8,9,         END
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。