+------------------------------------+
¦ 0 ¦ 8 ¦ STORE+->D0-+
¦ ¦ ¦ BYTE ¦ ¦
+-------+------+----------------¦ ¦
¦ 1 ¦ 9 ¦ INC +->D1-¦
¦ ¦ ¦ ADR ¦ ¦
+-------+------+----------------¦ ¦
¦ 2 ¦ A ¦ DEC +->D2-¦
¦ ¦ ¦ ADR ¦ ¦
+-------+------+----------------¦ ¦
¦ 3 ¦ B ¦ SET +->D3-¦
¦ ¦ ¦ ADR ¦ ¦
+-------+------+----------------¦ ¦
¦ 4 ¦ C ¦ START+->D4-¦
¦ ¦ ¦ ¦ ¦
+-------+------+----------------¦ ¦
¦ 5 ¦ D ¦ нет +->D5-¦
¦ ¦ ¦ ¦ ¦
+-------+------+----------------¦ ¦
¦ 6 ¦ E ¦ нет +->D6-¦
¦ ¦ ¦ ¦ ¦
+-------+------+----------------¦ ¦
¦ 7 ¦ F ¦ нет +->D7-¦
¦ ¦ ¦ ¦ ¦
+-------------------------------+ ¦
^ ^ ^ ¦
Биты порта 7F80h (OUT) ¦ ¦ ¦ ¦
+-----------+ ¦ ¦ ¦ ¦
¦D2 ¦D1 ¦D0 ¦ ¦ ¦ ¦ ¦
+---+---+---¦ ¦ ¦ ¦ ¦
¦ 0 ¦ 0 ¦ 0 +--------+ ¦ ¦ ¦
+---+---+---¦ ¦ ¦ ¦
¦ 0 ¦ 0 ¦ 1 +---------------+ ¦ ¦
+---+---+---¦ ¦ ¦
¦ 0 ¦ 1 ¦ 0 +----------------------+ ¦
+-----------+ ¦
Биты порта 7F80h (IN)<-----+
Рис. 4б
ОМЭВМ семейства MCS-51 имеют систему прерываний с фиксированными адресами прерываний, поэтому для обеспечения обработки прерываний пользовательской программой в стандартных точках входа в обработчики прерываний находятся команды переходов LJMP ADR16, переносящие точки передачи управления обработчикам в адресное пространство 8000h-8027h, находящееся в ОЗУ.
Пользовательские векторы прерываний.
8000 02 81 00 LJMP 8100h ; Переход на первую ячейку ОЗУ ; доступную пользовательской программе.
8003 32 RETI ; Точка входа в обработчик INT0, заглушка.
8004 00 00 00 00 00 00 00
800B 02 HI LO LJMP TC0_ISR ; Переход на обработчик TC0, ; используется монитором.
800E 00 00 00 00 00
8013 32 RETI ; Точка входа в обработчик INT1, заглушка.
8014 00 00 00 00 00 00 00
801B 32 RETI ; Точка входа в обработчик TC0, заглушка.
801C 00 00 00 00 00 00 00
8023 02 HI LO LJMP UART_ISR ; Переход на обработчик UART, ; используется монитором.
8028 00
..............................................................
8100 00 ; Первая ячейка ОЗУ, доступная пользовательской программе.
Монитором контроллера используются для своих целей следующие прерывания :
TC0 - для сканирования клавиатуры и вывода информации на индикатор,
UART - для инициализации процедуры загрузки кода из ПЭВМ.
При инициализации контроллера по сигналу RESET или при передаче управления по адресу 0000h монитор перед разрешением прерываний в точках входа в ISR (по адресам 8000h-8027h) для используемых прерываний от TC0 и UART записывает коды команд LJMP перехода на свои обработчики, находящиеся в ПЗУ, а для неиспользуемых заглушки RETI.
Таким образом ясно, что пользовательской программе перед разрешением прерываний необходимо записать по адресу нужной точки входа команду перехода на свой обработчик.
При программировании описываемого контроллера пользовательская программа может как использовать интерфейс, обеспечиваемый системным монитором, так и игнорировать его, взяв управление всеми ресурсами контроллера на себя.
Монитор контроллера предоставляет в распоряжение пользователя следующие возможности:
- вывод информации на индикатор;
- опрос состояния клавиатуры с подавлением дребезга;
- набор процедур последовательного обмена;
При необходимости использовать сервисные возможности монитора пользовательская программа должна подчиняться определённым правилам:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.