谁能帮我把这段C改成汇编

2019-07-16 06:32发布

#include<reg52.h>
#define uchar unsigned char
sbit wei1=P3^0;
sbit wei2=P3^1;
sbit wei3=P3^6;
sbit wei4=P3^7;
uchar code numh[11]={
0xbf,//0
0x86,//1
0xdb,//2
0xcf,
0xe6,
0xed,
0xfd,
0x87,
0xff,
0xef,//9
0x00
};
uchar code numl[11]={
0x3f,//0
0x06,//1
0x5b,//2
0x4f,
0x66,
0x6d,
0x7d,
0x07,
0x7f,
0x6f,//9
0x00
};
uchar i,num,f,shu1,shu2,shu3,shu4,temp=50;
void delay(uchar j)
{
uchar i=0;
for(j;j;j--)
for(i=0;i<110;i++);
}
display()
{          P2=numh[shu1];
                    wei1=0;wei2=wei3=wei4=1;
                    delay(10);
                        P2=0;
                    P2=numl[shu2];
                    wei2=0;wei1=wei3=wei4=1;
                    delay(10);
                    P2=0;
                        P2=numl[shu3];
                    wei3=0;wei1=wei2=wei4=1;
                    delay(10);
                    P2=0;
                        P2=numl[shu4];
                    wei4=0;wei1=wei2=wei3=1;
                    delay(10);
                    P2=0;
}
void main()
{   f=0;  shu1=shu2=shu3=shu4=0;
   num=0x00;
   while(1)
   {
        P1=0xfe;                                  
                temp=P1;
                 temp=temp&0xf0;
            if(temp!=0xf0)
                  {
                          delay(5);
                        if(temp!=0xf0)
                                  switch(temp)
                            {
                                          case 0xe0:num=1;f++;while(P1==0xee);
                                           break;
                                          case 0xd0:num=2;f++;while(P1==0xde);
                                           break;
                                           case 0xb0:num=3;f++;while(P1==0xbe);
                                           break;
                                   case 0x70:num=0x0c;f++;while(P1==0x7e);
                                           break;
                                 }            
                   }

                P1=0xfd;
                temp=P1;                                       
                 temp=temp&0xf0;
            if(temp!=0xf0)
                  {
                          delay(5);
                        if(temp!=0xf0)
                                  switch(temp)
                            {
                                          case 0xe0:num=4;f++;while(P1==0xed) ;
                                           break;
                                          case 0xd0:num=5;f++; while(P1==0xdd) ;
                                           break;
                                           case 0xb0:num=6;f++; while(P1==0xbd) ;
                                           break;
                                        case 0x70:num=0x0d;f++;while(P1==0x7d) ;
                                           break;
                                 }       
                   }
                  
                 P1=0xfb;                                          
                temp=P1;
                 temp=temp&0xf0;
            if(temp!=0xf0)
                  {
                          delay(5);
                        if(temp!=0xf0)
                                  switch(temp)
                            {
                                          case 0xe0:num=7;f++;while(P1==0xeb) ;
                                           break;
                                          case 0xd0:num=8;f++; while(P1==0xdb) ;
                                           break;
                                        case 0xb0:num=9;f++;while(P1==0xbb) ;                  
                                           break;       
                                        case 0x70:num=0x0e;f++;while(P1==0x7b) ;                  
                                           break;                                                             
               
                                 }
                   }
                  
                P1=0xf7;
                temp=P1;
                 temp=temp&0xf0;
            if(temp!=0xf0)
                  {
                          delay(10);
                        if(temp!=0xf0)
                                  switch(temp)
                            {
                                          case 0xe0: num=0x0a;f++ ;while(P1==0xe7) ;
                                           break;
                                          case 0xd0: num=0;f++; while(P1==0xd7) ;
                                           break;
                                           case 0xb0: num=0x0b;f++; while(P1==0xb7) ;
                                           break;
                                        case 0x70: num=0x0f;f++; while(P1==0x77) ;
                                           break;
                                          
                                }
                   }
                  if(num==0x0c){shu1=shu2=shu3=shu4=0;display(); f=0;wei4=1;}
                else if(f==1)                                          
            {        shu1=num;P2=numl[shu1];wei1=0;wei2=wei3=wei4=1;delay(10);      
         }
                else if(f==2)                         
                   {  if(num==0x0a)
                   { P2=numh[shu1];
                    wei1=0;wei2=wei3=wei4=1;
                    delay(10);
                        P2=0; }
                else if(num!=0x0a)f--;       
                          }
                else if(f==3)                         
                    {shu2=num;
                    P2=numh[shu1];
                    wei1=0;wei2=wei3=wei4=1;
                    delay(10);
                        P2=0;
                    P2=numl[shu2];
                    wei2=0;wei1=wei3=wei4=1;
                    delay(10);
                    P2=0;}
                else if(f==4)                         
                    {shu3=num;
                    P2=numh[shu1];
                    wei1=0;wei2=wei3=wei4=1;
                    delay(10);
                        P2=0;
                    P2=numl[shu2];
                    wei2=0;wei1=wei3=wei4=1;
                    delay(10);
                    P2=0;
                        P2=numl[shu3];
                    wei3=0;wei1=wei2=wei4=1;
                    delay(10);
                    P2=0;}
                else if(f==5)                         
                    {shu4=num;
                    P2=numh[shu1];
                    wei1=0;wei2=wei3=wei4=1;
                    delay(10);
                        P2=0;
                    P2=numl[shu2];
                    wei2=0;wei1=wei3=wei4=1;
                    delay(10);
                    P2=0;
                        P2=numl[shu3];
                    wei3=0;wei1=wei2=wei4=1;
                    delay(10);
                    P2=0;
                        P2=numl[shu4];
                    wei4=0;wei1=wei2=wei3=1;
                    delay(10);
                    P2=0;}
                else if(f==6&num==0x0b)
                   {  
                        delay(10);
                        f=0;
                        display();
                        if(shu3>=5){shu2++;                  
                        P0=shu1*10+shu2;
                        shu2--;}
                        P0=shu1*10+shu2;
                        }
            else if(f==0){display();}       
}

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lin514759213
1楼-- · 2019-07-16 06:52
 精彩回答 2  元偷偷看……
bbanhkg
2楼-- · 2019-07-16 08:47
C不会啊,而且老师说只能用汇编
calfql
3楼-- · 2019-07-16 12:13
悄悄的告诉你,其实KEIL 里面在编译的时候回生产汇编的哦,我没有亲自弄过,你可以百度一下
bbanhkg
4楼-- · 2019-07-16 14:58
calfql 发表于 2011-12-20 17:26
悄悄的告诉你,其实KEIL 里面在编译的时候回生产汇编的哦,我没有亲自弄过,你可以百度一下 ...

我知道,弄过了不过转过来的汇编都看不懂啊
sailor_yan
5楼-- · 2019-07-16 16:45
这么长的程序,不停的跳转,改成汇编,闲着没事了!
zhyyzf
6楼-- · 2019-07-16 17:04
 精彩回答 2  元偷偷看……

一周热门 更多>