20.11.2013, 11:56
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от dosikus
|
Вот такая ж .. выходит :
|
Если так
Код:
|
struct {
unsigned aaa :1;
unsigned bbb :1;
unsigned ccc :1;
unsigned ddd :1;
unsigned eee :1;
unsigned fff :1;
unsigned ggg :1;
unsigned hhh :1;
}f_flag; |
тогда
Код:
|
f_flag.aaa = 1;
main:
INTVEC$$Limit:
008080 CE0018 LDW X, f_flag
008083 01 RRWA X, A
008084 AA01 OR A, #?b1
008086 02 RLWA X, A
008087 CF0018 LDW f_flag, X
nop();
00808A 9D NOP
f_flag.bbb = 1;
00808B 01 RRWA X, A
00808C AA02 OR A, #?b2
00808E 02 RLWA X, A
00808F CF0018 LDW f_flag, X
nop();
008092 9D NOP
f_flag.ccc = 1;
008093 01 RRWA X, A
008094 AA04 OR A, #?b4
008096 02 RLWA X, A
008097 CF0018 LDW f_flag, X
nop();
00809A 9D NOP |
В если так
Код:
|
struct {
uint8_t aaa :1;
uint8_t bbb :1;
uint8_t ccc :1;
uint8_t ddd :1;
uint8_t eee :1;
uint8_t fff :1;
uint8_t ggg :1;
uint8_t hhh :1;
}fflag; |
тогда вот так
Код:
|
fflag.aaa = 1;
00809B 7210001A BSET fflag, #0
nop();
00809F 9D NOP
fflag.bbb = 1;
0080A0 7212001A BSET fflag, #1
nop();
0080A4 9D NOP
fflag.ccc = 1;
0080A5 7214001A BSET fflag, #2
nop();
0080A9 9D NOP |
ИАР 1.41
|
|
|
Сказали "Спасибо" nahimovv
|
|
|
20.11.2013, 15:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от boydyzy
|
Предпочитаю строгие знаки › и ‹, чем с "равно"
|
А я предпочитаю "строгие" цифры - это важнее, чем знаки, которые "всё равны".
Пример:
Код:
|
#define ARR_LEN 100
for (i=0; i ‹ ARR_LEN; ++i){ ... }
for (i=1; i ‹= ARR_LEN; ++i){ ... } |
а вам пришлось бы писать:
Код:
|
#define ARR_LEN 100
for (i=1; i ‹ ARR_LEN+1; ++i){ ... } |
__________________
There's always more than one way to skin a cat.
|
|
|
|
21.11.2013, 09:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от boydyzy
|
Индекс удобно начинаеть с нуля. Иначе проблемы с обращениями к массивам и т.д.
|
Интересный подход к программированию - писать то, что удобнее, а не то, что требуется по алгоритму. Если возникают проблемы обращения к массивам, то, может, "удобнее" их не использовать !!!
|
|
|
|
21.11.2013, 11:31
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от Boba_spb
|
Интересный подход к программированию - писать то, что удобнее, а не то, что требуется по алгоритму.
|
Если меняется форма записи, то причём здесь алгоритм, если он от этого не меняется?
|
|
|
|
21.11.2013, 11:34
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от boydyzy
|
С другой стороны, если поменять направление счетчика сразу
|
Если компилятор умный, то он сам это сделает.
|
|
|
|
21.11.2013, 11:42
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от boydyzy
|
Приведите реальный пример кода, который требует начала с 1-го до чего-то там.
|
"Элементарно, Ватсон!"(С)
Массив элементов, где первые n элементов содержат служебные символы или служебную информацию не подлежащую изменению. Выталкивается , при передаче, весь массив, а изменяется лишь частично.
|
|
|
|
21.11.2013, 12:19
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от boydyzy
|
Я могу придумать много синтетических задачек.
|
Вот вам по теме!
STM8L и MT-10t7 через ДМА, первый элемент всегда содержит команду установки в нулевую позицию экрана дисплея и никогда не меняется.
|
|
|
|
21.11.2013, 13:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от boydyzy
|
Boba_spb, Алгоритмы пишут люди, и, как я уже сказал, если индекс начинается "не с нуля", то что-то не так с логикой. Ну любит компьютер что-бы числа начинались с нуля! Так он устроен, и алгоритмы к этому подгоняются часто.
|
Компьютер ничего не любит - он тупо выполняет команду за командой. А любовь "что-бы числа начинались с нуля! " - это бред. Посмотрите любой алгоритм сортировки массива, например. Что там с индексами массива творится ?
|
|
|
|
21.11.2013, 15:10
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: FAQ по STM8
Кстати!
Сообщение от boydyzy
|
Если нужно бежать от MAX-1 до 0 (как обычно надо), но можно сделать в обратном порядке, то модифицируем так:
Код:
|
#define ARR_LEN 100
for (i=ARR_LEN - 1; i ‹ 0; i--){ ... } |
Опять же, на пару тактов короче должно быть.
|
Та не, сразу на всю длину этой херни!
Цитата:
|
Могу дома проверить "в железе" на макетке.
|
Не, не стОит, лучше K&R почитайте.
|
|
|
|
21.11.2013, 18:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от boydyzy
|
когда вы объявляете константу и ... вычисление в момент компиляции ... по времени оно все будет одинаково выполнятся
|
Бог мой, что это за бред? С чего это вы решили, что константа здесь имеет хоть какое-то значение? Или понять, что на этом месте может стоять и переменная, и вызов функции, и, например, выражение присвоения - образования не хватило?
И откуда это дикое предположение, что речь шла о времени выполнения?
Сообщение от boydyzy
|
Плюс, пример странный, он от 1-цы бежит. Это само по себе странно. Индекс удобно начинаеть с нуля. Иначе проблемы с обращениями к массивам и т.д.
|
Для алгоритмики, не выходящей за рамки примеров из учебников, это действительно нечастый случай, однако, в жизни всё совсем иначе.
Сообщение от boydyzy
|
если индекс начинается "не с нуля", то что-то не так с логикой.
|
Дааа, сон разума рождает чудовищ! Индекс " начинается" с первого нужного значения, а не с вашего ограниченного понимания.
Сообщение от boydyzy
|
В подавляющем большинстве случаев стоит взглянуть на придуманный алгоритм и его доработать,
|
При той узости кругозора, что вы только что продемонстрировали, слова " в подавляющем большинстве случаев" - выглядят маниакальным бредом.
Сообщение от boydyzy
|
Я могу придумать много ...
|
Не утруждайтесь, написанного вами выше - предостаточно!
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 21.11.2013 в 18:52.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:57.
|
|