p align="left"> С точки зрения программирования разработанное устройство управления электроплитой состоит из программно доступных регистров микроконтроллера и трех портов: В, С и D. Работа системы заключается в определении состояния входных портов, выполнения определённых вычислений и выводе данных из микроконтроллера. Подробная блок-схема алгоритма программного обеспечения устройства, включающая в себя все аспекты работы периферийных устройств и микроконтроллера приведена в БГУИ. XXXXXX.004 Э8. Листинг программы с комментариями приведен в приложении А. 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 на вывод
Страницы: 1, 2, 3, 4
|