4.2 Описание алгоритмаработы системы и программы
Служебные регистры определяют конфигурацию и режимы работы микроконтроллера.
Содержимое регистра INIT (рисунок 4.1) определяет старшие четыре разряда адреса (номер страницы) размещения ОЗУ (биты RAM3-RAM0) и блока внутренних регистров (биты REG3-REG0). При начальной установке микроконтроллера биты данного регистра принимают значения RAM3-RAM0 = 0000 (обращение к странице 0), REG3-REG0 = 0001 (обращение к странице 1). В нашем курсовом проекте принимаются значения, установленные после начальной установки.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RAM3 | RAM2 | RAM1 | RAM0 | REG3 | REG2 | REG1 | REG0 |
Рисунок 4.1 – Служебный регистр INIT (адрес $103D)
Длительность такта микроконтроллера TC = 1/Ft определяется генератором тактовых импульсов (ГТИ). Частота следования тактовых импульсов Ft задается кварцевым резонатором, подключаемым к выводам EXTAL и XTAL, или внешним генератором, подключаемым к выводу XTAL. В нашем случае выбран кварцевый резонатор с частотой 8MHz. При этом частота Ft в 4 раза меньше частоты внешнего резонатора или генератора Ft = Fg/4. Импульсы с частотой Ft поступают на выход E микроконтроллера и используются для синхронизации работы других устройств системы.
Так как микроконтроллер работает в рабочем однокристальном режиме, то в процессе начальной установки при включении питания или поступлении сигнала RESET# = 0 в программный счетчик PC загружаются два байта: старший байт PCH из ячейки памяти с адресом $FFFE, младший байт PCL – $FFFF. Эти байты являются адресом первой команды, выполняемой микроконтроллером после начальной установки. Так как микроконтроллер работает в однокристальном режиме, данные байты выбираются из внутреннего ПЗУ. При включении питания требуется время 4064ТC для запуска ГТИ и установки начального состояния регистров, после чего начинается нормальная работа микроконтроллера. Для начальной установки по сигналу RESET# его длительность должна быть не меньше 4ТC.
В курсовом проекте для обмена данными с внешними устройствами используются параллельные порты В, С и D. Порты А и E не используются.
При работе портов В, С и D используется блок квитированного обмена (БКО), который обеспечивает прием и выдачу сигналов квитирования STRA, STRB. Функционирование портов B и C определяется регистром управления PIOC (рисунок 4.2), входящим в состав БКО. При значении разряда HNDS = 0 в этом регистре порт В работает в режиме стробированного вывода, порт С – в режиме стробированного ввода. При значении HNDS = 1 порт В работает в режиме нестробированного вывода, а порт С используется для двунаправленного обмена с квитированием.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
STAF | STAI | CWOM | HNDS | OIN | PLS | EGA | INVB |
Рисунок 3.3 – Регистр управления PIOC (адрес $1002)
Порт В (регистр PORTB, адрес $1004) используется как 8-разрядный порт вывода данных. Если в регистре управления PIOC установлено значение разряда HNDS = 0, то порт В работает в режиме стробированного вывода. В этом режиме запись данных в регистр PORTB сопровождается формированием импульса на выходе STRB длительностью 2TC, который служит для внешних устройств запросом на прием данных с выводов порта PB7-PB0. Активный уровень этого импульса определяется значением разряда INVB в регистре PIOC: при INVB = 0 формируется импульс низкого уровня, при INVB = 1 – высокого уровня. Если значение разряда HNDS = 1, то порт В работает в режиме нестробированного вывода, при котором не происходит формирование стробирующего сигнала на выходе STRB.
Порт C используется как 8-разрядный двунаправленный порт. Направление передачи данных определяется для каждого вывода порта путем установки значения соответствующего разряда в регистре направления DDRC (адрес $1007).
При установке в этом регистре значения i-го разряда в 0 i-й вывод порта используется как вход, при установке в 1 – как выход. В курсовом проекте порт С работает всегда на ввод данных.
Порт C имеет два регистра данных: PORTC (адрес $1003) и PORTCL (адрес $1005). Запись данных в регистр PORTCL с выводов порта PC7-PC0 стробируется сигналом на входе STRA, запись или чтение регистра PORTC не сопровождается сигналами квитирования. При чтении регистра PORTC в микроконтроллер вводятся данные, соответствующие текущему состоянию выводов PC7-PC0, при чтении регистра PORTCL вводятся данные, записанные в этот регистр при подаче стробирующего сигнала на вход STRA. При записи в регистры PORTC и PORTCL данные поступают также на выводы порта С, используемые в качестве выходов. При этом запись в PORTCL сопровождается формированием соответствующих сигналов квитирования на выводах STRA и STRB. Так как в данном курсовом порт С служит для стробированного ввода, то обращение к нему происходит через регистр PORTCL.
В программе будем использовать ячейку с меткой MY_CONFIG.Биты в ней показаны на рисунке 3.4.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | 0 | RAB_KON2 | RAB_KON1 | Время/мощн. | № конф. |
Рисунок 3.4 – Ячейка с меткой MY_CONFIG
Если RAB_KON2=1, то конфорка 2 работает. Если 0 – то нет.
Если RAB_KON1=1, то конфорка 1 работает. Если 0 – то нет.
Если Время/мощн.=1, то работает режим установки мощности. Если 0 – работает режим установки времени.
Если № конф.=1, то работает режим установки конфорки 2. Если 0 – работает режим установки конфорки 1.
В курсовом проекте порт С и D работает на вывод управляющих сигналов к простым исполнительным устройствам. Порт В служит как для приёма сигналов с кнопок. Для этого необходимо установить флаги в регистре HPRIO в 00000110, PIOC – 00011011, DDRC – 00000000, DDRC – 00000000.
В контроллере имеется встроенный таймер. Он реализован на базе 16-разрядного счетчика TCNT (адрес старшего байта $100E, адрес младшего байта $100F). Этот счетчик запускается при начальной установке микроконтроллера, и после запуска его состояние может быть только считано, например командами LDD, LDX, LDY. Частота счета зависит от значения разрядов PR1-PR0 в регистре TMSK2 и составляет FCNT = Ft/Kd, где значение Kd определяется по таблице 3.1. Таким образом, при тактовой частоте Ft = 2 МГц временное разрешение таймера равно TCNT=500 нс, а максимальное время счета при Kd = 16 составляет 524 мс. При разработке таймера точность определения времени определяется десятыми секунды, поэтому используется максимальное время счета, но отсчитывается определённое кол-во импульсов (30d4h) и осуществляется прерывание. При переключении счетчика из состояния $FFFF в состояние $0000 устанавливается признак переполнения TOF=1 в регистре TFLG2. При этом формируется запрос прерывания, если в регистре TMSK2 установлен разряд разрешения данного запроса TOI = 1.
В нашем курсовом проекте устанавливаем максимальное время счета таймера равное 524 мс.
Таблица 3.1 – Коэффициенты Kd и Kt таймера
PR1 | PR0 | Коэффициент деления частоты таймера Kd | RTR | RTR | Коэффициент Kt |
0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 4 | 0 | 1 | 2 |
1 | 0 | 8 | 1 | 0 | 4 |
1 | 1 | 16 | 1 | 1 | 8 |
Выводы и заключение
В ходе проведения курсового проекта была разработана микропроцессорная система, которая является относительно простой. Целью курсового проекта было не усложнить устройство, а научиться проектировать простейшие микропроцессорные системы.
Спроектированное устройство управления двухконфорочной электроплитой полностью соответствует требованиям пользователя.
Приложение
0001 0000 DataAddr EQU $0000
0002 e000 CodeAddr EQU $E000
0003 0070 STACK EQU $0070
0004
0005 *******************
0006 1004 PORTB EQU $1004
0007 1003 PORTC EQU $1003
0008 1008 PORTD EQU $1008
0009 1002 PIOC EQU $1002
0010 1007 DDRC EQU $1007
0011 1009 DDRD EQU $1009
0012 *******************
0013 100e TCNT EQU $100E
0014 1025 TFLG2 EQU $1025
0015 1022 TMSK1 EQU $1022
0016 1024 TMSK2 EQU $1024
0017 *******************
0018 0000 ORG DataAddr
0019 0000 00 MY_CONFIG FCB 0
0020 0001 00 VREMYA1 FCB 0 *время отображения для конфорки 1
0021 0002 00 VREMYA2 FCB 0 *время отображения для конфорки 2
0022 0003 00 VR1 FCB 0 *время в минутах для конфорки 1
0023 0004 00 VR2 FCB 0 *время в минутах для конфорки 2
0024 0005 00 VR_SK1 FCB 0 *время отображения для конфорки 1 в семисигм. коде
0025 0006 00 VR_SK2 FCB 0 *время отображения для конфорки 2 в семисигм. коде
0026 0007 00 POWER1 FCB 0 *мощность отображения для конфорки 1
0027 0008 00 POWER2 FCB 0 *мощность отображения для конфорки 2
0028 0009 00 POWER_SK1 FCB 0 *мощность отображения для конфорки 1 в семисигм. коде
0029 000a 00 POWER_SK2 FCB 0 *мощность отображения для конфорки 1 в семисигм. коде
0030 000b 00 TIME1 FCB 0 *ячейка памяти для таймера конфорки 1
0031 000c 00 TIME2 FCB 0 *ячейка памяти для таймера конфорки 2
0032 000d 00 PORTBB FCB 0
0033 000e 00 PORTDD FCB 0
0034 000f 00 X1 FCB 0
0035 *******************
0036
0037 e000 ORG CodeAddr
0038 e000 8e 00 70 start LDS #STACK
0039 e003 bd e0 0b JSR INICIALIZ *инициализация системы
0040 e006 bd e2 34 JSR VYVOD_VRiPOW *вывод на индикаторы
0041 e009 20 2e BRA KNOPKI
0042
0043 e00b 86 1b INICIALIZ LDAA #%00011011 * В – нестробированый вывод
0044 e00d b7 10 02 STAA PIOC
0045 e010 86 03 LDAA #%00000011 * Коэф.деления таймера =16
0046 e012 b7 10 24 STAA TMSK2
0047 e015 86 ff LDAA #$FF *инициализац.
0048 e017 b7 10 07 STAA DDRC *порта С на ввод
0049 e01a 86 00 LDAA #$00 *инициализац.
0050 e01c b7 10 09 STAA DDRD *порта D на вывод
0051 e01f b7 10 22 STAA TMSK1 *запрещение прерываний таймера
0052 e022 b7 10 04 STAA PORTB *гашение индикаторов
0053 e025 97 00 STAA MY_CONFIG *установка начального режима
0054 e027 96 01 LDAA 1
0055 e029 97 01 STAA VREMYA1
0056 e02b 97 02 STAA VREMYA2
0057 e02d 97 07 STAA POWER1
0058 e02f 97 08 STAA POWER2
0059 e031 39 RTS
0060
0061 e032 b6 10 25 PROV_TOF LDAA TFLG2 *равен ли TOF единице
0062 e035 84 80 ANDA #%10000000 *если да то сброс
0063 e037 26 46 BNE SBROS_TOF
0064 e039 b6 10 03 KNOPKI LDAA PORTC
0065 e03c 84 01 ANDA #%00000001 *проверка нажатия кнопки "1"
0066 e03e 26 46 BNE KNOPKA_1
0067 e040 b6 10 03 LDAA PORTC
0068 e043 84 02 ANDA #%00000010 *проверка нажатия кнопки "2"
0069 e045 26 3f BNE KNOPKA_1
0070 e047 b6 10 03 LDAA PORTC
0071 e04a 84 04 ANDA #%00000100 *проверка нажатия кнопки "Время"
0072 e04c 26 4e BNE KNOPKA_VREMYA
0073 e04e b6 10 03 LDAA PORTC
0074 e051 84 08 ANDA #%00001000 *проверка нажатия кнопки "Мощность"
0075 e053 26 4f BNE KNOPKA_POWER
0076 e055 b6 10 03 LDAA PORTC
0077 e058 84 10 ANDA #%00010000 *проверка нажатия кнопки "+"
0078 e05a 26 50 BNE KNOPKA_PLYUS
0079 e05c b6 10 03 LDAA PORTC
0080 e05f 84 20 ANDA #%00100000 *проверка нажатия кнопки "-"
0081 e061 26 fe BNE KNOPKA_MINUS
0082 e063 b6 10 03 LDAA PORTC
0083 e066 84 40 ANDA #%01000000 *проверка нажатия кнопки "Старт"
0084 e068 26 fe BNE KNOPKA_PUSK
0085 e06a b6 10 03 LDAA PORTC
0086 e06d 84 80 ANDA #%10000000 *проверка нажатия кнопки "Стоп"
0087 e06f 26 fe BNE KNOPKA_STOP
0088 e071 96 00 LDAA MY_CONFIG
0089 e073 84 04 ANDA #%00000100 *проверка работы конфорки 1
0090 e075 26 fe BNE RAB_KON1
0091 e077 96 00 PROV_KON2 LDAA MY_CONFIG
0092 e079 84 08 ANDA #%00001000 *проверка работы конфорки 2
0093 e07b 26 fe BNE RAB_KON2
0094 e07d 20 b3 BRA PROV_TOF
0095
0096
0097 e07f b6 10 25 SBROS_TOF LDAA TFLG2 *сброс TOF в 0
0098 e082 8a 80 ORAA #%10000000
0099 e084 20 b3 BRA KNOPKI
0100
0101
0102
0103
0104 e086 96 00 KNOPKA_1 LDAA MY_CONFIG *режим установка конфорки1
0105 e088 84 fe ANDA #%11111110
0106 e08a 97 00 STAA MY_CONFIG
0107 e08c bd e2 34 JSR VYVOD_VRiPOW *вывод на индикаторы
0108 e08f 20 a8 BRA KNOPKI
0109
0110 e091 96 00 KNOPKA_2 LDAA MY_CONFIG *режим установка конфорки 2
0111 e093 8a 01 ORAA #%00000001
0112 e095 97 00 STAA MY_CONFIG
0113 e097 bd e2 34 JSR VYVOD_VRiPOW *вывод на индикаторы
0114 e09a 20 9d BRA KNOPKI
0115
0116 e09c 96 00 KNOPKA_VREMYA LDAA MY_CONFIG *режим установка времени
0117 e09e 84 fd ANDA #%11111101
0118 e0a0 97 00 STAA MY_CONFIG
0119 e0a2 20 95 BRA KNOPKI
0120
0121 e0a4 96 00 KNOPKA_POWER LDAA MY_CONFIG *режим установка мощности
0122 e0a6 8a 02 ORAA #%00000010
0123 e0a8 97 00 STAA MY_CONFIG
0124 e0aa 20 8d BRA KNOPKI
0125
0126 e0ac 96 00 KNOPKA_PLYUS LDAA MY_CONFIG
0127 e0ae 84 01 ANDA #%00000001 *проверка режима установки конфорки
0128 e0b0 26 26 BNE KON22
0129
0130 e0b2 96 00 KON11 LDAA MY_CONFIG
0131 e0b4 84 02 ANDA #%00000010 *режим установка конфорки 1
0132 e0b6 26 10 BNE POWER_KON1 *проверка режима установки времени
0133
0134 e0b8 96 01 LDAA VREMYA1 *режим установка времени
0135 e0ba 8b 01 ADDA #1 *VREMYA1+1
0136 e0bc 97 01 STAA VREMYA1
0137 e0be 80 06 SUBA #6 *если VREMYA1>5, то устанавливаем VREMYA1=5
0138 e0c0 26 3a BNE END_PLYUS
0139 e0c2 86 05 LDAA #5
0140 e0c4 97 01 STAA VREMYA1
0141 e0c6 20 34 BRA END_PLYUS
0142
0143 e0c8 96 07 POWER_KON1 LDAA POWER1 *режим установка мощности
0144 e0ca 8b 01 ADDA #1 *POWER1+1
0145 e0cc 97 07 STAA POWER1 *если POWER1>5, то
0146 e0ce 80 06 SUBA #6 *устанавливаем POWER1=5
0147 e0d0 26 2a BNE END_PLYUS
0148 e0d2 86 05 LDAA #5
0149 e0d4 97 07 STAA POWER1
0150 e0d6 20 24 BRA END_PLYUS
0151
0152 e0d8 96 00 KON22 LDAA MY_CONFIG *режим установка конфорки 2
0153 e0da 84 02 ANDA #%00000010
0154 e0dc 26 10 BNE POWER_KON2 *проверка режима установки времени
0155
0156 e0de 96 02 LDAA VREMYA2 *режим установка времени
0157 e0e0 8b 01 ADDA #1 *VREMYA2+1
0158 e0e2 97 02 STAA VREMYA2
0159 e0e4 80 06 SUBA #6 *если VREMYA2>5, то устанавливаем VREMYA2=5
0160 e0e6 26 14 BNE END_PLYUS
0161 e0e8 86 05 LDAA #5
0162 e0ea 97 02 STAA VREMYA2
0163 e0ec 20 0e BRA END_PLYUS
0164
0165 e0ee 96 08 POWER_KON2 LDAA POWER2 *режим установка мощности
0166 e0f0 8b 01 ADDA #1 *POWER2+1
0167 e0f2 97 08 STAA POWER2
0168 e0f4 80 06 SUBA #6 *если POWER2>5, то
0169 e0f6 26 04 BNE END_PLYUS *устанавливаем POWER2=5
0170 e0f8 86 05 LDAA #5
0171 e0fa 97 08 STAA POWER2
0172
0173 e0fc bd e2 34 END_PLYUS JSR VYVOD_VRiPOW *вывод на индикаторы
0174 e0ff 20 fe BRA KNOPKI
0175
0176 e101 96 00 KNOPKA_MINUS LDAA MY_CONFIG
0177 e103 84 01 ANDA #%00000001 *проверка режима установки конфорки
0178 e105 26 22 BNE KON222
0179
0180 e107 96 00 KON111 LDAA MY_CONFIG *режим установка конфорки 1
0181 e109 84 02 ANDA #%00000010
0182 e10b 26 0e BNE POWER_KON11 *проверка режима установки времени
0183
0184 e10d 96 01 LDAA VREMYA1 *режим установка времени
0185 e10f 80 01 SUBA #1 *VREMYA1-1
0186 e111 97 01 STAA VREMYA1
0187 e113 26 34 BNE END_MINUS
0188 e115 86 01 LDAA #1 *если VREMYA1<1, то устанавливаем VREMYA1=1
0189 e117 97 01 STAA VREMYA1
0190 e119 20 2e BRA END_MINUS
0191
0192 e11b 96 07 POWER_KON11 LDAA POWER1 *режим установка
мощности
0193 e11d 80 01 SUBA #1 *POWER1-1
0194 e11f 97 07 STAA POWER1
0195 e121 26 26 BNE END_MINUS *если POWER1<1, то
0196 e123 86 01 LDAA #1 *устанавливаем POWER1=1
0197 e125 97 07 STAA POWER1
0198 e127 20 20 BRA END_MINUS
0199
0200 e129 96 00 KON222 LDAA MY_CONFIG *режим установка конфорки 2
0201 e12b 84 02 ANDA #%00000010
0202 e12d 26 0e BNE POWER_KON22 *проверка режима установки времени
0203
0204 e12f 96 02 LDAA VREMYA2 *режим установка времени
0205 e131 80 01 SUBA #1 *VREMYA2-1
0206 e133 97 02 STAA VREMYA2
0207 e135 26 12 BNE END_MINUS
0208 e137 86 01 LDAA #1 *если VREMYA2<1, то устанавливаем VREMYA2=1
0209 e139 97 02 STAA VREMYA2
0210 e13b 20 0c BRA END_MINUS
0211
0212 e13d 96 08 POWER_KON22 LDAA POWER2 *режим установка мощности
0213 e13f 80 01 SUBA #1 *POWER2-1
0214 e141 97 08 STAA POWER2
0215 e143 26 04 BNE END_MINUS *если POWER2<1, то
0216 e145 86 01 LDAA #1 * устанавливаем POWER2=1
0217 e147 97 08 STAA POWER2
0218
0219 e149 bd e2 34 END_MINUS JSR VYVOD_VRiPOW *вывод на индикаторы
0220 e14c 20 fe BRA KNOPKI
0221
0222
0223 e14e 96 00 KNOPKA_PUSK LDAA MY_CONFIG *проверка режима установки конфорки
0224 e150 84 01 ANDA #%00000001
0225 e152 26 29 BNE VKL_KON2
0226
0227 e154 86 73 VKL_KON1 LDAA #115 *режим установка конфорки 1
0228 e156 97 0b STAA TIME1 *записываем в TIME1 115(115*0,524=60с)
0229 e158 96 0e LDAA PORTDD *включаем конфорку 1 на заданную мощность
0230 e15a 84 10 ANDA #%00010000
0231 e15c 9b 07 ADDA POWER1
0232 e15e 8b 08 ADDA #%00001000
0233 e160 b7 10 08 STAA PORTD
0234 e163 97 0e STAA PORTDD
0235 e165 96 0d LDAA PORTBB
0236 e167 8a 04 ORAA #%00000100
0237 e169 b7 10 04 STAA PORTB *включаем светодиод1
0238 e16c 97 0d STAA PORTBB
0239 e16e 96 01 LDAA VREMYA1 *переводим время из
0240 e170 c6 0a LDAB #10 *режима в минуты
0241 e172 3d MUL
0242 e173 97 03 STAA VR1
0243 e175 96 00 LDAA MY_CONFIG *устанавливаем, что конфорка 1 работает
0244 e177 8a 04 ORAA #%00000100
0245 e179 97 00 STAA MY_CONFIG
0246 e17b 20 fe BRA KNOPKI
0247
0248 e17d 86 73 VKL_KON2 LDAA #115 *режим установка конфорки 2
0249 e17f 97 0c STAA TIME2 *записываем в TIME1 115(115*0,524=60с)
0250 e181 96 0e LDAA PORTDD *включаем конфорку 2 на заданную мощность
0251 e183 84 08 ANDA #%00001000
0252 e185 9b 08 ADDA POWER2
0253 e187 8b 10 ADDA #%00010000
0254 e189 b7 10 08 STAA PORTD
0255 e18c 97 0e STAA PORTDD
0256 e18e 96 0d LDAA PORTBB *включаем светодиод2
0257 e190 8a 08 ORAA #%00001000
0258 e192 b7 10 04 STAA PORTB
0259 e195 b7 10 04 STAA PORTB
0260 e198 96 02 LDAA VREMYA2 *переводим время из
0261 e19a c6 0a LDAB #10 *режима в минуты
0262 e19c 3d MUL
0263 e19d 97 04 STAA VR2
0264 e19f 96 00 LDAA MY_CONFIG *устанавливаем, что конфорка 2 работает
0265 e1a1 8a 08 ORAA #%00001000
0266 e1a3 97 00 STAA MY_CONFIG
0267 e1a5 bd e2 34 JSR VYVOD_VRiPOW *вывод на индикаторы
0268 e1a8 20 fe BRA KNOPKI
0269
0270
0271 e1aa 96 00 KNOPKA_STOP LDAA MY_CONFIG *проверка режима установки конфорки
0272 e1ac 84 01 ANDA #%00000001
0273 e1ae 26 29 BNE VYKL_KON2
0274
0275 e1b0 96 0d VYKL_KON1 LDAA PORTBB *режим установка конфорки 1
0276 e1b2 8a 10 ORAA #%00010000 *включаем зуммер
0277 e1b4 b7 10 04 STAA PORTB
0278 e1b7 97 0d STAA PORTBB
0279 e1b9 86 01 LDAA #1
0280 e1bb 97 01 STAA VREMYA1 *сброс VREMYA1
0281 e1bd 97 07 STAA POWER1 *сброс POWER1
0282 e1bf 96 0e LDAA PORTDD *выключаем конфорку 1
0283 e1c1 84 10 ANDA #%00010000
0284 e1c3 b7 10 08 STAA PORTD
0285 e1c6 97 0e STAA PORTDD
0286 e1c8 96 00 LDAA MY_CONFIG *устанавливаем, что конфорка 1
0287 e1ca 84 fb ANDA #%11111011 *не работает
0288 e1cc 97 00 STAA MY_CONFIG
0289 e1ce 96 0d LDAA PORTBB *выключаем зуммер и
светодиод 1
0290 e1d0 84 eb ANDA #%11101011
0291 e1d2 b7 10 04 STAA PORTB
0292 e1d5 97 0d STAA PORTBB
0293 e1d7 20 fe BRA KNOPKI
0294
0295 e1d9 96 0d VYKL_KON2 LDAA PORTBB *режим установка конфорки 2
0296 e1db 8a 10 ORAA #%00010000 *включаем зуммер
0297 e1dd b7 10 04 STAA PORTB
0298 e1e0 97 0d STAA PORTBB
0299 e1e2 86 01 LDAA #1
0300 e1e4 97 02 STAA VREMYA2 *сброс VREMYA2
0301 e1e6 97 08 STAA POWER2 *сброс POWER2
0302 e1e8 96 0e LDAA PORTDD *выключаем конфорку 2
0303 e1ea 84 08 ANDA #%00001000
0304 e1ec b7 10 08 STAA PORTD
0305 e1ef 97 0e STAA PORTDD
0306 e1f1 96 00 LDAA MY_CONFIG *устанавливаем, что конфорка 2
0307 e1f3 84 f7 ANDA #%11110111 *не работает
0308 e1f5 97 00 STAA MY_CONFIG
0309 e1f7 96 0d LDAA PORTBB *выключаем зуммер и светодиод 2
0310 e1f9 84 eb ANDA #%11101011
0311 e1fb b7 10 04 STAA PORTB
0312 e1fe 97 0d STAA PORTBB
0313 e200 20 fe BRA KNOPKI
0314
0315
0316 e202 b6 10 25 RAB_KON1 LDAA TFLG2 *конфорка 1 работает
0317 e205 84 80 ANDA #%10000000 *проверяем прошло ли 0,5с(TOF=1)
0318 e207 27 fe BEQ PROV_KON2 *если да, то
0319 e209 96 0b LDAA TIME1
0320 e20b 80 01 SUBA #1
0321 e20d 97 0b STAA TIME1 *TIME1=TIME1-1
0322 e20f 26 fe BNE PROV_KON2 *если TIME1=0,то
0323 e211 96 03 LDAA VR1 *VR1=VR1-1
0324 e213 80 01 SUBA #1
0325 e215 97 03 STAA VR1 *если время вышло, то переходим к выключению конфорки 1
0326 e217 26 fe BNE PROV_KON2 *если нет, то – к проверки RAB_KON2
0327 e219 20 95 BRA VYKL_KON1
0328
0329 e21b b6 10 25 RAB_KON2 LDAA TFLG2 *конфорка 2 работает
0330 e21e 84 80 ANDA #%10000000 *проверяем прошло ли 0,5с(TOF=1)
0331 e220 27 fe BEQ PROV_TOF *если да, то
0332 e222 96 0c LDAA TIME2
0333 e224 80 01 SUBA #1
0334 e226 97 0c STAA TIME2 *TIME2=TIME2-1
0335 e228 26 fe BNE PROV_TOF *если TIME2=0,то
0336 e22a 96 04 LDAA VR2 *VR2=VR2-1
0337 e22c 80 01 SUBA #1
0338 e22e 97 04 STAA VR2 *если время вышло, то переходим к выключению конфорки 2
0339 e230 26 fe BNE PROV_TOF *если нет, то – к проверки PROV_TOF
0340 e232 20 fe BRA VYKL_KON2
0341
0342 e234 96 00 VYVOD_VRiPOW LDAA MY_CONFIG *проверка режима установки конфорки
0343 e236 84 01 ANDA #%00000001
0344 e238 26 30 BNE KON2
0345
0346 e23a 96 01 KON1 LDAA VREMYA1 *режим установка конфорки 1
0347 e23c bd e2 a1 JSR PEREVOD *переводим VREMYA1 и POWER1 в семисегментный код
0348 e23f d7 05 STAB VR_SK1
0349 e241 96 07 LDAA POWER1
0350 e243 bd e2 a1 JSR PEREVOD
0351 e246 d7 09 STAB POWER_SK1
0352
0353 e248 96 0d LDAA PORTBB *подаем стартовую еденицу
0354 e24a 8a 02 ORAA #%00000010
0355 e24c b7 10 04 STAA PORTB
0356 e24f 97 0d STAA PORTBB
0357 e251 84 fd ANDA #%11111101
0358 e253 b7 10 04 STAA PORTB
0359 e256 97 0d STAA PORTBB
0360
0361 e258 96 05 LDAA VR_SK1 *выводим на индикатор время
0362 e25a ce 00 08 LDX #8
0363 e25d bd e2 c5 JSR VVOD
0364 e260 96 09 LDAA POWER_SK1 *и мощность
0365 e262 ce 00 08 LDX #8
0366 e265 bd e2 c5 JSR VVOD
0367 e268 20 2e BRA END_VYVOD
0368
0369 e26a 96 02 KON2 LDAA VREMYA2 *режим установка конфорки 2
0370 e26c bd e2 a1 JSR PEREVOD *переводим VREMYA2 и POWER2 в семисегментный код
0371 e26f d7 06 STAB VR_SK2
0372 e271 96 08 LDAA POWER2
0373 e273 bd e2 a1 JSR PEREVOD
0374 e276 d7 0a STAB POWER_SK2
0375
0376 e278 96 0d LDAA PORTBB *подаем стартовую единицу
0377 e27a 8a 02 ORAA #%00000010
0378 e27c b7 10 04 STAA PORTB
0379 e27f 97 0d STAA PORTBB
0380 e281 84 fd ANDA #%11111101
0381 e283 b7 10 04 STAA PORTB
0382 e286 97 0d STAA PORTBB
0383
0384 e288 96 06 LDAA VR_SK2 *выводим на индикатор время
0385 e28a ce 00 08 LDX #8
0386 e28d bd e2 c5 JSR VVOD
0387 e290 96 0a LDAA POWER_SK2 *и мощность
0388 e292 ce 00 08 LDX #8
0389 e295 bd e2 c5 JSR VVOD
0390
0391 e298 86 00 END_VYVOD LDAA #0 *на остальные индикаторы ничего не выводим
0392 e29a ce 00 13 LDX #19
0393 e29d bd e2 c5 JSR VVOD
0394 e2a0 39 RTS
0395
0396 e2a1 4a PEREVOD DECA *проверяем число и
0397 e2a2 27 0c BEQ N1 *в соответствии с его
0398 e2a4 4a DECA *значением сохраняем
0399 e2a5 27 0d BEQ N2 *семисегментный код
0400 e2a7 4a DECA
0401 e2a8 27 0e BEQ N3
0402 e2aa 4a DECA
0403 e2ab 27 0f BEQ N4
0404 e2ad 4a DECA
0405 e2ae 27 10 BEQ N5
0406 e2b0 c6 06 N1 LDAB #%00000110
0407 e2b2 20 10 BRA END_PEREV
0408 e2b4 c6 5b N2 LDAB #%01011011
0409 e2b6 20 0c BRA END_PEREV
0410 e2b8 c6 4f N3 LDAB #%01001111
0411 e2ba 20 08 BRA END_PEREV
0412 e2bc c6 66 N4 LDAB #%01100110
0413 e2be 20 04 BRA END_PEREV
0414 e2c0 c6 6d N5 LDAB #%01101101
0415 e2c2 20 00 BRA END_PEREV
0416 e2c4 39 END_PEREV RTS
0417
0418 e2c5 16 VVOD TAB *выводим заданную цифру на индикатор
0419 e2c6 c4 01 ANDB #%00000001
0420 e2c8 d7 0f STAB X1
0421 e2ca d6 0d LDAB PORTBB
0422 e2cc c4 fe ANDB #%11111110
0423 e2ce d7 0d STAB PORTBB
0424 e2d0 db 0f ADDB X1
0425 e2d2 f7 10 04 STAB PORTB
0426 e2d5 d7 0d STAB PORTBB
0427 e2d7 ca 02 ORAB #%00000010
0428 e2d9 f7 10 04 STAB PORTB
0429 e2dc d7 0d STAB PORTBB
0430 e2de c4 fd ANDB #%11111101
0431 e2e0 f7 10 04 STAB PORTB
0432 e2e3 d7 0d STAB PORTBB
0433 e2e5 44 LSRA
0434 e2e6 09 DEX
0435 e2e7 26 dc BNE VVOD
0436 e2e9 39 RTS
0437
0438 fffe ORG $FFFE
0439 fffe e0 00 FDB start
... — уровень, соответствующий основным арбитражным процедурам. Третий уровень — связан с оценкой особенных процедур банкротства. Оценка активов предприятия и самого предприятия в целом осуществляется на всех этапах антикризисного управления. Причем на этапах досудебной санации, наблюдения, финансового оздоровления и внешнего управления оценивается, как правило, рыночная стоимость предприятия, а на ...
... во время аперитива, сколько он будет продолжаться, где подавать кофе и чай, сколько кофейных столов придется обслуживать. 7. Характеристика и виды меню Важнейшим элементом управления процессами обслуживания гостей на предприятиях питания является меню. Его образно называют "полномочным представителем" ресторана, осуществляющим постоянную связь предприятия с гостями. Меню - это перечень ...
... клеток - проводами марки ПВ3 в ПВХ трубах, заложенных в процессе возведения монолитных плит перекрытий данного этажа. Выводы В данной работе был выполнен расчёт электрических нагрузок жилого здания, расчет электрической сети жилого здания, выбрана коммутационная аппаратура для защиты питающих линий. На рисунке 5 приведена схема питания жилого дома высотой 6—9 этажей без щита дымозащиты, а ...
... -часы тратятся напрасно. В пустующих помещениях горят электрические лампы, бесцельно работают конфорки электоплит, светятся экраны телевизоров. Установлено, что 15-20% потребляемой в быту электроэнергии пропадает из-за небережливости потребителей. Простота и доступность электроэнергии породили у многих людей представление о неисчерпаемости наших энергетических ресурсов, притупили чувство ...
0 комментариев