高分请大家帮帮忙:步进电机单片机控制程序C翻译成汇编

把C语言的程序翻译成汇编语言!!大家帮帮忙了,高分奉上~!
#include <REGX51.H>

#define uchar unsigned char
#define uint unsigned int
unsigned char LEDBUFFER[2],SCANCOUNT=0;

const unsigned char LEDDATA[]={
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};

void delayus(uint us)
{
while(us--);
}

//数码管扫描代码表

void delay(uchar t)
{
uchar i;
uint j;
for (i=0;i<t;i++)
for (j=0;j<900;j++);
}

//
void select(uchar LED)
{
switch(LED)
{
case 0:P2_0=0;break;
case 1:P2_1=0;break;
default: P2=0xff;
}
}

void dispone(uchar LED,uchar number) //number 0--9
{

select(LED);
P0=LEDDATA[number];

delayus(200);
P2=0xff;
}

void disp()
{
uchar i;

for(i=0;i<2;i++)
{

dispone(i,LEDBUFFER[i]);

}
}

//

uchar np;
const uchar motortb[]={0x11,0x99,0x88,0xcc,0x44,0x66,0x22,0x33};
void a_step(uchar d)
{
if (d&0x01)
{
if (np==0)
np=7;
else np--;
}
else
{
if (np==7)
np=0;
else np++;

}

P3=motortb[np];

}
/*void a_turn(uchar d,uchar t)
{
uchar i;
for (i=0;i<96;i++)
a_step(d,t);
}*/

void delay1(unsigned int t)
{unsigned int i,k,j;

for(k=0;k<t;k++)
for(i=0;i<=50;i++)
for(j=0;j<=10;j++);
}

const unsigned char keycode[]=
{0xee,0xde,0xbe,0x7e,
0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,
};

long timecount=2000,count=0;
bit f0,flag99999=1;
void main(void)
{ unsigned char temp,key,shudu=39;
TMOD=0x02;
TH0=0x00;
TL0=TH0; 未完,
PT0=1;
ET0=1;
TR0=1;
EA=1;
while(1)
{ P1=0x0F;
if((P1&0x0f)!=0x0F)

第1个回答  2008-05-16
这是生成的汇编代码
和C语言一一对应的,看的差不多了就把C语言的语句删掉编译才能通过.
126: ?C_STARTUP: LJMP STARTUP1
127:
128: RSEG ?C_C51STARTUP
129:
130: STARTUP1:
131:
132: IF IDATALEN <> 0
C:0x0000 020003 LJMP STARTUP1(C:0003)
133: MOV R0,#IDATALEN - 1
C:0x0003 787F MOV R0,#0x7F
134: CLR A
C:0x0005 E4 CLR A
135: IDATALOOP: MOV @R0,A
C:0x0006 F6 MOV @R0,A
136: DJNZ R0,IDATALOOP
C:0x0007 D8FD DJNZ R0,IDATALOOP(C:0006)
185: MOV SP,#?STACK-1
186:
187: ; This code is required if you use L51_BANK.A51 with Banking Mode 4
188: ;<h> Code Banking
189: ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
190: #if 0
191: ; <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
192: EXTRN CODE (?B_SWITCH0)
193: CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
194: #endif
195: ;</h>
C:0x0009 75814B MOV SP(0x81),#0x4B
196: LJMP ?C_START
C:0x000C 02004A LJMP C:004A
C:0x000F 020118 LJMP main(C:0118)
C:0x0012 E4 CLR A
C:0x0013 93 MOVC A,@A+DPTR
C:0x0014 A3 INC DPTR
C:0x0015 F8 MOV R0,A
C:0x0016 E4 CLR A
C:0x0017 93 MOVC A,@A+DPTR
C:0x0018 A3 INC DPTR
C:0x0019 4003 JC C:001E
C:0x001B F6 MOV @R0,A
C:0x001C 8001 SJMP C:001F
C:0x001E F2 MOVX @R0,A
C:0x001F 08 INC R0
C:0x0020 DFF4 DJNZ R7,C:0016
C:0x0022 8029 SJMP C:004D
C:0x0024 E4 CLR A
C:0x0025 93 MOVC A,@A+DPTR
C:0x0026 A3 INC DPTR
C:0x0027 F8 MOV R0,A
C:0x0028 5407 ANL A,#0x07
C:0x002A 240C ADD A,#0x0C
C:0x002C C8 XCH A,R0
C:0x002D C3 CLR C
C:0x002E 33 RLC A
C:0x002F C4 SWAP A
C:0x0030 540F ANL A,#0x0F
C:0x0032 4420 ORL A,#0x20
C:0x0034 C8 XCH A,R0
C:0x0035 83 MOVC A,@A+PC
C:0x0036 4004 JC C:003C
C:0x0038 F4 CPL A
C:0x0039 56 ANL A,@R0
C:0x003A 8001 SJMP C:003D
C:0x003C 46 ORL A,@R0
C:0x003D F6 MOV @R0,A
C:0x003E DFE4 DJNZ R7,C:0024
C:0x0040 800B SJMP C:004D
C:0x0042 0102 AJMP C:0002
C:0x0044 04 INC A
C:0x0045 08 INC R0
C:0x0046 102040 JBC 0x24.0,C:0089
C:0x0049 8090 SJMP C:FFDB
C:0x004B 00 NOP
C:0x004C 8FE4 MOV 0xE4,R7
C:0x004E 7E01 MOV R6,#0x01
C:0x0050 93 MOVC A,@A+DPTR
C:0x0051 60BC JZ C:000F
C:0x0053 A3 INC DPTR
C:0x0054 FF MOV R7,A
C:0x0055 543F ANL A,#0x3F
C:0x0057 30E509 JNB 0xE0.5,C:0063
C:0x005A 541F ANL A,#0x1F
C:0x005C FE MOV R6,A
C:0x005D E4 CLR A
C:0x005E 93 MOVC A,@A+DPTR
C:0x005F A3 INC DPTR
C:0x0060 6001 JZ C:0063
C:0x0062 0E INC R6
C:0x0063 CF XCH A,R7
C:0x0064 54C0 ANL A,#0xC0
C:0x0066 25E0 ADD A,ACC(0xE0)
C:0x0068 60A8 JZ C:0012
C:0x006A 40B8 JC C:0024
C:0x006C E4 CLR A
C:0x006D 93 MOVC A,@A+DPTR
C:0x006E A3 INC DPTR
C:0x006F FA MOV R2,A
C:0x0070 E4 CLR A
C:0x0071 93 MOVC A,@A+DPTR
C:0x0072 A3 INC DPTR
C:0x0073 F8 MOV R0,A
C:0x0074 E4 CLR A
C:0x0075 93 MOVC A,@A+DPTR
C:0x0076 A3 INC DPTR
C:0x0077 C8 XCH A,R0
C:0x0078 C582 XCH A,DPL(0x82)
C:0x007A C8 XCH A,R0
C:0x007B CA XCH A,R2
C:0x007C C583 XCH A,DPH(0x83)
C:0x007E CA XCH A,R2
C:0x007F F0 MOVX @DPTR,A
C:0x0080 A3 INC DPTR
C:0x0081 C8 XCH A,R0
C:0x0082 C582 XCH A,DPL(0x82)
C:0x0084 C8 XCH A,R0
C:0x0085 CA XCH A,R2
C:0x0086 C583 XCH A,DPH(0x83)
C:0x0088 CA XCH A,R2
C:0x0089 DFE9 DJNZ R7,C:0074
C:0x008B DEE7 DJNZ R6,C:0074
C:0x008D 80BE SJMP C:004D
C:0x008F 012F AJMP C:002F
C:0x0091 00 NOP
C:0x0092 0A INC R2
C:0x0093 423F ORL 0x3F,A
C:0x0095 06 INC @R0
C:0x0096 5B ANL A,R3
C:0x0097 4F ORL A,R7
C:0x0098 66 XRL A,@R0
C:0x0099 6D XRL A,R5
C:0x009A 7D07 MOV R5,#0x07
C:0x009C 7F6F MOV R7,#0x6F
C:0x009E 08 INC R0
C:0x009F 2111 AJMP C:0111
C:0x00A1 99 SUBB A,R1
C:0x00A2 88CC MOV 0xCC,R0
C:0x00A4 4466 ORL A,#0x66
C:0x00A6 22 RET
C:0x00A7 33 RLC A
C:0x00A8 0D INC R5
C:0x00A9 35EE ADDC A,0xEE
C:0x00AB DEBE DJNZ R6,C:006B
C:0x00AD 7EED MOV R6,#0xED
C:0x00AF DDBD DJNZ R5,C:006E
C:0x00B1 7DEB MOV R5,#0xEB
C:0x00B3 DBBB DJNZ R3,C:0070
C:0x00B5 7BE7 MOV R3,#0xE7
C:0x00B7 04 INC A
C:0x00B8 300000 JNB f0(0x20.0),C:00BB
C:0x00BB 07 INC @R1
C:0x00BC D004 POP 0x04
C:0x00BE 2B ADD A,R3
C:0x00BF 00 NOP
C:0x00C0 00 NOP
C:0x00C1 00 NOP
C:0x00C2 00 NOP
C:0x00C3 C181 AJMP C:0681
C:0x00C5 00 NOP
103: void delay1(unsigned int t)
104: {unsigned int i,k,j;
105:
106: for(k=0;k<t;k++)
C:0x00C6 E4 CLR A
C:0x00C7 FD MOV R5,A
C:0x00C8 FC MOV R4,A
C:0x00C9 C3 CLR C
C:0x00CA ED MOV A,R5
C:0x00CB 9F SUBB A,R7
C:0x00CC EC MOV A,R4
C:0x00CD 9E SUBB A,R6
C:0x00CE 5021 JNC C:00F1
107: for(i=0;i<=50;i++)
C:0x00D0 E4 CLR A
C:0x00D1 FB MOV R3,A
C:0x00D2 FA MOV R2,A
108: for(j=0;j<=10;j++);
C:0x00D3 900000 MOV DPTR,#C_STARTUP(0x0000)
C:0x00D6 A3 INC DPTR
C:0x00D7 E582 MOV A,DPL(0x82)
C:0x00D9 640B XRL A,#0x0B
C:0x00DB 4583 ORL A,DPH(0x83)
C:0x00DD 70F7 JNZ C:00D6
C:0x00DF 0B INC R3
C:0x00E0 BB0001 CJNE R3,#0x00,C:00E4
C:0x00E3 0A INC R2
C:0x00E4 EB MOV A,R3
C:0x00E5 6433 XRL A,#0x33
C:0x00E7 4A ORL A,R2
C:0x00E8 70E9 JNZ C:00D3
C:0x00EA 0D INC R5
C:0x00EB BD0001 CJNE R5,#0x00,C:00EF
C:0x00EE 0C INC R4
C:0x00EF 80D8 SJMP C:00C9
109: }
110:
111:
112:
113: const unsigned char keycode[]=
114: {0xee,0xde,0xbe,0x7e,
115: 0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,
116: };
117:
118:
119: long timecount=2000,count=0;
120: bit f0,flag99999=1;
C:0x00F1 22 RET
77: void a_step(uchar d)
78: {
79: if (d&0x01)
C:0x00F2 EF MOV A,R7
C:0x00F3 30E00D JNB 0xE0.0,C:0103
80: {
81: if (np==0)
C:0x00F6 E534 MOV A,np(0x34)
C:0x00F8 7005 JNZ C:00FF
82: np=7;
C:0x00FA 753407 MOV np(0x34),#0x07
C:0x00FD 8010 SJMP C:010F
83: else np--;
C:0x00FF 1534 DEC np(0x34)
84: }
85: else
C:0x0101 800C SJMP C:010F
86: {
87: if (np==7)
C:0x0103 E534 MOV A,np(0x34)
C:0x0105 B40705 CJNE A,#0x07,C:010D
88: np=0;
C:0x0108 E4 CLR A
C:0x0109 F534 MOV np(0x34),A
C:0x010B 8002 SJMP C:010F
89: else np++;
90:
C:0x010D 0534 INC np(0x34)
91: }
92:
93: P3=motortb[np];
94:
C:0x010F 7421 MOV A,#motortb(0x21)
C:0x0111 2534 ADD A,np(0x34)
C:0x0113 F8 MOV R0,A
C:0x0114 E6 MOV A,@R0
C:0x0115 F5B0 MOV P3(0xB0),A
95: }
C:0x0117 22 RET
121: void main(void)
122: { unsigned char temp,key,shudu=39;
C:0x0118 750A27 MOV 0x0A,#0x27
123: TMOD=0x02;
C:0x011B 758902 MOV TMOD(0x89),#0x02
124: TH0=0x00;
C:0x011E E4 CLR A
C:0x011F F58C MOV TH0(0x8C),A
125: TL0=TH0;// 未完,
C:0x0121 858C8A MOV TL0(0x8A),TH0(0x8C)
126: PT0=1;
C:0x0124 D2B9 SETB PT0(0xB8.1)
127: ET0=1;
C:0x0126 D2A9 SETB ET0(0xA8.1)
128: TR0=1;
C:0x0128 D28C SETB TR0(0x88.4)
129: EA=1;
C:0x012A D2AF SETB EA(0xA8.7)
130: while(1)
131: { P1=0x0F;
C:0x012C 75900F MOV P1(0x90),#0x0F
132: if((P1&0x0f)!=0x0F);
C:0x012F E590 MOV A,P1(0x90)
C:0x0131 540F ANL A,#0x0F
C:0x0133 640F XRL A,#0x0F
133: }}
C:0x0135 80F5 SJMP C:012C
29: void delay(uchar t)
30: {
31: uchar i;
32: uint j;
33: for (i=0;i<t;i++)
C:0x0137 E4 CLR A
C:0x0138 FE MOV R6,A
C:0x0139 EE MOV A,R6
C:0x013A C3 CLR C
C:0x013B 9F SUBB A,R7
C:0x013C 5011 JNC C:014F
34: for (j=0;j<900;j++);
C:0x013E E4 CLR A
C:0x013F FD MOV R5,A
C:0x0140 FC MOV R4,A
C:0x0141 0D INC R5
C:0x0142 BD0001 CJNE R5,#0x00,C:0146
C:0x0145 0C INC R4
C:0x0146 BC03F8 CJNE R4,#0x03,C:0141
C:0x0149 BD84F5 CJNE R5,#0x84,C:0141
C:0x014C 0E INC R6
C:0x014D 80EA SJMP C:0139
35: }
36:
37: //
38: void select(uchar LED)
39: {
40: switch(LED)
41: {
42: case 0:P2_0=0;break;
43: case 1:P2_1=0;break;
44: default: P2=0xff;
45: }
46: }
47:
C:0x014F 22 RET
48: void dispone(uchar LED,uchar number) //number 0--9
49: {
50:
51: select(LED);
C:0x0150 120177 LCALL select(C:0177)
52: P0=LEDDATA[number];
53:
C:0x0153 7442 MOV A,#LEDDATA(0x42)
C:0x0155 2D ADD A,R5
C:0x0156 F8 MOV R0,A
C:0x0157 E6 MOV A,@R0
C:0x0158 F580 MOV P0(0x80),A
54: delayus(200);
C:0x015A 7FC8 MOV R7,#0xC8
C:0x015C 7E00 MOV R6,#0x00
C:0x015E 120188 LCALL delayus(C:0188)
55: P2=0xff;
C:0x0161 75A0FF MOV PPAGE_SFR(0xA0),#0xFF
56: }
57:
C:0x0164 22 RET
58: void disp()
59: {
60: uchar i;
61:
62: for(i=0;i<2;i++)
C:0x0165 E4 CLR A
C:0x0166 FB MOV R3,A
63: {
64:
65: dispone(i,LEDBUFFER[i]);
66:
C:0x0167 AF03 MOV R7,0x03
C:0x0169 7429 MOV A,#LEDBUFFER(0x29)
C:0x016B 2B ADD A,R3
C:0x016C F8 MOV R0,A
C:0x016D E6 MOV A,@R0
C:0x016E FD MOV R5,A
C:0x016F 120150 LCALL dispone(C:0150)
67: }
C:0x0172 0B INC R3
C:0x0173 BB02F1 CJNE R3,#0x02,C:0167
68: }
C:0x0176 22 RET
38: void select(uchar LED)
39: {
40: switch(LED)
C:0x0177 EF MOV A,R7
C:0x0178 14 DEC A
C:0x0179 6006 JZ C:0181
C:0x017B 04 INC A
C:0x017C 7006 JNZ C:0184
41: {
42: case 0:P2_0=0;break;
C:0x017E C2A0 CLR P2_0(0xA0.0)
C:0x0180 22 RET
43: case 1:P2_1=0;break;
C:0x0181 C2A1 CLR P2_1(0xA0.1)
C:0x0183 22 RET
44: default: P2=0xff;
C:0x0184 75A0FF MOV PPAGE_SFR(0xA0),#0xFF
45: }
C:0x0187 22 RET
21: void delayus(uint us)
22: {
23: while(us--);
C:0x0188 EF MOV A,R7
C:0x0189 1F DEC R7
C:0x018A AC06 MOV R4,0x06
C:0x018C 7001 JNZ C:018F
C:0x018E 1E DEC R6
C:0x018F 4C ORL A,R4
C:0x0190 70F6 JNZ delayus(C:0188)
24: }
C:0x0192 22 RET本回答被提问者采纳
第2个回答  2008-05-14
用KEIL C反汇编就出来了