Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. RAMStart EQU $0400 ;Теперь ОЗУ располагается по адресам $400..$FFF.
  2. ROMStart EQU $E000
  3. StartVector EQU $FFFE
  4. PRTB EQU $01 ;Адрес регистра данных порта B.
  5. DDRB EQU $03 ;Адрес регистра направления передачи данных через
  6. ;порт B.
  7. PUCR EQU $0C ;Адрес регистра контроля подтягивающих резисторов.
  8. ORG $E800
  9. DC.B $80,$70,$00,$С0 ;Запись в память массива значений,
  10. ;выводимых на порт B. Взяты значения в
  11. ;обратном коде, т.к для светодиодов
  12. ;активным уровнем является логический
  13. ;ноль.
  14. ORG ROMstart
  15. MOVB #$F0,DDRB ;Инициализация младших четырёх битов
  16. ;порта B на ввод, остальных старших – на
  17. ;вывод.
  18. BSET PUCR,$02 ;Включение подтягивающих резисторов
  19. ;порта В.
  20. EX_6_1 LDAA #$E8 ;Загрузка в аккумулятор A старшего байта
  21. ;адреса заданного массива.
  22. LDAB PRTB ;Считывание данных из порта B.
  23. ANDB #$03 ;“Отсечка” ненужных старших разрядов.
  24. ;Таким образом, в аккумуляторе D сформирован
  25. ;адрес ячейки памяти, данные из которой нужно
  26. ;вывести на порт B.
  27. XGDX ;Посылка адреса в индексный регистр X.
  28. LDAB ,X
  29. COMB ;Побитная инверсия значения аккумулятора B.
  30. STAB PRTB
  31. JMP EX_6_1 ;Возвращение в начало программы.
  32. ;Т.к. цикл бесконечный, то порт B будет
  33. ;постоянно опрашиваться микроконтроллером.
  34. ORG StartVector
  35. DC.W EX_6_1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement