17.12.2014, 15:37
|
#1
|
Гражданин KAZUS.RU
Регистрация: 05.03.2007
Адрес: Kyiv
Сообщений: 711
Сказал спасибо: 128
Сказали Спасибо 537 раз(а) в 159 сообщении(ях)
|
Программа из книги.. непонятки
Автор Кравченко А.В. - 10 практических устройств на AVR-микроконтроллерах. Книга 1 (200 .
Собсно, сама программа. Есть вопросы, в которых никак не могу разобраться.
1. Зачем он задействовал столько регистров?
2. Зачем он в секции настройки порта загружает в DDRB очищеный tempo, а по-настоящему порт настраивает в секции nStart?
3. Что за плутанная подпрограмма задержки такая?
4. Нафига столько nop и зачем там команды wdr?
.include "D:\Program Files\Atmel\AVR Studio\Appnotes\tn12def.inc"
.def tmp = r16
.def coc = r17
.def vih = r18
.def tempo = r19
.def pir = r22
.def pur = r23
.def par = r20
.def Y = r29
.def X = r21
.def W = r26
.def adr = r0
.def prg1 = r24
.def prg2 = r25
.cseg
.org 0
nop ;rjmp RESET
nop ;rjmp EXT_INT0 прерывание не используется
nop ;rjmp EXT_PIN прерывание не используется
nop ;rjmp TIME_OVF0 прерывание от таймера
nop ;rjmp EE_RDY прерывание от таймера
nop ;rjmp ANA_COMP прерывание не используется
.org 20
;настройка порта В
clr tmp
out DDRB, tmp
out PORTB, tmp ;обнулить порт В
clr pir
clr pur
clr prg1
clr prg2
clr adr
;Начало программы
;сброс всех значений
nStart: nop ;начало программы
ldi coc, $1E ;PB1,РВ2,РВ3,PB4-выходы
out DDRB, coc
nop
in vih, PORTB
cpi vih, $01
breq nul
ldi tempo, $64
rjmp ser
nul: ldi tempo, $34
nop
ser: nop
rcall zader
nop
rcall opros
nop
rjmp nStart
;Подпрограмма задержки включения светодиодов
zader: nop
wdr
clr W
clr X
clr Y
ldi W, $05
ldi X, $F0
dm: nop
dv: nop
wdr
mov Y, tempo
dx: dec Y
brne dx
dec X
brne dv
dec W
brne dm
ret
;Подпрограмма опроса светодиодов
opros: nop
cpi pir, $14
breq prn2
ldi ZH, high(2*prog1)
ldi ZL, Low(2*prog1)
Add ZL, pir
LPM
mov prg1, adr
out PORTB, prg1
inc pir
rjmp got
prn2: nop
cpi pur, $14
breq prn3
ldi ZH, high(2*prog2)
ldi ZL, Low(2*prog2)
Add ZL, pur
LPM
mov prg2, adr
out PORTB, prg2
inc pur
rjmp got
prn3: nop
cpi par, $14
breq nasv
ldi ZH, high(2*prog3)
ldi ZL, Low(2*prog3)
Add ZL, par
LPM
mov prg2, adr
out PORTB, prg2
inc par
rjmp got
nasv: clr pir
clr pur
clr par
clr adr
got: nop
ret
.org $100
prog1:
.DB $00, $02, $12, $18, $1A, $04, $10, $06
.DB $08, $0A
prog2:
.DB $0A, $08, $06, $10, $04, $1A, $18, $12
.DB $02, $00
prog3:
.DB $00, $04, $02, $10, $12, $06, $18, $08
.DB $1A, $0A
.EXIT
|
|
|
|
17.12.2014, 16:09
|
#2
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,392
Сказал спасибо: 1,976
Сказали Спасибо 1,332 раз(а) в 580 сообщении(ях)
|
Re: Программа из книги.. непонятки.
1) ОЗУ в тини12 нет, потому все в регистрах
2) ХЗ
3) тоже ХЗ.
4) опять ХЗ. Ну нравятся человеку NOPы. WDR вообще непонятно зачем - WDT не включается в программе.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
17.12.2014, 16:20
|
#3
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: Программа из книги.. непонятки.
Сообщение от nml
|
WDR вообще непонятно зачем - WDT не включается в программе.
|
Если фьюзом включил - надо сбрасывать.
Сообщение от Zionus
|
Нафига столько nop
|
В основном, разделяет метки разных циклов для одного и того же места.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
17.12.2014, 22:45
|
#4
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Программа из книги.. непонятки
Сообщение от Zionus
|
Собсно
|
1. см nml
2. Это вообще-то цикл, так что постоянный переинит порта сам по себе странен.
3. Вы попробуйте вставлять код секцией CODE или PHP, может что и изменится?
PHP код:
|
zader: nop
wdr
clr W
clr X
clr Y
ldi W, $05
ldi X, $F0
dm: nop
dv: nop
wdr
mov Y, tempo
dx: dec Y
brne dx
dec X
brne dv
dec W
brne dm
ret
|
три вложенных цикла.
4.а Видимо, любит он ничего не делать...
4.б см. akegor
Выбросьте Вы эту книгу от греха подальше, что-то как-то грустно всё в ней (судя по приведённому).
|
|
|
|
18.12.2014, 02:45
|
#5
|
Прописка
Регистрация: 21.04.2009
Адрес: Королёв
Сообщений: 89
Сказал спасибо: 1,054
Сказали Спасибо 34 раз(а) в 27 сообщении(ях)
|
Re: Программа из книги.. непонятки
Плохой стиль написания программы для обучения начинающих.
Названия меток и переменных - жуть. Что значат эти пир, пур, пар - лучше уж наф-наф, ниф-ниф, нуф-нуф
А что значит метка сос или, может, кок? Вообще что-то неприличное.
На метке dx: выполняется dec y, назвал бы тогда уж dy: и т.д.
Последний раз редактировалось AYuM; 18.12.2014 в 02:50.
|
|
|
|
18.12.2014, 12:08
|
#6
|
Гражданин KAZUS.RU
Регистрация: 15.02.2011
Адрес: Витебск, Беларусь.
Сообщений: 547
Сказал спасибо: 484
Сказали Спасибо 606 раз(а) в 214 сообщении(ях)
|
Re: Программа из книги.. непонятки
1. См. nml
2. Секция настройки порта, как и секция реакции на прерывания явно выдраны из другой программы. Поэтому и выглядят здесь совсем бредово.
3. Почти нормальная подпрограмма. Убрать НОПы и Выдры, очистку регистров перед загрузкой в них констант - и можно пользоваться.
4. Индусский код (ссылка была на Казусе: http://lurkmore.to/Индусский_код). Если бы студент мне принес курсач с таким кодом, "тройку" не получил бы. Ушел бы переделывать. Ну а когда автор книги (фактически учебника!!!) такое пишет, надо книгу запрещать, изымать из торговой сети, и, самое главное, делать это за счет автора.
|
|
|
Сказали "Спасибо" shurik_ss
|
|
|
18.12.2014, 15:52
|
#7
|
Прописка
Регистрация: 29.09.2006
Адрес: Санкт-Петербург, а также Ямал, Амур, Сахалин, Калининград, Краснодар-Анапа, Новый Уренгой...
Сообщений: 129
Сказал спасибо: 90
Сказали Спасибо 45 раз(а) в 24 сообщении(ях)
|
Re: Программа из книги.. непонятки
Сообщение от shurik_ss
|
1. См. nml
2. Секция настройки порта, как и секция реакции на прерывания явно выдраны из другой программы. Поэтому и выглядят здесь совсем бредово.
3. Почти нормальная подпрограмма. Убрать НОПы и Выдры, очистку регистров перед загрузкой в них констант - и можно пользоваться.
4. Индусский код (ссылка была на Казусе: http://lurkmore.to/Индусский_код). Если бы студент мне принес курсач с таким кодом, "тройку" не получил бы. Ушел бы переделывать. Ну а когда автор книги (фактически учебника!!!) такое пишет, надо книгу запрещать, изымать из торговой сети, и, самое главное, делать это за счет автора.
|
Неужто автор из "Клана Кашкарова"???
__________________
Всегда! (политическое кредо...)
|
|
|
|
18.12.2014, 16:24
|
#8
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: Программа из книги.. непонятки
Сообщение от Zahar
|
Неужто автор из "Клана Кашкарова"???
|
Человек видит по своему. Предполагаю (сей опус не читал), что он включил сторожа, потому и выдры. Если не включать - можно и убрать. Я сторожа использую, потому мне не мешает то, что через одного да каждому глаз колет.
Сильно не всматривался насчет нопов, но то, что видел вставлено для разделения мнемоник меток разных циклов (для большей наглядности), когда их адреса совпадают.
Остальное, видимо, описано в сопровождающем тексте. Что касательно инициализации порта и т.д. - возможно, в силу ряда причин, у человека выработался такой стиль.
В общем, одно и то же один считает вкусным, другой приемлемым, третий мерзкопакостным... "У каждого свой вкус - сказал индус, слезая с обезьяны"(с). А еще у Крылова есть басня про слона-художника.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
20.12.2014, 01:00
|
#9
|
Гражданин KAZUS.RU
Регистрация: 05.03.2007
Адрес: Kyiv
Сообщений: 711
Сказал спасибо: 128
Сказали Спасибо 537 раз(а) в 159 сообщении(ях)
|
Re: Программа из книги.. непонятки.
Сообщение от nml
|
1) ОЗУ в тини12 нет, потому все в регистрах
|
Так не все ведь регистры, которые он прописал, были задействованы в программе.
|
|
|
|
20.12.2014, 01:06
|
#10
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,121
Сказал спасибо: 2,569
Сказали Спасибо 11,944 раз(а) в 5,991 сообщении(ях)
|
Re: Программа из книги.. непонятки
Сообщение от Zionus
|
Так не все ведь регистры, которые он прописал, были задействованы в программе.
|
Наоборот было бы гораздо печальней. А в этом - вообще печали не вижу.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:12.
|
|