misha88 0 3 марта, 2010 Опубликовано 3 марта, 2010 · Жалоба Проверьте меня) Программа поразрядной обработки 1816ВЕ51. Программа должна установить нулевой разряд числа в регистре R5 в 1, сбросить четвёртый разряд в 0 и инвертировать шестой разряд. В скобочках указано значение R5 после выполнения заданной операции org 50h main: mov R5, #0FEh mov A, R5 orl A, #1; Установка нулевого бита => A = FFh anl A, #0EFh; Сброс четвёртого бита => A = EFh xrl A, #40h; Инвертирование шестого бита => A = AFh mov R5, A end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 6 3 марта, 2010 Опубликовано 3 марта, 2010 · Жалоба Проверьте меня) Правильно, но чтобы делать поменьше ошибок и произвести впечатление на препода лучше делать примерно так Bit0 EQU (1 << 0) Bit4 EQU (1 << 4) Bit6 EQU (1 << 6) ; ******************************************************* ; * bitbang ; * установить нулевой разряд числа в регистре R5 в 1, ; * сбросить четвёртый разряд в 0 и ; * инвертировать шестой разряд ; ******************************************************* bitbang xch A,R5 orl A, Bit0 anl A,~Bit4 xrl A, Bit6 xch A,R5 ret ; эту процедуру можно вызвать примерно так: mov R5, #0FEh call bitbang заметим, что аккумулятор не портиться, его содержимое остаётся таким же что и до вызова. А если ещё и MACRO применить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misha88 0 14 марта, 2010 Опубликовано 14 марта, 2010 (изменено) · Жалоба Переделал Изменено 14 марта, 2010 пользователем misha88 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs157 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба ПеределалУ порта P0 в режиме ввода-вывода выходы с открытым истоком, поэтому нужно ставить подтягивающие резисторы на +5В. Или использовать порт Р1. Повторю еще раз - 1816ВЕ51 - с масочным ПЗУ, программируемым на заводе (конечный потребитель ничего в внутренее ПЗУ ВЕ51 записать не может в принципе), поэтому эту схему можно посторить только на Flash аналоге типа Атмеловского AT89S8252 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misha88 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Для динамической индикации группы символов удобно воспользоваться процедурой индикации символа, оформив ее в виде параметризуемой подпрограммы. Входными параметрами для подпрограммы REPEAT являются исходный код отображаемого символа и номер знакоместа, на которое осуществляется вывод. Исходный код символа задается текущим адресом в массиве DIGIT, а номер знакоместа текущим значением байта выборки (массив IPOS) и значением счетчика знакомест INDPOS . ;indpos–номер включенного катода ;Таблица знакогенератора(без децимальных точек) digit: db C0h, F9h, A4h, B0h, 99h, 92h, 82h, F8h, 80h, 90h ; Таблица кодов для включения одного из четырех катодов ipos : db 01h, 02h, 04h, 08h ; Инициализация параллельного интерфейса display: mov A, 0FFh mov P0, A mov A, @R1 add A, digit mov A, @A mov P1, A mov A, R2 mov P0, A rl, A mov R2, A inc R1 repeat: mov A, indpos mov R1, number add A, R1 mov R1, digit add R1 mov A, R1 mov R1, ipos add R1 mov A, 01h dec D mov A, D jnz repeat mov D, 7 jmp repeat м? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vvs157 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба м?Не-а. Резисторы (10К 8 шт) одним концом на +5V, другим - на ноги порта Р0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misha88 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Не-а. Резисторы (10К 8 шт) одним концом на +5V, другим - на ноги порта Р0 А на общую шину?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misha88 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба так?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ae_ 2 15 марта, 2010 Опубликовано 15 марта, 2010 (изменено) · Жалоба так?? Нет. Входы инверторов нужно подключить к порту контроллера напрямую, как в сообщении №18. А каждый из 8-ми резисторов подтяжки нужно включить одним выводом к +5В, другим - к каждому выводу порта контроллера раздельно. Изменено 15 марта, 2010 пользователем ae_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misha88 0 15 марта, 2010 Опубликовано 15 марта, 2010 (изменено) · Жалоба нА другой порт чтоли? P1? не догоняю. вывод порта P0 занят уже входом инвертора? куда еще резистор то подключать??, а понял..помоему..ща нарисую Изменено 15 марта, 2010 пользователем misha88 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба не догоняю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misha88 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба Догнал))))))))))))))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
misha88 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба С прогой не могу разобраться.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться