Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Профессионалы и любители AVR помогите! 
:(
    Опции темы
BEDNII_Student
Дата 22.6.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.6.2007

Репутация: нет
Всего: нет



Профессионалы и любители AVR помогите!
Граждане,  решается судьба Бедного студента.  Нужно решить такую простенькую (для Вас) задачку
Программирование ATmega16 AVR

Задание:
Делаем 2 нажатия на кнопку. Измерить длительность каждого нажатия с точностью не меньше 10 мск
После – среднее значение времени передать в последовательный порт со скоростью 9600 бит/сек

Ниже приведены фрагменты, взятые из разных источников, насколько правильно не знаю. Буду очень благодарен, если напишите программку. Заранее благодарю!

.include "m16def.inc"

.def Temp =r16 ; Temporary register ;объявление регистров

1Делаем бесконечный цикл, в нем опрос кнопки. Если  нажата – запустить внутренний цикл с проверкой, пока нажат, в котором наращиваем счетчик и вызываем подпрограмму задержки 10 мск

LOOP:
out PORTB,temp ; Запись регистра temp в порт B
sbis PIND,0x00 ; If (Port D, pin0 == 0) Если бит 0 в порт B установлен
inc Temp ; то увеличение значения  регистра temp на 1


        
men:    in  rez, ADCh    
        subi rez,  0b00001001
     brmi men
bol:    
        call za4
        call za4
        call za2; задержка на 10 милисекунд
        in  rez,ADCh
        subi rez, 0b01000011
        
    
    
     out portb, rez

        rjmp Loop

za4:        ldi r19, 200
    m3:    ldi r20, 192
    m2: ldi r21, 192
    m1:    dec r21
        brne m1        
        dec r20
        brne m2
        dec r19
        brne m3
ret

za2:        ldi r19, 100
    m3:    ldi r20, 192
    m2: ldi r21, 192
    m1:    dec r21
        brne m1        
        dec r20
        brne m2
        dec r19
        brne m3
ret
   
2 Так же второе нажатие

3. Складываем и сдвиг вправо
Lsr (сдвиг вправо?)
4.Настройка порта
LOOP:
out PORTB,temp ; Запись регистра temp в порт B

5.Вывод


Пример программы на ассемблере, использующей таймер/счетчика

.include "m16def.inc"

.def Treg = r16
.def Preg1 = r22

.cseg

.org $000  ; Установка положения в сегменте (см. тему: сброс и установку прерывания)
rjmp start  ; назначения перехода на начало программы метка «start»

.org $012   ;назначения перехода по переполнению счетчика на метку «tim»
rjmp tim

Tim:
    Out DDRB, preg1
    inc preg1
    call inittime
    reti

start:
        clr preg1 ; очищаем регистр (инициализация)

        sei    ; разрешение прерываний установка биту 7 регистра SREG лог. 1
        
        ldi Treg, 00000001b ;запись числа в «Treg»
        out TIMSK, Treg         ;запись регистра «Treg»  в регистр «Timsk»
        
        call inittime    ; вызов подпрограммы «inittime»

        ldi Treg, 10000101b
        out TCCR0, Treg  ; установка тактирования
        rcall loop    ; вызов «Loop»
Loop:
    
    rjmp loop
    ret
inittime:
    ldi Treg, 00001111b
    out TCNT0, Treg  ; установка начального значения с которого начинается «отчет до переполнения»
ret







PM MAIL   Вверх
try_to_get
Дата 1.9.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 426
Регистрация: 19.3.2007
Где: Россия

Репутация: нет
Всего: 2



BEDNII_Student, Коды программ нужно помещать в [ code = ] [/code]  smile 

Это сообщение отредактировал(а) try_to_get - 1.9.2007, 19:55


--------------------
Алгоритм не роскошь, а средство достижения цели!
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0746 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.