打印

看不懂汇编,求高人帮忙把这段汇编翻译成C语言~~急用啊

[复制链接]
1774|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
69575zyxsw|  楼主 | 2010-5-13 07:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CS        BIT       P1.0
          SDO       BIT       P1.1
          SDI       BIT       P1.2
          CLOCK     BIT       P1.3
          EOC       BIT       P1.4
          AD_DATA_H EQU       78H
          AD_DATA_L EQU       79H
          R8        EQU       7AH
          ORG       0000H
          LJMP      MAIN
          ORG       0030H
;*****************************************
;系统初始化
;*****************************************
MAIN:     MOV       30H,#00H
          MOV       31H,#00H
          MOV       32H,#00H
          MOV       33H,#00H
MAIN_2:   ACALL     TLC2543      ;调用TLC2543AD转换子程序
          ACALL     CHULI        ;调用数据处理子程序,将AD转换结果乘以122,结果放入40H~42H单元
          MOV       R5,40H
          MOV       R6,41H
          MOV       R7,42H
          ACALL     H3B4         ;调用三字节二进制转四字节BCD码,结果放入43H~46H单元
          ACALL     CHAIFEN      ;调用拆分子程序
          MOV       R8,#25
MAIN_1:   ACALL     DISPLAY      ;调用显示子程序
          DJNZ      R8,MAIN_1
          AJMP      MAIN_2
;*****************************************
;TLC2543AD转换子程序
;*****************************************
TLC2543:  CLR       CLOCK          ;清时钟
          SETB      CS             ;设置片选为高
          CLR       CS             ;设置片选为低
          MOV       R4,#4          ;先读高4位数据
          MOV       A,#00H         ;选择通道0
TLC2543_1:MOV       C,SDO
          RLC       A
          MOV       SDI,C
          SETB      CLOCK
          CLR       CLOCK
          DJNZ      R4,TLC2543_1
          MOV       AD_DATA_H,A    ;保存高4位数据
          MOV       A,#00H
          MOV       R4,#8          ;再读低8位数据
TLC2543_2:MOV       C,SDO
          RLC       A
          SETB      CLOCK
          CLR       CLOCK
          DJNZ      R4,TLC2543_2
          MOV       AD_DATA_L,A     ;保存低8位数据
          SETB      CS              ;设置片选为高
          RET
;*****************************************
;数据处理子程序,将AD转换结果乘以122,结果放入40H~42H单元
;*****************************************
CHULI:    MOV       A,AD_DATA_L
          MOV       B,#122
          MUL       AB
          MOV       42H,A
          MOV       41H,B
          MOV       A,AD_DATA_H
          MOV       B,#122
          MUL       AB
          ADD       A,41H
          MOV       41H,A
          MOV       A,B
          ADDC      A,#00H
          MOV       40H,A
          RET
;*****************************************
;入口条件:待转换的三字节十六进制整数在R5(高)、R6、R7中。
;出口信息:转换后的四字节BCD码整数在R1(高)、R2、R3、R4中。
;影响资源:PSW、A、R0~R7 堆栈需求: 2字节
;*****************************************
H3B4:     CLR       A ;BCD码初始化
          MOV       R1,A
          MOV       R2,A
          MOV       R3,A
          MOV       R4,A
          MOV       R0,#24 ;转换三字节十六进制整数
H3B4_1:   MOV       A,R7 ;从高端移出待转换数的一位到CY中
          RLC       A
          MOV       R7,A
          MOV       A,R6
          RLC       A
          MOV       R6,A
          MOV       A,R5
          RLC       A
          MOV       R5,A
          MOV       A,R4 ;BCD码带进位自身相加,相当于乘2
          ADDC      A,R4
          DA        A;十进制调整
          MOV       R4,A
          MOV       A,R3
          ADDC      A,R3
          DA        A
          MOV       R3,A
          MOV       A,R2
          ADDC      A,R2
          DA        A
          MOV       R2,A
          MOV       A,R1
          ADDC      A,R1
          DA        A
          MOV       R1,A
          DJNZ      R0,H3B4_1 ;处理完24bit
          MOV       43H,R1
          MOV       44H,R2
          MOV       45H,R3
          MOV       46H,R4
          RET
;*****************************************
;拆分子程序,结果放入30H~33H
;*****************************************
CHAIFEN:  MOV       A,44H
          ANL       A,#0F0H
          SWAP      A
          MOV       30H,A
          MOV       A,44H
          ANL       A,#0FH
          MOV       31H,A
          MOV       A,45H
          ANL       A,#0F0H
          SWAP      A
          MOV       32H,A
          MOV       A,45H
          ANL       A,#0FH
          MOV       33H,A
          RET

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

20

帖子

1

粉丝