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

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

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

то есть я написал для наиболее приличной оптимизации, но с точки зрения красоты кода это нехорошо (надо все таки юзать for)
результат не супер, но уже кое-что


volatile bit fl_int;
unsigned char bCnt;
unsigned char byteCnt;
unsigned char dat;
unsigned char data *ptr = 0x30;
byteCnt = 6;
do {
while (!fl_int)
;
fl_int = 0;
bCnt = 8;
do
{
dat <<= 1;
if (P1_1)
dat |= 1;
} while (--bCnt != 0);
*ptr++ = dat;
} while (--byteCnt != 0);

результат (Keil 7.0):
; SOURCE LINE # 4
;---- Variable 'dat' assigned to Register 'R7' ----
; SOURCE LINE # 5
; SOURCE LINE # 10
;---- Variable 'ptr' assigned to Register 'R6' ----
0000 7E30 MOV R6,#030H
; SOURCE LINE # 11
;---- Variable 'byteCnt' assigned to Register 'R5' ----
0002 7D06 MOV R5,#06H
; SOURCE LINE # 12
0004 ?C0004:
; SOURCE LINE # 13
0004 3000FD R JNB fl_int,?C0004
0007 ?C0005:
; SOURCE LINE # 15
0007 C200 R CLR fl_int
; SOURCE LINE # 16
;---- Variable 'bCnt' assigned to Register 'R4' ----
0009 7C08 MOV R4,#08H
000B ?C0008:
; SOURCE LINE # 18
; SOURCE LINE # 19
000B EF MOV A,R7
000C 25E0 ADD A,ACC
000E FF MOV R7,A
; SOURCE LINE # 20
000F 309103 JNB P1_1,?C0006
; SOURCE LINE # 21
0012 430701 ORL AR7,#01H
; SOURCE LINE # 23
0015 ?C0006:
0015 DCF4 DJNZ R4,?C0008
; SOURCE LINE # 24
0017 AC06 MOV R4,AR6
0019 0E INC R6
001A A804 MOV R0,AR4
001C A607 MOV @R0,AR7
; SOURCE LINE # 25
001E DDE4 DJNZ R5,?C0004



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

Ответы



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

E-mail: info@telesys.ru