|
|
|
|
Ошибочно запостил. Удалено. |
|
|
picmaniac, а как в задании 3 должны быть распределены входы - выходы по портам? Ну, в смысле, где светодиоды, где кнопки, где выходы. Можно конечно самому раскидать, но для единообразия задайте. И еще. По поводу бегущего огня. Допустима ли пауза между загоранием шестого с/д и первого? Ну как-бы расчитываем на 8, а подключаем 6. Либо после зажигания шестого регистр устанавливаем в единицу и продолжаем сдвигать по новой? Да, ну и защиту от дребезга пока не делаем? Или делаем, но потом? |
|
|
Zandy: а как в задании 3 должны быть распределены входы Задачка на сообразительность. Я специально не стал указывать. Ваши предложения? Пауза по техзаданию недопустима. Насчёт защиты от дребезга - читайте ТЗ внимательно.
|
|
|
Предлагаю на RA0-RA5 светодиоды, RA6, RA7 - выходы на внешние ус-ва. RB0 - кнопка "L". RB1 - кнопка "R". По поводу дребезга думаю так. При однократном нажатии, наверное, ничего делать не надо, т. к. циклы опроса кнопок будут идти быстро, рано или поздно "наткнутся" на нажатую кнопку и основная программа перемигивания начнет выполняться. Но вот при удержании немного не понятно. Здесь опрос кнопок будет редкий, с паузами на время пробегания бегущего огня. И если вдруг проскочит фальшивая 1 (ослабится давление на кнопку) и это событие совпадет по времени с опросом кнопок, основная программа перестанет выполняться и опять зациклится в малое кольцо опроса кнопок. Фальшивая 1 пропадет, и программа пойдет выполняться далее, как и положено. Все бы ничего, но в момент попадания в малое кольцо опроса кнопок, на выходе L (R) может кратковременно проскочить 0, а это противоречит заданию. И еще - одновременное нажатие двух кнопок? Здесь тоже как-то неясно с дребезгом при удерживании кнопок. Ну в смысле, моргания светодиода мы не заметим, но вот на выходах то может быть коротенький импульс. Не, не так. При появлении фальшивой 1 программа уйдет в пп бегущего огня, выполнится, по крайней мере один цикл этой пп. Вообще, дребезг для меня всегда был "камнем преткновения". Все. Прошу тайм-аут. Меня берут "в оборот". |
|
|
Zandy: Предлагаю на... Хорошо подумали??? Аргументы "за"? И вообще, не стоит торопиться. Задачу лучше решать поэтапно. И для начала очень рекомендую прочитать выложенную мной статью. Я только что сам её ещё раз перечитал. Как раз "то, что доктор прописал". Доступ к файлообменнику есть? Если нет - пришлю мэйлом. Тоже беру тайм-аут до вечера. |
|
|
picmaniac: Хорошо подумали??? Соображения только такие. Легче один порт на вход, другой - на выход, чем разбивать один порт: часть разрядов на вход, часть на выход. Ну и на В можно подключить подтягивающие резисторы, значит - вход. |
|
|
picmaniac: Если нет - пришлю мэйлом. Лучше мэйлом, если можно. С файлообменником пока не разбирался. |
|
|
Отправил. Я бы сделал RB6, RB7 кнопки; RB0-RB5 светодиоды; RA0, RA1 выходы. RA5/_MCLR не очень хочется трогать, к тому же он без выходного буфера (см. даташит). RB6, RB7 имеют подтягивающие резисторы, а также предусмотрено соответствующее прерывание. Поэтому кнопки - к ним. А уж PORTA пусть с внешним миром общается. |
|
|
Да будет так! :\)+ |
|
|
С интересом читаю все ветки по ликбезу. Практика, конечно, хорошо, но нельзя-ли и немного теории. Хочется, что бы кто-нибудь из "старых и опытных" растолковал основы двоичной арифметики. Так сказать, "тип энд трикс". Вот ув. picmaniac упоминул немного о "маскировании" битов, но ведь есть и другие, не вполне очевидные, для начинающих вещи. Например, подсказка номер один - что бы проинвертировать конкретный бит, достаточно отксорить (XOR) его с единичкой. Если позволите, небольшой список "хотелок": - для чего используется команда SWAP, т.е. что она делает я понимаю, не понимаю для чего это можно применить. - биты переноса. Как, например, организовать двухбайтный счетчик? - как сравнить два числа (больше - меньше)? Ну и т.д., вам видней. Думаю, это будет интересно не только мне.
|
|
|
|
|