找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1771|回复: 1
打印 上一主题 下一主题
收起左侧

如何将单片机C语言改成汇编语言?

[复制链接]
跳转到指定楼层
#
100黑币
将以下改成简单的汇编语言,并标上备注

  1. #include<reg52.h>
  2. sbit KEY0=P0^0;
  3. sbit KEY1=P0^1;
  4. sbit KEY2=P0^2;
  5. sbit KEY3=P0^3;
  6. sbit KEY4=P0^4;
  7. unsigned chara[]={0x01,0x02,0x04,0x08};
  8. unsigned charb[]={0x08,0x04,0x02,0x01};
  9. unsigned charc[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
  10. unsigned chari,s=0,f=0;
  11. unsigned chark=200;
  12. unsigned char l=4;
  13. voiddelay(unsigned int t)
  14. {
  15.        unsigned char j,b;
  16. b=t;
  17.        while(b--)
  18.        {
  19.               for (j=0;j<125;j++);
  20.        }
  21. }
  22. void key()
  23. {P0=0x1f;
  24.        if(P0!=0x1f)
  25.        {delay(30);
  26.               if(P0!=0x1f)
  27.               {delay(30);
  28.        if(KEY0==0)
  29.        {s=1;}
  30.        if(KEY1==0)
  31.        {f=1;}
  32.        if(KEY4==0)
  33.        {s=0;
  34.               f=0;}
  35.        if(KEY2==0)
  36.               {if(l>1)
  37.                l--;}
  38.        if(KEY3==0)
  39.         {if(l<7)
  40.      l++;}
  41.         }}
  42.         }
  43. void speed()
  44.         {switch(l)
  45.                      {case 7:k=50;P1=c[l];break;
  46.                             case6:k=100;P1=c[l];break;
  47.                             case5:k=150;P1=c[l];break;
  48.                             case4:k=200;P1=c[l];break;
  49.                             case3:k=250;P1=c[l];break;
  50.                             case2:k=300;P1=c[l];break;
  51.                             case1:k=350;P1=c[l];break;}
  52.                      }
  53. void main()
  54. {
  55.        while(1)
  56.        {key();
  57.        while(s>0)
  58.        {speed();
  59.                      for(i=0;i<4;i++)
  60.                             {
  61.                                    P2=b[i];
  62.                                    delay(k);
  63.                                    key();
  64.                             }
  65.                             delay(100);
  66.                             key();
  67.               }
  68.       
  69.        while(f>0)
  70.        {speed();
  71.                      for(i=0;i<4;i++)
  72.                             {
  73.                                    P2=a[i];
  74.                                    delay(k);
  75.                                    key();
  76.                             }
  77.                             delay(100);
  78.                             key();
  79.               }
  80.        }
  81.        }
复制代码


51hei图片20200524133054.png (48.49 KB, 下载次数: 52)

51hei图片20200524133054.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

楼主
ID:584814 发表于 2020-5-25 10:21 | 只看该作者
C改汇编可以先编译C再反汇编
如果要有注释的必须先读懂C再改写成汇编没其他路子
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表