• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта

Главное меню

Карта сайта
Главная
Курсовые работы
Отчеты по практикам
Лабораторные работы
Методические пособия
Рефераты
Дипломы
Лекции



Проектирование системы управления микроволновой печью

Заключение

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

В проекте были разработаны структурная и функциональная схемы микроволновой печи с микропроцессорным управлением, в которых были учтены все необходимые элементы. Также был разработан алгоритм и программа, которая была написана и отражена в проекте.

В результате разработки была создана система управления микроволновой печью, удовлетворяющая поставленной задаче.

Приложение A

PROG SEGMENT CODE; размещает сегмент prog в памяти программ

CONST SEGMENT CODE; размещает сегмент code в памяти программ

VAR1 SEGMENT DATA; размещение сегмента var1 во внутренней памяти данных с прямой адресацией

BITVAR SEGMENT BIT; размещение сегмента bitvar во внутренней памяти данных с битовой адресацией

STACK SEGMENT IDATA; размещение сегмента stack во внутренней памяти данных с косвенной адресацией

RSEG STACK ; использование сегмента stack

DS 10H; резервирование 16 Bytes в Stack

CSEG AT 0; определение абсолютного сегмента в памяти программ с нулевого бита

USING 0 ; Выбор банка регистров общего назначения - Register-Bank 0

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

CSEG AT 03h; определение абсолютного сегмента в памяти программ

Reti; условный выход из подпрограммы обработки прерывания

CSEG AT 0Bh; определение абсолютного сегмента в памяти программ

Ljmp m_TF0; обработка прерывания по 0-у таймеру

CSEG AT 13h; определение абсолютного сегмента в памяти программ

reti;

CSEG AT 1Bh; определение абсолютного сегмента в памяти программ

Ljmp m_TF1; обработка прерывания по 1-у таймеру

CSEG AT 23h; определение абсолютного сегмента в памяти программ

reti

RSEG PROG; использование сегмента prog

START: MOV SP, #STACK-1; инициализация данных

mov R3, #0h

mov 21h, #00000111b; задаем начальную мощность

mov 22h, #00010000b; задаем байт шага (изменяется сдвигом от 10000 до 00001)

mov 30h, #3h; задаем визуальные начальные значения мощности

mov 31h, #6h

mov 32h, #0h

mov 33h, #0h; задаем визуальные начальные значения времени

mov 34h, #0h

mov 35h, #0h

mov 36h, #0h

mov 40h, #00111111b; задаем матрицу цифр, для вывода на индикатор

mov 41h, #00000110b

mov 42h, #01011011b

mov 43h, #01001111b

mov 44h, #01100110b

mov 45h, #01101101b

mov 46h, #01111101b

mov 47h, #00000111b

mov 48h, #01111111b

mov 49h, #01101111b

; 50h код кнопки

mov 55h, #0h; байт периодов по 10с

mov 56h, #0h; байт отсчета 10с

mov 57h, #40; байт отсчета 2-х секунд (40*0,05)

; инициализация и пуск таймеров

mov TMOD, #00010001b; 16-разрядные Т/C

mov TL0, #LOW(NOT(1428)); начальная загрузка T/C0

mov TH0, #HIGH(NOT(1428))

setb PT0

setb PT1

setb EA; управление глобальными прерываниями

setb ET0; разрешение прерывания от Т/C0

setb ET1; разрешение прерывания от T/C1

setb TR0; разрешение работы T/C0

mm:

mov R7, 21h; загрузка начальной мощности

cjne R7, #1Fh, v_4; если мощность изменилась, то переход к метке v_4

mov 30h, #6; отображение на индикаторе значения мощности

mov 31h, #0; отображение на индикаторе значения мощности

mov 32h, #0; отображение на индикаторе значения мощности

sjmp mm; переход на метку mm

v_4:

mov R7, 21h; загрузка начальной мощности

cjne R7, #0Fh, v_3; если мощность изменилась, то переход к метке v_3

mov 30h, #4; отображение на индикаторе значения мощности

mov 31h, #8; отображение на индикаторе значения мощности

mov 32h, #0; отображение на индикаторе значения мощности

sjmp mm; переход на метку mm

v_3:

mov R7, 21h; загрузка начальной мощности

cjne R7, #7, v_2; если мощность изменилась, то переход к метке v_2

mov 30h, #3; отображение на индикаторе значения мощности

mov 31h, #6; отображение на индикаторе значения мощности

mov 32h, #0; отображение на индикаторе значения мощности

sjmp mm; переход на метку mm

v_2:

mov R7, 21h; загрузка начальной мощности

cjne R7, #3, v_1; если мощность изменилась, то переход к метке v_1

mov 30h, #2; отображение на индикаторе значения мощности

mov 31h, #4; отображение на индикаторе значения мощности

mov 32h, #0; отображение на индикаторе значения мощности

sjmp mm; переход на метку mm

v_1:

mov R7, 21h; загрузка начальной мощности

cjne R7, #1, mm; если мощность изменилась, то переход к метке mm

mov 30h, #1; отображение на индикаторе значения мощности

mov 31h, #2; отображение на индикаторе значения мощности

mov 32h, #0; отображение на индикаторе значения мощности

sjmp mm; переход на метку mm

; обработка прерывания по 0-му таймеру

m_TF0: mov TH0, #HIGH(NOT(1428)+1); начальная загрузка T/C0

mov TL0, #LOW(NOT(1428)+1)

;изменение визуальных значений мощности и времени

mov 23h, R3; загрузка номера текущего отображаемого индикатора

mov C, 18h

mov P3.3, C

mov C, 19h

mov P3.4, C

mov C, 1Ah

mov P3.5, C

cjne R3, #0, m_1; если не 0, то переходим на m_1

mov A, 30h; запись в аккумулятор цифры c соответствующего индикатора

add A, #40h; изменение значения

mov R0, A

mov P1, @R0; вывод измененного значения

sjmp m_end; переход на метку m_end

m_1: cjne R3, #1, m_2; если не 1, то переходим на m_2

mov A, 31h; запись в аккумулятор цифры c соответствующего индикатора

add A, #40h

mov R0, A

mov P1, @R0

sjmp m_end

m_2: cjne R3, #2, m_3; если не 2, то переходим на m_3

mov A, 32h; запись в аккумулятор цифры c соответствующего индикатора

add A, #40h; изменение значения

mov R0, A

mov P1, @R0

sjmp m_end

m_3: cjne R3, #3, m_4; если не 3, то переходим на m_4

mov A, 33h; запись в аккумулятор цифры c соответствующего индикатора

add A, #40h; изменение значения аккумулятора

mov R0, A

mov P1, @R0

sjmp m_end

m_4: cjne R3, #4, m_5; если не 4, то переходим на m_5

mov A, 34h; запись в аккумулятор цифры c соответствующего индикатора

add A, #40h; изменение значения

mov R0, A

mov P1, @R0

sjmp m_end

m_5: cjne R3, #5, m_6; если не 5, то переходим на m_6

mov A, 35h; запись в аккумулятор цифры c соответствующего индикатора

add A, #40h; изменение значения

mov R0, A

mov P1, @R0

sjmp m_end

m_6: mov A, 36h; запись в аккумулятор цифры c соответствующего индикатора

add A, #40h; изменение значения

mov R0, A; значение аккумулятора в R0

mov P1, @R0

m_end:

jb P3.2, key; если P3.2 = 1; то перейти на метку key

mov 50h, R3; опрос клавиатуры

sjmp m_13; переход на метку m_13

key: mov 50h, #80h; в 50h - код полученной кнопки

m_13:

mov R6, 50h

cjne R6, #80h, m_20

sjmp m_11; переход на метку m_11

m_20:

mov R6, 50h

cjne R6, #0h, m_21; обработка кнопки + время

jb TR1, m_11

mov R6, 55h;

cjne R6, #240, m_30

sjmp m_11; переход на метку m_11

m_30:

mov R6, 56h; перемещение в R6 значение байта отсчета

cjne R6, #10, mw

inc 55h; увеличение байта периодов

sjmp m_11; переход на метку m_11

mw:

mov 56h, #10; запись в байт отсчета 10

sjmp m_11; переход на метку m_11

m_21:

mov R6, 50h

cjne R6, #1h, m_22 ; обработка кнопки + мощность

mov A, 21h; проверка тек. состояния мощности

anl A, #00010000b; если максимальное,

cjne A, #10000b, m_31; то игнорируем

sjmp m_11

m_31: setb C; установка во флаг с единицы

mov A, 21h

RLC A; сдвиг содержимого аккумулятора влево через флаг переноса

mov 21h, A

sjmp m_11; переход на метку m_11

m_22:

mov R6, 50h

cjne R6, #2h, m_23; обработка кнопки - мощность

mov R6, 21h

cjne R6, #1h, m_32; если текущая мощность минимальна

sjmp m_11; переход на метку m_11

m_32: clr C

mov A, 21h

RRC A; сдвиг содержимого аккумулятора вправо через флаг переноса

mov 21h, A

sjmp m_11; переход на метку m_11

m_23:

mov R6, 50h

cjne R6, #3h, m_24 ; обработка кнопки старт

jb TR1, m_11; если TR1 = 1, т.е. работает, то перейти на метку

mov R6, 55h

cjne R6, #0, m_33

mov R6, 56h

cjne R6, #0, m_33

sjmp m_11

m_33: mov TL1, #LOW(NOT(50000)+1)

mov TH1, #HIGH(NOT(50000)+1)

setb TR1

clr P3.0; обнуление бита

sjmp m_11; переход на метку m_11

m_24: ; Обработка кнопки стоп

jb TR1, m_34; если T/C1 работает, то переход на метку m_34

mov 55h, #0h

mov 56h, #0h

mov 57h, #40

mov 22h, #00010000b

sjmp m_11

m_34: clr TR1; запрет работы T/C1

setb P3.0; P3.0=1

m_11: inc R3

cjne R3, #7, m_12

mov R3, #0

m_12: reti

m_TF1:

mov TH1, #HIGH(NOT(50000)+1)

mov TL1, #LOW(NOT(50000)+1)

mov A, 21h

anl A, 22h

cjne A, #0, iz_0

setb P3.1

sjmp dc

iz_0: clr P3.1

dc: dec 57h; декремент байта осчета 2-х секунд

mov R5, 57h

cjne R5, #20, t_1; если 20 то надо -1с

dec 56h

sjmp t_end

t_1: mov R5, 57h; загрузка в R5 байта отсчета 2х секунд

cjne R5, #0, t_end; если 0 то смена шага + проверка на окончание работы и пр.

dec 56h; декремент байта осчета 10 секунд

mov R5, 22h

cjne R5, #1, t_10

mov 22h, #00010000b

mov R5, 55h

cjne R5, #0, t_2; проверка на 0 интервалов по 10 с

clr TR1

mov 22h, #00010000b

setb P3.0

setb P3.1

sjmp t_end

t_2: dec 55h

mov 56h, #10

sjmp t_11

t_10: mov A, 22h

RR A

Mov 22h, A

t_11: mov 57h, #40

t_end:

mov A, 55h

mov R5, 56h

cjne R5, #10, d__

inc A

mov 36h, #0

sjmp d_1

d__: mov 36h, 56h

d_1: mov B, #6

div AB

mov 35h, B

mov B, #6

div AB

mov 34h, B

mov 33h, A

reti; условный выход из подпрограммы обработки прерывания

END