Смекни!
smekni.com

Система управления микроволновой печью (стр. 3 из 3)

4-й блок занимается непосредственно режимом работы. В нем происходит обратный отсчет, регулировка выходной мощности печи. А также изменение визуального значения времени.

7.2 Исходный текст программы

При написании программы использовалась учебная литература. [6].

NAME Microwave

PROGSEGMENTCODE

CONSTSEGMENTCODE

VAR1SEGMENTDATA

BITVARSEGMENTBIT

STACKSEGMENTIDATA

RSEG STACK

DS 10H ; 16 Bytes Stack

CSEG AT 0

USING0 ; Register-Bank 0

JMP START

CSEG AT 03h

reti

CSEG AT 0Bh

ljmpm_TF0

CSEG AT 13h

reti

CSEG AT 1Bh

ljmpm_TF1

CSEG AT 23h

reti

RSEG PROG

START:MOV SP,#STACK-1

; инициализация данных

movR3, #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

mov TL0, #LOW(NOT(1428))

mov TH0, #HIGH(NOT(1428))

setb PT0

setb PT1

setb EA

setb ET0

setb ET1

setb TR0

mm:

mov R7, 21h

cjne R7, #1Fh, v_4

mov 30h, #6

mov 31h, #0

mov 32h, #0

sjmp mm

v_4:

mov R7, 21h

cjne R7, #0Fh, v_3

mov 30h, #4

mov 31h, #8

mov 32h, #0

sjmp mm

v_3:

mov R7, 21h

cjne R7, #7, v_2

mov 30h, #3

mov 31h, #6

mov 32h, #0

sjmp mm

v_2:

mov R7, 21h

cjne R7, #3, v_1

mov 30h, #2

mov 31h, #4

mov 32h, #0

sjmp mm

v_1:

mov R7, 21h

cjne R7, #1, mm

mov 30h, #1

mov 31h, #2

mov 32h, #0

sjmp mm

; R3-номер текущего отображаемого индикатора

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

mov TH0, #HIGH(NOT(1428))

mov TL0, #LOW(NOT(1428))

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

mov23h, R3

movC, 18h

movP3.3, C

movC, 19h

movP3.4, C

movC, 1Ah

movP3.5, C

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

movA, 30h ;вывод цифры на соответствующий индикатор

addA, #40h

movR0, A

movP1, @R0

sjmpm_end

m_1:cjneR3, #1, m_2

movA, 31h

addA, #40h

movR0, A

movP1, @R0

sjmpm_end

m_2:cjneR3, #2, m_3

movA, 32h

addA, #40h

movR0, A

movP1, @R0

sjmpm_end

m_3:cjneR3, #3, m_4

movA, 33h

addA, #40h

movR0, A

movP1, @R0

sjmpm_end

m_4:cjneR3, #4, m_5

movA, 34h

addA, #40h

movR0, A

movP1, @R0

sjmpm_end

m_5:cjneR3, #5, m_6

movA, 35h

addA, #40h

movR0, A

movP1, @R0

sjmpm_end

m_6:movA, 36h

addA, #40h

movR0, A

movP1, @R0

m_end:

jbP3.2, key ;

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

sjmpm_13 ; в 50h - код полученной кнопки

key: mov 50h, #80h

m_13:

movR6, 50h

cjne R6, #80h, m_20

ljmp m_11

m_20:

movR6, 50h

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

jbTR1, m_11

movR6, 55h

cjneR6, #240, m_30

sjmpm_11

m_30:

movR6, 56h

cjneR6, #10, mw

inc55h

sjmpm_11

mw:

mov56h, #10

sjmpm_11

m_21:

movR6, 50h

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

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

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

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

sjmpm_11

m_31:setbC

movA, 21h

RLCA

mov21h, A

sjmpm_11

m_22:

movR6, 50h

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

movR6, 21h

cjneR6, #1h, m_32 ; тек. мощность минимальна?

sjmpm_11

m_32:clrC

movA, 21h

RRCA

mov21h, A

sjmpm_11

m_23:

movR6, 50h

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

jbTR1, m_11

movR6, 55h

cjneR6, #0, m_33

movR6, 56h

cjneR6, #0, m_33

sjmpm_11

m_33: movTL1, #LOW(NOT(50000))

movTH1, #HIGH(NOT(50000))

setbTR1

clrP3.0

sjmpm_11

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

jbTR1, m_34

mov55h, #0h

mov56h, #0h

mov57h, #40

mov22h, #00010000b

sjmpm_11

m_34: clrTR1

setbP3.0

m_11:incR3

cjneR3, #7, m_12

movR3, #0

m_12:reti

m_TF1:

movTH1, #HIGH(NOT(50000))

movTL1, #LOW(NOT(50000))

movA, 21h

anlA, 22h

cjneA, #0, iz_0

setbP3.1

sjmpdc

iz_0:clrP3.1

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

movR5, 57h

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

dec56h

sjmpt_end

t_1:

movR5, 57h

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

dec56h

movR5, 22h

cjneR5, #1, t_10

mov22h, #00010000b

movR5, 55h

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

clrTR1

mov22h, #00010000b

setbP3.0

setbP3.1

sjmpt_end

t_2:dec55h

mov56h, #10

sjmpt_11

t_10:movA, 22h ;

RRA

mov22h, A

t_11:mov57h, #40

t_end:

movA, 55h

movR5, 56h

cjneR5, #10, d__

incA

mov36h, #0

sjmpd_1

d__:mov36h, 56h

d_1:movB, #6

divAB

mov35h, B

movB, #6

divAB

mov34h, B

mov33h, A

reti

END

Заключение

В результате разработки была создана система управления микроволновой печью, удовлетворяющая поставленной задаче. В процессе разработки были использованы программы CorelDRAW и ProView фирмы Franklin Software Inc.