Режимы пониженного энергопотребления МК80С31

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

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

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Лабораторная работа №8 (Вариант №2)

Режимы пониженного энергопотребления МК80С31

Цельработы: Получение практических навыков программирования режимов пониженного энергопотребления МК80С31.

Задание для варианта №2: Написать программу, осуществляющую опрос кнопки, подключённой к P1.0. Период подключения равен 1мс. Алгоритм опроса должен обеспечить защиту от дребезга контактов кнопки (сигнал считается достоверным, если он не изменился в течение пяти опросов). Достоверное состояние кнопки должно быть выведено через P1.1.

Схема подключения кнопки SW1:

 


Блок-схема алгоритма программы:

 


Листинг программы

BState  EQU     30h                  ;временная переменная для хранения состояния кнопки

Five      EQU     31h                  ;переменная для организации цикла из пяти итераций

ORG 0h                                    ;адрес старта по сигналу RST

ajmp Start                                 ;переход на метку Start

ORG 0Bh                                 ;прерывание встроенного таймера/счетчика 0

ljmp IntT0                                ;вызов подпрограмы обработки прерывания IntT0

ORG 30h                                 

;тело программы

Start:

mov IE, #10000010b                 ;разрешаем прерывание только встроенного таймера/счетчика 0

mov TMOD, #01h                     ;0-й таймер: 16-разрядный

mov TH0, #0FCh                      ;период таймера = 1мс

mov TL0, #017h                       ;FC17 = 64535 = (65535 - 1000)

setb TR0                                   ;включаем нулевой таймер

mov Five, #5                             ;инициализируем счётчик опросов

mov B, P1                                ;считываем состояние P1 в B

setb IDL                                   ;переводим МК в режим холостого хода

;подпрограмма обработки прерывания от таймера/счетчика 0

IntT0:                                                    

djnz Five, Skip                          ;если 5 опросов ещё не произошло возвращаемся из прерывания

mov Five, #5                             ;инициализируем счётчик опросов

mov A, #1                                ;копируем в аккумулятор 1

anl A, P1                                  ;A = A AND P1 = [0/1] (P1.0 = 0 => A = 0; P1.0 = 1 => A = 1;)

anl B, #1                                   ;B = B AND 1 = [0/1]

mov BState, A                          ;копируем текущее состояние P1.0 из аккумулятора в State

xrl A, B                        ;A = A XOR B = [0/1] (A = 0 => состояния совпадают; A = 1 =>

;состояния не совпадают;)

mov B, P1                                ;считываем состояние P1 в B

jnz Skip                                    ;если состояния не совпадают, возвращаемся

mov A, BState                          ;копируем состояние кнопки в аккумулятор для операции

;побитового сравнения

jb ACC.0, SetP11                      ;если нулевой бит A равен 1, устанавливаем бит P1.1

jmp ResetP11                            ;если нулевой бит A равен 0, сбрасываем бит P1.1

SetP11:

setb P1.1                                   ;устанавливаем P1.1

jmp Skip                                   ;возвращаемся из прерывания

ResetP11:

clr P1.1                                     ;сбрасываем P1.1

Skip:

clr TF0                                     ;сбрасываем флаг переполнения таймера

mov TH0, #0FCh                      ;заново инициализируем

mov TL0, #017h                       ;таймер

reti                                           ;возврат из прерывания

end

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

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

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.