Перейти к содержанию
    

Кто-нибудь может дать совет начинающему?

Сомневаюсь в правильности написания.Может кто глянет,какие ошибки.

По идее должна считать период

модель AT90S2313

rjmp Init

rjmp ext0

reti

rjmp CUPT1

 

Init:программа инициализации

-//-//-//-//-//-//-//-//-

-//-//-//-//-//-//-//-//-

-//-//-//-//-//-//-//-//

ext0:

in PеrL,ICR1L;

in PеrH,ICR1H;

CUPT1:

in temp,ICR1L ;сохраняем захваченное значение

in tempH,ICR1H ;в рабочих регистрах

sub temp,PеrL ;вычисляем разность между

sbc tempH,PеrH ;старым и новым значением

in PеrL,ICR1L ;запоминаем новое

in PеrH,ICR1H ;значение

Изменено пользователем Сергей X

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сомневаюсь в правильности написания.Может кто глянет,какие ошибки.

По идее должна считать период

модель AT90S2313

К сожалению, не знаком с системой команд этого проца. Тем не менее, попробую прокомментировать то, что понял

  rjmp  Init     
; После прыжка на Init вы, похоже, никогда не вернетесь назад, поскольку 
; у вас здесь нет меток, куда бы можно было прыгнуть. А коль не вернетесь, 
;  то нафига вам следующие три команды?
  rjmp  ext0   
  reti              
  rjmp  CUPT1 

Init:программа инициализации 
-//-//-//-//-//-//-//-//-
-//-//-//-//-//-//-//-//-
-//-//-//-//-//-//-//-//
ext0:
  in   PеrL,ICR1L;
  in   PеrH,ICR1H;
CUPT1:
  in   temp,ICR1L    ;сохраняем захваченное значение
  in   tempH,ICR1H;в рабочих регистрах
; А сколько времени успело пройти с того момента, когда вы 
; исполнили команды под меткой ext0: ? Всего ничего. Вряд ли
; это соответствует вашим намерениям.

  sub  temp,PеrL;вычисляем разность между 
  sbc  tempH,PеrH     ;старым и новым значением
; Неверно, поскольку вычитаются 16-битные числа. Значит,
; обязательно должен обрабатываться перенос из старшего байта в младший 

  in  PеrL,ICR1L;запоминаем новое  
  in  PеrH,ICR1H;значение
; За время, пока вы вычисляете разность, ICR1L и ICR1H могут
; успеть измениться. Сохранять надо бы  temp и tempH. 

; А где цикл? А куда выводятся результаты?

В общем, впечатление такое, что это работать не будет никак, уж извините.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

rjmp Init; вектор сброса

rjmp ext0; вектор запуска по внешнему прерыванию

reti;

rjmp CUPT1; вектор прерывания по захвату

;______________________________________________________________________

 

Init:

ldi temp,64 ;

out GIMSK,temp ;

ldi temp,15 ;

out WDTCR,temp ;

ldi temp,low(RAMEND);

out SPL,temp ;

ldi temp,255 ;

out DDRB,temp

ldi temp,0 ;

out DDRD,temp

ldi temp,0 ;

out PortD,temp ;

clr temp ;

out UCR,temp ;

ldi temp,128 ;

out ACSR,temp ;

clr temp ;

out TCCR1A,temp ;

ldi temp,65 ;

out TCCR1B,temp ;

ldi temp,51 ;

ldi temp,0 ;

out TCCR0,temp ;

ldi temp,8 ;

out TIMSK,temp ;

ldi temp,128 ;

out SREG,temp ;

 

SON:sleep

;_____________________________________________________________________

 

;Программа измерения:

ext0:

CUPT1:

in PrL,ICR1L ;сохраняем захваченное значение(по первому пришедшему импульсу)

in PrH,ICR1H ;значения таковы,что перенос разряда не нужен

tst tempL ;ждем второй импульс,т.е. проверяем записалось ли знечение второго импульса

brne M1 ;в регистр tempL,если да, то вычисляем разницу,если нет-ждем

mov tempL,PrL ;

mov tempH,PrH ;след. импульс

M:nop ;

rjmp M ;

M1:sub tempL,PrL ;значения таковы,что перенос разряда не нужен

sbc tempH,PrH ;

reti ;

 

И еще,есть мысль обнулять TCNT1 перед началом измерения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...