Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- RAMStart EQU $0400 ;Теперь ОЗУ располагается по адресам $400..$FFF.
- ROMStart EQU $E000
- StartVector EQU $FFFE
- PRTB EQU $01 ;Адрес регистра данных порта B.
- DDRB EQU $03 ;Адрес регистра направления передачи данных через
- ;порт B.
- PUCR EQU $0C ;Адрес регистра контроля подтягивающих резисторов.
- ORG $E800
- DC.B $80,$70,$00,$С0 ;Запись в память массива значений,
- ;выводимых на порт B. Взяты значения в
- ;обратном коде, т.к для светодиодов
- ;активным уровнем является логический
- ;ноль.
- ORG ROMstart
- MOVB #$F0,DDRB ;Инициализация младших четырёх битов
- ;порта B на ввод, остальных старших – на
- ;вывод.
- BSET PUCR,$02 ;Включение подтягивающих резисторов
- ;порта В.
- EX_6_1 LDAA #$E8 ;Загрузка в аккумулятор A старшего байта
- ;адреса заданного массива.
- LDAB PRTB ;Считывание данных из порта B.
- ANDB #$03 ;“Отсечка” ненужных старших разрядов.
- ;Таким образом, в аккумуляторе D сформирован
- ;адрес ячейки памяти, данные из которой нужно
- ;вывести на порт B.
- XGDX ;Посылка адреса в индексный регистр X.
- LDAB ,X
- COMB ;Побитная инверсия значения аккумулятора B.
- STAB PRTB
- JMP EX_6_1 ;Возвращение в начало программы.
- ;Т.к. цикл бесконечный, то порт B будет
- ;постоянно опрашиваться микроконтроллером.
- ORG StartVector
- DC.W EX_6_1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement