[an error occurred while processing this directive] [an error occurred while processing this directive]
Наверно мне не хватает настойчивости, см. алгоритм побитной записи байта в ЕЕПРОМ 24Сххх : ( наверно команда сложения выполняется быстрее ? сам кейл в отладчике дает 1 такт для ADD & RLC!)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено ValterG 09 июня 2002 г. 10:38
В ответ на: Осторожнее дяденька, эту конференцию читают дети всей страны отправлено Elektronik 08 июня 2002 г. 17:19

( Оптимизация 9, пробовал и size и speed )
1 #define uchar unsigned char
2 bit SDA;
3 bit shout(uchar buf)
9 {register uchar j;
10 1 for( j = 8; j > 0; j-- )
11 1 {
12 2 SDA=buf ; buf <<= 1;
13 2 //#pragma asm
14 2 // mov a,r7
15 2 // rlc a // set bit from byte
16 2 // mov r7,a
17 2 // mov SDA,c // output bit
18 2 //................
19 2 //#pragma endasm
20 2 } }
*** WARNING C173 IN LINE 20 OF SHOUT.C: missing return-expression
C51 COMPILER V6.23a SHOUT 06/09/2002 10:29:40 PAGE 2

ASSEMBLY LISTING OF GENERATED OBJECT CODE


; FUNCTION _shout (BEGIN)
; SOURCE LINE # 3
;---- Variable 'buf' assigned to Register 'R7' ----
; SOURCE LINE # 9
; SOURCE LINE # 10
;---- Variable 'j' assigned to Register 'R6' ----
0000 7E08 MOV R6,#08H
0002 ?C0001:
; SOURCE LINE # 11
; SOURCE LINE # 12
0002 EF MOV A,R7
0003 24FF ADD A,#0FFH
0005 9200 R MOV SDA,C
0007 EF MOV A,R7
0008 25E0 ADD A,ACC
000A FF MOV R7,A
; SOURCE LINE # 20
000B DEF5 DJNZ R6,?C0001
000D ?C0004:
000D 22 RET
; FUNCTION _shout (END)

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

Ответы



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

E-mail: info@telesys.ru