Пробуем программировать на АБ

Аватара пользователя
Petrovich
Сообщения: 2021
Зарегистрирован: 25 авг 2008, 23:19

Re: Пробуем программировать на АБ

Сообщение Petrovich »

PAVEL писал(а):...,несоображу как правельно алгоритм составить, выбор режима . :?
И не сообразиш, надо сначала посмотреть как это делают другие. Я тоже подсмотрел. Вот фрагмент из нашего переключателя режимов. Мною усвоеный ещё со времён "Эл-60"...
Есть множество и других, но тебе пока хватит этого, как самого убойного.
Итак, записываем в какой-то регистр Х (16-и разрядный, см. даташит) выбранное на халяву не слабое число, в моём случае 15000.
Копируем порт В в R12. И верёвок на порте 8 и регистр восьмиразрядный.
Инвертируем регистр R12. Это делается чисто для удобства потом наблюдать, ведь нам удобнее считать, что нажатая кнопка даёт елиницу, а она фактически подпаяна к нулю.
Но кнопка-то одна, а разрядов 8, чтобы не сбиваться остальные разряды маскируем, т.е. накладываем маску. Эта маска в нашем случае получилась шеснадцатиричное число $DF. $-признак шеснадцатиричности. Маска тупо сбрасывает остальные, не нужные нам разряды.
В регистре R13 сохранён результат предыдущего чтения. Вот мы и сравниваем, текущее чтение такое же или изменилось? Если изменилось, то значит это был дребезг, тогда мы опять загоняем в Х 15000 и всё поновой, пока на входе мы не получим единицу 15000 раз подряд.
После каждого R12=R13 следует X-- т.е. отнимаем единицу. И когда Х станет равен нулю выходим из п/программы (RET) с полной уверенностью что кнопка точно нажата. Ведь мы её проверили 15 тыш раз.
Вложения
опрос_кн.jpg
Аватара пользователя
PAVEL
Сообщения: 1217
Зарегистрирован: 10 дек 2011, 18:37
Откуда: Россия

Re: Пробуем программировать на АБ

Сообщение PAVEL »

Petrovich писал(а): И не сообразиш, надо сначала посмотреть как это делают другие. Я тоже подсмотрел. Вот фрагмент из нашего переключателя режимов...
Спасибо большое ! сам бы точно не догодался до такого,про маску и не слышал, будем знать.А я голову ломаю, как думаю кнопку опрашивать.
В архиве у себя нашол точ такую думал это для знкодера,а так же можно опрос сделать.Буду разбираться. :D
Аватара пользователя
Petrovich
Сообщения: 2021
Зарегистрирован: 25 авг 2008, 23:19

Re: Пробуем программировать на АБ

Сообщение Petrovich »

PAVEL писал(а):....А я голову ломаю,....Буду разбираться. :D
Теперь набери это в "чистом" поле и пройди пошагово. Получиш просто наслаждение от того, как это происходит. Чем-то это напоминает наблюдать за шестерёнками в часах, завораживает. Заодно разберёшся с техникой написания. Спрашивай.
Аватара пользователя
PAVEL
Сообщения: 1217
Зарегистрирован: 10 дек 2011, 18:37
Откуда: Россия

Re: Пробуем программировать на АБ

Сообщение PAVEL »

Запустил часики ,добавил прерывание без него не хотели работать.Сейчас картинку длбавлю.Прикольно смотреть на них, ещё бы в железе так работали.
Аватара пользователя
Petrovich
Сообщения: 2021
Зарегистрирован: 25 авг 2008, 23:19

Re: Пробуем программировать на АБ

Сообщение Petrovich »

PAVEL писал(а):... ,добавил прерывание....
Это разрешение на вообще прерывания. Не понял, на хрена это тебе?
Аватара пользователя
PAVEL
Сообщения: 1217
Зарегистрирован: 10 дек 2011, 18:37
Откуда: Россия

Re: Пробуем программировать на АБ

Сообщение PAVEL »

Petrovich писал(а):...Не понял, на хрена это тебе?
Наверно это для симула надо ,без него отказывался считать числа больше 255 и адрес DF.
Аватара пользователя
Petrovich
Сообщения: 2021
Зарегистрирован: 25 авг 2008, 23:19

Re: Пробуем программировать на АБ

Сообщение Petrovich »

PAVEL писал(а):...Наверно это для симула надо...
Не надо это ни кому, проехали.
Давай теперь оформим это в программу.
Программа должна начинаться Ресетом (жирным) потом SP, это установка стэка и заканчиваться чем-то, обычно она должна быть зациклена.
А давай ка всю прогу кнопки и посмотрим. Набирай вот это и поехали спрашивать. Для начала разберёмся как настраиваются порты.
Вложения
knopka.jpg
Аватара пользователя
PAVEL
Сообщения: 1217
Зарегистрирован: 10 дек 2011, 18:37
Откуда: Россия

Re: Пробуем программировать на АБ

Сообщение PAVEL »

Ну во опять так пишет,недопустимая операция $ I почитал тогда мануал там написано что любые операции между рабочим регистром и константой,возможна только для регистров старшего порядка r16..r31.После, может написать что неправелный адрес #FС,должно быть b_h_o.Вчера тоже так писал,а когда прерываеие поставил прекратилось,сецчас ставил не помогает.
И ещё пише не объявленое имя (положение)как его тогда обозвать .Буду копать дальше.
Аватара пользователя
Petrovich
Сообщения: 2021
Зарегистрирован: 25 авг 2008, 23:19

Re: Пробуем программировать на АБ

Сообщение Petrovich »

PAVEL писал(а):... любые операции между рабочим регистром и константой,возможна только для регистров старшего порядка r16..r31....
Не обращай внимания. Это было в ранних версиях АБ.
А вот что там за "недопустимая операция" я не понял.
Необьявленное имя это понятно. АБ не знает что значит "положение". Ему это надо указать в таблице. Нажимаем таблицу, и в секции ЕЕПРОМ просто указываем, что это ячейка ЕЕПРОМ.
В выражении с маской убери пробелы.
Аватара пользователя
PAVEL
Сообщения: 1217
Зарегистрирован: 10 дек 2011, 18:37
Откуда: Россия

Re: Пробуем программировать на АБ

Сообщение PAVEL »

Пробелы убрал другая вылазит,адрес записал так #hFC молчит,чего нехватает вчера запустился и пробелы были ничё не пойму.
Запустил в место положение поставил Х ,но останавливается на condimg пишет (указатель стека 0,меньше границы контроля)
Ответить