Перейти к содержанию
    

Проверьте меня)

 

Программа поразрядной обработки 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте меня)

Правильно, но чтобы делать поменьше ошибок и произвести впечатление на препода лучше делать примерно так

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 применить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переделал
У порта P0 в режиме ввода-вывода выходы с открытым истоком, поэтому нужно ставить подтягивающие резисторы на +5В. Или использовать порт Р1. Повторю еще раз - 1816ВЕ51 - с масочным ПЗУ, программируемым на заводе (конечный потребитель ничего в внутренее ПЗУ ВЕ51 записать не может в принципе), поэтому эту схему можно посторить только на Flash аналоге типа Атмеловского AT89S8252

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для динамической индикации группы символов удобно воспользоваться процедурой индикации символа, оформив ее в виде параметризуемой подпрограммы. Входными параметрами для подпрограммы 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

 

м?

b698dfa2fd8c.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не-а. Резисторы (10К 8 шт) одним концом на +5V, другим - на ноги порта Р0

А на общую шину??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так??

Нет. Входы инверторов нужно подключить к порту контроллера напрямую, как в сообщении №18.

А каждый из 8-ми резисторов подтяжки нужно включить одним выводом к +5В, другим - к каждому выводу порта контроллера раздельно.

Изменено пользователем ae_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нА другой порт чтоли? P1?

не догоняю. вывод порта P0 занят уже входом инвертора? куда еще резистор то подключать??,

а понял..помоему..ща нарисую

Изменено пользователем misha88

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...