[求助] 新人求将汇编转化为C语言

NANSHI   2018-12-16 00:37 楼主
汇编源程序:
          ST         BIT       P3.0
          OE         BIT        P3.1
          ORG       0000H
LJMP     MAIN
ORG       0030H
MAIN:    CLR        P2.0
CLR        P2.2
LCALL    DELAY
CLR       ST
SETB      ST
CLR       ST
LCALL    DELAY
SETB      OE
MOV       P1,#0FFH
MOV       A,P1
CLR       OE
          CLR      C
          SUBB      A,#67H              ;报警值
          JNC       ALERM
SJMP      MAIN
ALERM:    SETB     P2.2
  SETB    P2.0
MOV      R4,#255
         DJNZ      R4,$
         CLR       P2.0
         MOV       R5,#255
         DJNZ      R5,$
         SJMP      ALERM
DELAY:   MOV      R2,#250
AA:   MOV      R3,#255
         DJNZ     R3,$
         DJNZ      R2,AA
         RET
         END

回复评论 (3)


  1. //汇编源程序:
  2. //ST         BIT       P3.0
  3. //OE         BIT        P3.1

  4. // KEIL C51 中的头文件,其它的自己调整
  5. #include "reg51.h"

  6. void delay();

  7. // 位定义,KEIL C51 专用方式
  8. sbit ST = P3^0;
  9. sbit OE = P3^1;

  10. sbit P20 = P2^0;
  11. sbit P21 = P2^1;
  12. sbit P22 = P2^2;
  13. sbit P23 = P2^3;
  14. sbit P24 = P2^4;
  15. sbit P25 = P2^5;
  16. sbit P26 = P2^6;
  17. sbit P27 = P2^7;




  18. //ORG       0000H
  19. //LJMP     MAIN

  20. //ORG       0030H
  21. //MAIN:   
  22. int main()
  23. {
  24.         unsigned char tempA;

  25.         while(1)
  26.         {

  27.         //        CLR        P2.0
  28.         //        CLR        P2.2
  29.                 P20 = 0;
  30.                 P22 = 0;
  31.         //        LCALL    DELAY
  32.         //        CLR       ST
  33.         //        SETB      ST
  34.         //        CLR       ST
  35.                 delay();
  36.                 ST = 0;
  37.                 ST = 1;
  38.                 ST = 0;
  39.         // LCALL    DELAY
  40.         // SETB      OE
  41.         // MOV       P1,#0FFH
  42.         // MOV       A,P1
  43.         //        CLR       OE

  44.                 delay();       
  45.                 OE         =         1;
  46.                 P1         =         0xFF;
  47.                 tmpA         =        P1;
  48.                 OE        =        0;

  49.         // CLR      C
  50.         // SUBB      A,#67H              ;报警值
  51.         // JNC       ALERM
  52.         // SJMP      MAIN
  53.                 if(tmpA >= 0x67)        // 忘记了很多汇编,大于或小于自己改
  54.                 {
  55.                         unsigned char i;
  56.                         while(1)
  57.                         {
  58.                                 // ALERM:    SETB     P2.2
  59.                                 // SETB    P2.0
  60.                                 P22 = 1;
  61.                                 P20 = 1;
  62.                                 // MOV      R4,#255
  63.                                 // DJNZ      R4,$
  64.                                 // CLR       P2.0
  65.                                 i = 255;
  66.                                 while(--i);
  67.                                  P20 = 0;
  68.                                 // MOV       R5,#255                        
  69.                                 // DJNZ      R5,$
  70.                                 i = 255;
  71.                                 while(--i);
  72.                                 // SJMP      ALERM       
  73.                         }
  74.                 }
  75.         }

  76. }

  77. void delay()
  78. {
  79. // DELAY:   
  80. //         MOV      R2,#250
  81. // AA:   
  82. //         MOV      R3,#255

  83. //         DJNZ     R3,$
  84. //         DJNZ      R2,AA
  85. // RET       
  86.         unsigned char t2,t3;
  87.         t2 = 250;
  88.         while(--t2)
  89.         {
  90.                 t3 = 250;
  91.                 while(--t3);
  92.         }
  93. }

  94. //END
点赞  2018-12-16 08:51
看懂后自己写,不能自动转的吧
点赞  2018-12-16 22:51
靠工具转化是不行的,只能在读懂原汇编程序的基础上重新用C编写,或者弄清楚具体的应用需求,直接用C编写。当然,之前的必备功课是先掌握C语言编程。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2018-12-17 11:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复