|
трудности с ASM, помогите написать первую прошивку на асм |
|
|
|
Jun 23 2008, 18:22
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507

|
Здравствуйте . Начел учить АСМ решил попрактиковатся и написать прошрамму мигания диодом . пишу в AVR Studio . подскажите что я делаю не правельно желательно с правельными примерами первый попрос обезательно ли записывать в стек его вершину ? если обезательно то как это сделать ? .include"m16def.inc" .list .def temp = r16 .def loop = r17 .cseg .org 0 ldi temp, 0xFF out DDRA, temp ldi temp, 0 out PORTA,temp ldi temp, 0x08 out ACSR, temp main: ldi r17, 255 rjmp zzz ggg: in r18, PORTA sbrs r18, 7 rjmp zag sbrc r18, 7 rjmp tyx rjmp main zzz: dec r17 sbrs r17, 0 rjmp ggg rjmp zzz zag: ldi r20, 255 out PORTA, r20 rjmp main tyx: ldi r20, 0 out PORTA, r20 rjmp main
Сообщение отредактировал Costia - Jun 23 2008, 18:47
|
|
|
|
|
Jun 23 2008, 19:09
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Во-первых, все же следует прописать область векторов прерываний, даже если они не используются. Пример есть в даташите на контроллер. Во-вторых, стек действительно лучше инициализировать. Можно так: Код ldi temp, high(RAMEND) out SPH, temp ldi temp, low(RAMEND) out SPL, temp В-третьих, если это задержка - Код zzz: dec r17 sbrs r17, 0 rjmp ggg rjmp zzz то вылетит из нее программа моментально: 255-1=254, bit0 = 0. Даже если переписать ее правильно, то счетчик придется изрядно расширить для получения визуального эффекта.
|
|
|
|
|
Jun 23 2008, 19:28
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507

|
А если вот так его задерживать ? чистота 1мгц
zzz: dec r17 brne ggg rjmp zzz
3 команды следовательно 3 такта на цикл 760 тактов , 1 000 000 в секунду следовательно задержка меньше чем на 1 милисекунду лседовательно эфекта не будет ыыы следовательно добавим есче один регистр и получим 65 000 циклов , 195 000 тактов это почти 200 мс что уже видно ыыы
|
|
|
|
|
Jun 23 2008, 19:41
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Ещё можно тело цикла наполнить медленными инструкциями: Код push r0; 2 такта lpm; 3 такта lpm; 3 такта pop r0; 2 такта = 10 тактов как с куста  Но лучше всего научиться использовать таймер...
Сообщение отредактировал demiurg_spb - Jun 23 2008, 19:43
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jun 23 2008, 19:41
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Costia @ Jun 23 2008, 23:28)  zzz: dec r17 brne ggg rjmp zzz brne на breq замените только. Цитата(Costia @ Jun 23 2008, 23:28)  3 команды следовательно 3 такта на цикл 760 тактов , Не 3, а 4 (rjmp).
|
|
|
|
|
Jun 23 2008, 19:50
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507

|
xxx: dec r18 ldi r21, 0 sbrs r18 ,7 ldi r21, 255 sbrs r18 ,6 ldi r21, 255 sbrs r18 ,5 ldi r21, 255 sbrs r18 ,4 ldi r21, 255 sbrs r18 ,3 ldi r21, 255 sbrs r18 ,2 ldi r21, 255 sbrs r18 ,1 ldi r21, 255 sbrs r18 ,0 ldi r21, 255 sbrs r21,7 rjmp ggg zzz: dec r17 ldi r21, 0 sbrs r17 ,7 ldi r21, 255 sbrs r17 ,6 ldi r21, 255 sbrs r17 ,5 ldi r21, 255 sbrs r17 ,4 ldi r21, 255 sbrs r17 ,3 ldi r21, 255 sbrs r17 ,2 ldi r21, 255 sbrs r17 ,1 ldi r21, 255 sbrs r17 ,0 ldi r21, 255 sbrs r21,7 rjmp xxx rjmp zzz
вот это уже весело = )))
заработало !!!!!!
|
|
|
|
|
Jun 23 2008, 19:50
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Это сейчас весело. Потом будет грустно. Лучше использовать вложенные циклы: Код ldi tmp0, 123 clr tmp1 l0: dec tmp1 brne l0 dec tmp0 brne l0 или регистровую пару: Код ldi XL, low(DLY) ldi XH, high(DLY) l0: sbiw XL, 1 brne l0
|
|
|
|
|
Jun 23 2008, 20:01
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507

|
"Во-первых, все же следует прописать область векторов прерываний, даже если они не используются. Пример есть в даташите на контроллер."
Подскажите пожалуйста как прописать область векторов прерывания ???
|
|
|
|
|
Jun 23 2008, 22:00
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 23-06-08
Пользователь №: 38 507

|
VDG я рад что ты знаеш как правельно пишутся слова жаль тока по ходу не знаеш что означает правельно . Значения слов субьективно и это факт . Это означает что с точки зрения логики нельзя сказать что значения слов которые написанны в словаре обьективно лучше или хуже моих значений . Тоже самое и с написаниям . Субьективные предстовления отдельно взятокого человека были обусловлены правельными с целью систематизации... Для меня слова это лиш носитель информации и в отдельно взятом случае искажения этого носителя от обусловленно правельного допустимо так ты понимаеш что я хотел сказать . А ты в следствии своих относительных приоретов пытаешся доказать себе что лучше чем я . Удачи тебе конечно в этом = )))
|
|
|
|
|
Jun 23 2008, 22:07
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Цитата эх не с того ты Костя начАл. Даже с этого ему начинать рано. Мистер Бин в фильме Бин (когда его задерживают в зоне прилета) - Вы таблетки какие-нибудь принимаете? - Неет. - А не помешало бы.
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jun 24 2008, 09:33
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Да мы не ограничиваем твою свободу самовыражения. Просто форум несколько не тот. Ты балуешься, а нам приходится сначала понять что именно ты имел сказать (учитывая сумбур в твоей голове), а потом и дать осмысленный ответ. Тут ещё фишка такая (не в обиду тебе будет сказано), что программирование - это полная систематизация. Если ты напишешь "превед", то тебе ответят, а вот компилятор на команду ldn - даст просто сообщение об ошибке. Ты вдумайся в то, что тебе советуют "все же следует прописать область векторов прерываний, даже если они не используются"! Ни в одной области знаний тебе такого не посоветуют. Представь себе если бы тебе в строительстве дали бы следующий совет: "даже если ты не будешь пока в доме делать лифт - шахту лифта всётаки построй". Программирование накладывает на человека свой отпечаток. Говорят программист на ночь ставит два стакана. Один с водой, второй пустой. Полный - если захочется пить, а пустой - если пить не захочится. (Сравни с советом.  ) Иными словами, у программистов свои тараканы в голове, но они полная противоположность твоим тараканам. Поэтому и такое неприятие. В программировании считается красивым и правильным подходом когда на программу из 10 строчек приходится 150 строчек описаний, объявлений, коментариев, инициализаций разных и макросов. И, самое главное, что они не для красоты это делают. С опытом и течением времени, они просто разучиваются делать по другому. У них по другому душа не принимает. Если ты выберешь программирование и в частности эмбедерство, то ты получишь колосальное удовольствие от этой профессии. Увидев изделие, ты будешь сразу представлять как оно работает, силой твоей мысли будут оживать двигатели, клапана и сложные изделия. Будут передаваться данные на уникальные расстояния и ты будешь распоряжаться чужими желаниями. А вот книжку будешь листать методом половинного деления.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|