5353|3

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

新人求将汇编转化为C语言 [复制链接]

汇编源程序:
          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

基于单片机一氧化碳报警器设计.doc

239.5 KB, 下载次数: 1

此帖出自51单片机论坛

最新回复

靠工具转化是不行的,只能在读懂原汇编程序的基础上重新用C编写,或者弄清楚具体的应用需求,直接用C编写。当然,之前的必备功课是先掌握C语言编程。  详情 回复 发表于 2018-12-17 11:24
点赞 关注(1)
 

回复
举报

85

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

  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
复制代码
此帖出自51单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

269

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
看懂后自己写,不能自动转的吧
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

141

TA的资源

版主

4
 
靠工具转化是不行的,只能在读懂原汇编程序的基础上重新用C编写,或者弄清楚具体的应用需求,直接用C编写。当然,之前的必备功课是先掌握C语言编程。
此帖出自51单片机论坛
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表