汇编语言改成C语言

2025-02-24 07:51:45
推荐回答(2个)
回答1:

#include
#define uchar unsigned char
bit zheng,fan,no,as,ss;
uchar step[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar dss[]={50,25,10,5};
uchar num,dly;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(加速)
void jia()
{
if(dly<=3)dly++;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(减速)
void jian()
{
if( dly>0)dly--;
}
void delay(uchar a)
{
uchar i,j;
for(i=0;i for(j=0;j<250;j++);
}
void delay1()
{
uchar i,j;
for(i=0;i<30;i++)
for(j=0;j<100;j++);
}
void rdkey()
{
uchar tmp;
tmp=P0;
if((tmp&0x01)==0)no=1;
if((tmp&0x04)==0)fan=1;
if((tmp&0x02)==0)zheng=1;
if((tmp&0x08)==0)as=1;
if((tmp&0x10)==0)ss=1;
}
void sub_int0() interrupt 0
{
uchar tmp;
while(1)
{
tmp=(~P0)&0x1f;
if(tmp!=0)
{
delay1();
tmp=(~P0)&0x1f;
if(tmp!=0)break;
}
}
rdkey();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(正转)
void go()
{
while(1)
{
zheng=0;
fan=0;
no=0;
as=0;
ss=0;
num++;
if(num==8)num=0;
P2=step[num];
delay(dss[dly]);
if(no)return;
if(zheng)return;
if(fan)return;
if(ss)jian();
if(as)jia();
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(反转)
void back()
{
while(1)
{
zheng=0;
fan=0;
as=0;
ss=0;
no=0;
if(num!=0)num--;
else num=7;
P2=step[num];
delay(dss[dly]);
if(no)return;
if(zheng)return;
if(fan)return;
if(ss)jian();
if(as)jia();
}
}
main()
{
zheng=0;
fan=0;
no=0;
as=0;
ss=0;
dly=dss[0];
IE=0x81;
IT0=1;
num=0;
while(1)
{
if(zheng)go();
if(fan)back();
}
}

回答2: