49865 (Устройство управления электроплитой), страница 3
Описание файла
Документ из архива "Устройство управления электроплитой", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49865"
Текст 3 страницы из документа "49865"
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