[an error occurred while processing this directive]
ATmega88 (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Rodik 15 октября 2005 г. 13:01

Имеет ли шансы зависнуть в цикле следующая функция?


;=============================================================================
;==
;== procedure EncodeData(data:word;var shift1,sign1,shift2,sign2: integer);
;== begin
;== shift1:=data div 24;
;== sign1:=1;
;== if shift1>11
;== then
;== begin
;== shift1:=shift1-12;
;== sign1:=-sign1;
;== end;
;==
;== shift2:=data mod 24;
;== sign2:=1;
;== if shift2>11
;== then
;== begin
;== shift2:=shift2-12;
;== sign2:=-sign2;
;== end;
;== end;
;==
;=============================================================================
;==
;== INPUT:
;== hData=[0..575]
;==
;== OUTPUT:
;== Max: b0-sign1,b1-sign2
;== hDatah: Shift1
;== hDatal: Shift2
;==
;=============================================================================
EncodeData:
clr max
ldi tmpl,24
ldi tmph,0x10
ldi i,0
;
; i=hdata div 24
;
ed_loop: or i,tmph ; i=i | tmph;
mul i,tmpl ; r1:r0= i*tmpl
cp hdatal,r0 ; if (hdatah:hdatal cpc hdatah,r1 ; {i=i ^ tmph;}
brcc PC+2
eor i,tmph
lsr tmph ; tmph=tmph>>1
brcc ed_loop ; if tmph!=0 the goto ed_Loop
;
; hdatal=hdata mod 24
;
mul i,tmpl
sub hdatal,r0
;
cpi i,12
brcs PC+3
subi i,12
subi max,-1
;
cpi hDatal,12
brcs PC+3
subi hDatal,12
subi max,-2
;
mov hDatah,i
ret

При вызове из определенных мест программы получается что может. Указатель стека там где нуна. Вподаю в отчаяние....

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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru