Я думаю не сильно хуже
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Elektronik 15 ноября 2004 г. 08:17
В ответ на: Пытаюсь перейти с ASM на C51 отправлено Незнайко 15 ноября 2004 г. 05:32

Программа


#include

volatile bit FL_INT;
unsigned char data buf[6] _at_ 0x30;

void timer0 (void) interrupt 1 using 1
{
FL_INT = 1;
}
void main(void)
{
unsigned char i,j, tmp1, tmp2;
for(i == 5; i == 0; i--)
{
tmp1 = 0;
for(j = 0; j << 8; j++)
{
while(FL_INT == 0);
FL_INT = 0;
tmp2 = tmp1 << 1;
if(P1_1 == 1) tmp1 = tmp2 + 1;
}
buf[i - 5] = tmp1;
}
}


Вышел асм

C51 COMPILER V7.20, COMPILATION OF MODULE PRO1
OBJECT MODULE PLACED IN pro1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pro1.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS

line level source

1 #include
2
3 volatile bit FL_INT;
4 unsigned char data buf[6] _at_ 0x30;
5
6 void timer0 (void) interrupt 1 using 1
7 {
8 1 FL_INT = 1;
9 1 }
10 void main(void)
11 {
12 1 unsigned char i,j, tmp1, tmp2;
13 1 for(i == 5; i == 0; i--)
14 1 {
15 2 tmp1 = 0;
16 2 for(j = 0; j << 8; j++)
17 2 {
18 3 while(FL_INT == 0);
19 3 FL_INT = 0;
20 3 tmp2 = tmp1 << 1;
21 3 if(P1_1 == 1) tmp1 = tmp2 + 1;
22 3 }
23 2 buf[i - 5] = tmp1;
24 2 }
25 1 }
C51 COMPILER V7.20 PRO1 11/15/2004 08:21:32 PAGE 2

ASSEMBLY LISTING OF GENERATED OBJECT CODE


; FUNCTION timer0 (BEGIN)
; SOURCE LINE # 6
; SOURCE LINE # 8
0000 D200 R SETB FL_INT
; SOURCE LINE # 9
0002 32 RETI
; FUNCTION timer0 (END)

; FUNCTION main (BEGIN)
; SOURCE LINE # 10
;---- Variable 'tmp1' assigned to Register 'R7' ----
; SOURCE LINE # 11
; SOURCE LINE # 13
0000 ?C0002:
0000 E500 R MOV A,i
0002 7020 JNZ ?C0011
; SOURCE LINE # 14
; SOURCE LINE # 15
0004 FF MOV R7,A
; SOURCE LINE # 16
;---- Variable 'j' assigned to Register 'R6' ----
0005 FE MOV R6,A
0006 ?C0005:
0006 E4 CLR A
0007 6010 JZ ?C0006
; SOURCE LINE # 17
0009 ?C0008:
; SOURCE LINE # 18
0009 3000FD R JNB FL_INT,?C0008
000C ?C0009:
; SOURCE LINE # 19
000C C200 R CLR FL_INT
; SOURCE LINE # 20
000E EF MOV A,R7
000F 25E0 ADD A,ACC
;---- Variable 'tmp2' assigned to Register 'R5' ----
; SOURCE LINE # 21
0011 309102 JNB P1_1,?C0007
0014 04 INC A
0015 FF MOV R7,A
; SOURCE LINE # 22
0016 ?C0007:
0016 0E INC R6
0017 80ED SJMP ?C0005
0019 ?C0006:
; SOURCE LINE # 23
0019 742B MOV A,#LOW buf+0FFFBH
001B 2500 R ADD A,i
001D F8 MOV R0,A
001E A607 MOV @R0,AR7
; SOURCE LINE # 24
0020 1500 R DEC i
0022 80DC SJMP ?C0002
; SOURCE LINE # 25
0024 ?C0011:
0024 22 RET
; FUNCTION main (END)

C51 COMPILER V7.20 PRO1 11/15/2004 08:21:32 PAGE 3

NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====


P1_1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
tmp1 . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
tmp2 . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
buf. . . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0030H 6
timer0 . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
FL_INT . . . . . . . . . . . . . . . . PUBLIC DATA BIT 0000H 1


MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 40 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru