Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Рекомендуемая процедура инициализации микроконтроллера



Сразу после сброса микроконтроллера практически всегда необходимо выполнить инициализацию микроконтроллера. При инициализации микроконтроллера может быть использована процедура, приведённая в листинге 3.1.

Листинг 3.1 – Процедура инициализации микроконтроллера

  .ORG 0000H ; Адрес начала программы
  JMP BEGIN ; Переход к основной части ; программы
  .ORG 0003H ; Адрес обработчика ; прерываний по входу INT0
  JMP EXT0 ; Переход на процедуру ; обработки прерываний по ; входу INT0
  .ORG 000BH ; Адрес обработчика ; прерываний от таймера ; T/C0
  JMP TIMER0 ; Переход на процедуру ; обработки прерываний от ; таймера T/C0
  .ORG 0013H ; Адрес обработчика ; прерываний по входу INT1
  JMP EXT1 ; Переход на процедуру ; обработки прерываний по ; входу INT1
  .ORG 001BH ; Адрес обработчика ; прерываний от таймера ; T/C0
  JMP TIMER1 ; Переход на процедуру ; обработки прерываний от ; таймера T/C0
  .ORG 0023H ; Адрес обработчика ; прерываний от ; последовательного порта
  JMP SERIAL ; Переход на процедуру ; обработки прерываний от ; последовательного порта
BEGIN:   CLR EA ; Запрет всех прерываний
  CLEAR: MOV R0, #7FH MOV @R0, #00H DJNZ R0, CLEAR ; Очистка оперативной ; памяти микроконтроллера
  MOV SP, #30H …   ; Переопределение дна стека ; Здесь должна находиться ; основная программа
  JMP $ ; Останов программы ; (команда перехода «сама на ; себя»)
  EXT0:     …     RETI ; Здесь может находиться ; процедура обработки ; прерывания от входа INT0 ; Команда выхода из ; прерывания
  EXT1:     …     RETI ; Здесь может находиться ; процедура обработки ; прерывания от входа INT1 ; Команда выхода из ; прерывания
TIMER0:   …   RETI ; Здесь может находиться ; процедура обработки ; прерывания от таймера ; T/C0 ; Команда выхода из ; прерывания
TIMER1:   …   RETI ; Здесь может находиться ; процедура обработки ; прерывания от таймера ; T/C1 ; Команда выхода из ; прерывания
SERIAL:   …   RETI ; Здесь может находиться ; процедура обработки ; прерывания от ; последовательного порта ; Команда выхода из ; прерывания

В данной процедуре выполняется определение векторов и процедур всех прерываний. Эта процедура позволяет исключить все возможные последствия «случайного попадания» в область векторов прерывания.

Сброс флага EA необходим для запрета всех прерываний до момента инициализации всех переменных, используемых как основной программой, так и подпрограммами обработки прерываний.

Очистку оперативной памяти микроконтроллера рекомендуется выполнять тем программистам, которые привыкли «рассчитывать» на нулевые значения впервые используемых регистров и ячеек памяти.

Переопределение дна стека рекомендуется выполнять, если предполагается активная работа со стеком (команды POP, PUSH, CALL, ACALL, LCALL, RET). Данная операция необходима и при использовании аппаратных прерываний, т.к. при прерывании адрес программы, которая была прервана, сохраняется в стеке и извлекается из стека при выходе из прерывания по команде RETI.

Контрольные вопросы

1. Какая система счисления по умолчанию предполагается компилятором?

2. Является ли компилятор регистрозависимым?

3. Допускается ли писать текст программы, начиная с первой колонки?

4. Как оформляются комментарии?

5. Обязательно ли ставить точку перед именем директивы?

6. Что такое макроопределения?

7. Для чего при инициализации микроконтроллера рекомендуется настраивать все вектора прерываний?

8. Обязательно ли переопределение указателя стека и очистка внутреннего ОЗУ? Почему?





Дата публикования: 2014-11-03; Прочитано: 244 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...