
- •Содержание дипломного проекта:
- •Глава 1. Специальная часть. Разработка программного обеспечения управления автоматизированным комплексом многоканальной связи 6
- •1.7.1 Структуры данных 29
- •Введение
- •1.2 Особенности разработки программного обеспечения для микропроцессорных систем
- •1.3 Использование контроллера ат89с51
- •1.3.1 Основные программно-доступные устройства микроконтроллера ат89с51
- •1.3.2 Структурная схема микроЭвм серии мк51
- •1.3.3 Адресные пространства ат89с51
- •1.3.4 Характеристики средств языка ассемблера
- •1.4 Интерфейсы в системах связи
- •1.4.1 Классификация интерфейсов
- •1.4.2 Основы асинхронной последовательной связи
- •1.4.2.1 Контроль по четности и обнаружение ошибок
- •1.4.2.2 Управление потоком с помощью xon/xoff
- •1.5 Общие методы ввода/вывода через коммуникационный порт
- •1.5.1 Последовательный порт с точки зрения программиста
- •1.6 Информационный обмен контроллер - эвм с использованием интерфейса rs-232
- •1.7 Создание программы управления автоматизированным комплексом многоканальной связи
- •1.7.1 Структуры данных
- •1.7.2 Составляющие программы
- •1.7.2.1 Основная программа
- •1.7.2.2 Подпрограмма перезаписи карты памяти
- •1.7.2.3 Подпрограмма связи с внешней пэвм через последовательный порт
- •1.7.3 Тестирование и отладка программы
- •1.7.4 Оформление программы и ее возможная модернизация
- •1.7.5 Надежность программного продукта
- •1.8 Заключение
- •2.2 Этапы решения задачи на эвм
- •1. Постановка задачи.
- •2. Составление проекта.
- •3. Алгоритмизация.
- •4. Программирование.
- •6. Отладка.
- •7. Тестирование.
- •8. Оформление программы.
- •9. Отчет о работе.
- •10. Модернизация.
- •2.3 Проектирование системы
- •2.3.1 Определение основных элементов системы
- •2.3.2 Структурный анализ
- •2.3.3 Структурное проектирование
- •2.3.4 Реализация и испытания
- •2.4 Вспомогательные средства проектирования
- •2.4.1 Графическая схема задания
- •2.4.2 Развернутый план проекта системы
- •2.5 Организация процесса проектирования
- •2.6 Необходимость тестирования программных продуктов
- •2.7 Отладка и общие принципы тестирования программ
- •Алгоритмическое тестирование
- •Функциональное или аналитическое тестирование
- •Содержательное тестирование
- •2.8 Типы тестов
- •2.9 Надежность программного обеспечения
- •2.9.1 Критерии надежности систем
- •2.9.2 Типы программного обеспечения с точки зрения надежности
- •2.9.3 Анализ надежности программного обеспечения
- •2.9.4 Диагностика функционирования комплексов программ
- •2.9.5 Основные факторы, влияющие на надежность функционирования комплексов программ
- •2.10 Разработка программной документации
- •2.11 Заключение
- •Глава 3 Организационно-экономическая часть
- •3.1 Экономическая эффективность программного продукта
- •3.2 Составляющие затрат на создание программного продукта
- •3.2.1 Затраты на непосредственную разработку пп
- •3.2.2 Сложность разработки программного продукта
- •3.2.3 Затраты на изготовление опытного образца как продукции производственно-технического назначения
- •3.2.4 Затраты на создание комплекта документации
- •3.2.5 Затраты на технологию и программные средства автоматизации разработки пп
- •3.3 Составляющие затрат на эксплуатацию программ, влияющих на процесс разработки пп
- •3.4 Составляющие затрат на сопровождение программ
- •3.5 Расчет затрат на программный продукт Исходные данные:
- •Затраты на эксплуатацию программ
- •Затраты на эксплуатацию реализующей эвм
- •Затраты на эксплуатацию
- •4.3 Вредные факторы, присутствующие на
- •4.4 Общие требования к помещению машинного зала
- •4.5 Основные требования к освещению
- •4.6 Расчет общего освещения
- •4.7 Меры защиты от поражения электрическим током
- •4.8 Меры по снижению уровня шума
- •4.9 Защита от излучений
- •Нормирование метеорологических условий в машинном зале
- •4.11 Требования по пожарной безопасности
- •4.12 Психофизиологические опасные и вредные производственные факторы
- •4.13 Планировка рабочего места программиста и организация работы с компьютером
- •4.14 Выводы
- •Используемая литература:
4.13 Планировка рабочего места программиста и организация работы с компьютером
Планировка рабочего места программиста должна удовлетворять требованиям удобства выполнения работы и экономии энергии и времени оператора, рационального использования площади помещения, соблюдения правил охраны труда. Рекомендуемая планировка рабочего места программиста, учитывающая антропометрические данные человека и габариты аппаратуры представлена на рисунке 4.1.
Рис. 4.1. Рекомендуемая планировка рабочего места программиста.
Для облегчения чтения информации с документов рекомендуется использовать специальные держатели бумаг, крепящиеся к монитору компьютера. Для предотвращения перенапряжения зрительных анализаторов оператора и снижения монотонности труда, работу, связанную с использованием дисплея ПЭВМ, необходимо чередовать с работой, не требующей использования ПЭВМ, либо делать небольшие перерывы через каждые 45-90 минут. Общее время работы за экраном ЭВМ не должно превышать 6 часов в день.
4.14 Выводы
Таким образом, поняв сущность явлений, оценив их возможную опасность, ознакомившись с нормативными материалами, программист, работающий с системой, может квалифицированно изыскать способы и методы работы, которые позволят избежать травматизма, профессиональных заболеваний и устранить влияние на организм работающего опасных и вредных воздействий.
Используемая литература:
Наиболее используемыми источниками при создании данного дипломного проекта стали :
1. АТ89С51. 8-Bit Microcontroller with Flash. Application Note.
Библиотека разработчика. Программирование последовательного порта. Электронный документ.
Последовательный интерфейс RS-232. Описание, принципы работы и использование в коммуникационных системах связи. Электронная подборка.
Липаев В.В. “Тестирование программ”. М., “Радио и связь”, 1986 г.
Приложение 1. Исходный текст программы на ассемблере микропроцессора АТ89С51
; Программа управления изделием TC16E1
; Процессор AT89C51
ORG 00H
RSTGL: LJMP START
ORG 03H
LJMP INTR
ORG 13H
LJMP INTR
ORG 07H
LJMP PORT
START: NOP
MOV A, #0DH ;
MOV R7, A ;
; Инициализация области памяти ОЗУ данных с 40H по 7FH
MOV R2, #40H
MOV R0, #40H
MOV R1, #40H
NULTSR: MOV A, #0EH ; Проставляем бит
MOVX @R0, A
MOV A, R0 ;
INC A ; Увеличиваем счетчик R0
MOV R0, A ;
MOV A, R2 ;
DEC A ; Уменьшаем счетчик R2
MOV R2, A ;
JNZ NULTSR
MOV A, #01H ;
MOV R7, A ;
; Инициализация линейных интерфейсов
MOV R1, #00H
MOV R2, #10H
MOV A, #02H ; CR2
ADD A, #00H
ADD A, #00H ; Команда записи в регистр LI1
MOV R0, A ; Сформирована команда
; инициализации LI1
RESLI: MOV A, #80H ; Команда сброс (CR2.RESET) LI
MOVX @R0, A
MOV A, R0
ADD A, #10H ; Приращение адреса @R0
MOV R0, A
MOV A, R2 ;
DEC A ; Уменьшение счетчика R2
MOV R2, A ;
JNZ RESLI ; Все LI инициализированы?
MOV A, #02H ;
MOV R7, A ;
; Запись в ОЗУ данных состояний регистров линейных интерфейсов
MOV R1, #40H ; Чтение регистров PSR (1..16)
LCALL RDPSR
MOV A, #03H ;
MOV R7, A ;
MOV R1, #41H ; Чтение регистров TSR (1..16)
LCALL RDTSR
MOV A, #04H ;
MOV R7, A ;
MOV R1, #42H ; Чтение регистров CR2 (1..16)
LCALL RDCR2
MOV A, #05H ;
MOV R7, A ;
MOV R1, #43H ; Чтение регистров CR1 (1..16)
LCALL RDCR1
MOV A, #06H ;
MOV R7, A ;
; Инициализация последовательного порта Р3 на прием
LCALL INIPORT
WAITING: NOP
NOP
MOV A, #0CH ;
MOV R7, A ;
NOP
NOP
LJMP WAITING
RDPSR: MOV R2, #10H
MOV A, #0AH ; Адрес регистра PSR
ADD A, #00H ; Адрес первого LI
ADD A, #01H ; Команда на чтение регистра
MOV R0, A ; Сформирована команда на
; чтение регистра PSR
; первого LI
PSRLI: MOV A, #00H
MOVX @R0, A ; Запись в порт P0 команды
; на чтение регистра PSR
; по адресу @R0
MOV A, R0
ADD A, #10H ; Увеличение адреса LI
MOV R0, A ; Запись адреса в R0
MOV A, R2 ; Запись в аккумулятор A
; значения счетчика R2
DEC A ; Уменьшение значения A
MOV R2, A ; Обновление значения
; счетчика R2
MOV R4, A ; Сохранение значения A в R4
MOV C, P1.0 ; Чтение данных из порта P1
MOV P2.0, C ; ===
MOV C, P1.2 ; ===
MOV P2.1, C ; ===
MOV C, P1.5 ; ===
MOV P2.2, C ; ===
MOV A, P2 ; Запись данных из P2 в A
MOV @R1, A ; Запись данных из A в ОЗУ
; по адресу R1
MOV A, R1
ADD A, #04H
MOV R1, A
MOV A, R4 ; Восстановление значения A
JNZ PSRLI ; Повторить цикл, если
; значение A (счетчик R2)
; не равен нулю
RET ; Выход из подпрограммы
RDTSR: MOV R2, #10H
MOV A, #08H ; Адрес регистра TSR
ADD A, #00H ; Адрес первого LI
ADD A, #01H ; Команда на чтение регистра
MOV R0, A ; Сформирована команда на
; чтение регистра TSR
; первого LI
TSRLI: MOV A, #80H ;
MOV P2, A ; Установка флага FL
MOV A, #00H ;
MOVX @R0, A ; Запись в порт P0 команды
; на чтение регистра TSR
; по адресу @R0
MOV A, R0
ADD A, #10H ; Увеличение адреса LI
MOV R0, A ; Запись адреса в R0
MOV A, R2 ; Запись в аккумулятор A
; значения счетчика R2
DEC A ; Уменьшение значения A
MOV R2, A ; Обновление значения
; счетчика R2
MOV R4, A ; Сохранение значения A в R4
MOV C, P1.0 ; Чтение данных из порта P1
MOV P2.0, C ; ===
MOV C, P1.2 ; ===
MOV P2.1, C ; ===
MOV C, P1.3 ; ===
MOV P2.5, C ; ===
MOV C, P1.5 ; ===
MOV P2.2, C ; ===
MOV C, P1.6 ; ===
MOV P2.4, C ; ===
MOV C, P1.7 ; ===
MOV P2.3, C ; ===
MOV A, P2 ; Запись данных из P2 в A
MOV @R1, A ; Запись данных из A в ОЗУ
; по адресу R1
MOV A, R1
ADD A, #04H
MOV R1, A
MOV A, R4 ; Восстановление значения A
JNZ TSRLI ; Повторить цикл, если
; значение А (счетчик R2)
; не равен нулю
RET ; Выход из подпрограммы
RDCR2: MOV R2, #10H
MOV A, #02H ; Адрес регистра CR2
ADD A, #00H ; Адрес первого LI
ADD A, #01H ; Команда на чтение регистра
MOV R0, A ; Сформирована команда на
; чтение регистра CR2
; первого LI
CR2LI: MOV A, #00H
MOVX @R0, A ; Запись в порт P0 команды
; на чтение регистра CR2
; по адресу @R0
MOV A, R0
ADD A, #10H ; Увеличение адреса LI
MOV R0, A ; Запись адреса в R0
MOV A, R2 ; Запись в аккумулятор A
; значения счетчика R2
DEC A ; Уменьшение значения A
MOV R2, A ; Обновление значения
; счетчика R2
MOV R4, A ; Сохранение значения A в R4
MOV C, P1.0 ; Чтение данных из порта P1
MOV P2.3, C ; ===
MOV C, P1.1 ; ===
MOV P2.2, C ; ===
MOV C, P1.2 ; ===
MOV P2.0, C ; ===
MOV C, P1.4 ; ===
MOV P2.5, C ; ===
MOV C, P1.5 ; ===
MOV P2.6, C ; ===
MOV C, P1.6 ; ===
MOV P2.7, C ; ===
MOV A, P2 ; Запись данных из P2 в A
MOV @R1, A ; Запись данных из A в ОЗУ
; по адресу R1
MOV A, R1
ADD A, #04H
MOV R1, A
MOV A, R4 ; Восстановление значения A
JNZ CR2LI ; Повторить цикл, если
; значение А (счетчик R2)
; не равен нулю
RET ; Выход из подпрограммы
RDCR1: MOV R2, #10H
MOV A, #00H ; Адрес регистра CR1
ADD A, #00H ; Адрес первого LI
ADD A, #01H ; Команда на чтение регистра
MOV R0, A ; Сформирована команда на
; чтение регистра CR1 первого
; LI
CR1LI: MOV A, #00H
MOVX @R0, A ; Запись в порт P0 команды
; на чтение регистра CR1
; по адресу @R0
MOV A, R0
ADD A, #10H ; Увеличение адреса LI
MOV R0, A ; Запись адреса в R0
MOV A, R2 ; Запись в аккумулятор A
; значения счетчика R2
DEC A ; Уменьшение значения A
MOV R2, A ; Обновление значения
; счетчика R2
MOV R4, A ; Сохранение значения A в R4
MOV C, P1.0 ; Чтение данных из порта P1
MOV P2.0, C ; ===
MOV C, P1.1 ; ===
MOV P2.1, C ; ===
MOV C, P1.2 ; ===
MOV P2.2, C ; ===
MOV C, P1.3 ; ===
MOV P2.3, C ; ===
MOV A, P2 ; Запись данных из P2 в A
MOV @R1, A ; Запись данных из A в ОЗУ
; по адресу R1
MOV A, R1
ADD A, #04H
MOV R1, A
MOV A, R4 ; Восстановление значения A
JNZ CR1LI ; Повторить цикл, если
; значение А (счетчик R2)
; не равен нулю
RET ; Выход из подпрограммы
INTR: NOP
MOV R1, #40H ; Чтение регистров PSR (1..16)
LCALL RDPSR
MOV R1, #41H ; Чтение регистров TSR (1..16)
LCALL RDTSR
MOV R1, #42H ; Чтение регистров CR2 (1..16)
LCALL RDCR2
MOV R1, #43H ; Чтение регистров CR1 (1..16)
LCALL RDCR1
; Снятий флагов прерываний в регистре ICR (1..16)
MOV R1, #00H
MOV R2, #10H
MOV A, #06H ; Адрес регистра ICR
ADD A, #00H
ADD A, #00H ; Команда записи в регистр LI
MOV R0, A ; Сформирована команда
; инициализации LI
REICR: MOV A, #00H ; Команда сброса флагов
; регистров ICR LI
MOVX @R0, A
MOV A, R0
ADD A, #10H ; Приращение адреса @R0
MOV R0, A ;
MOV A, R2
DEC A
MOV R2, A
JNZ REICR
MOV A, #0BH ;
MOV R7, A ;
RETI ; Возврат INTR'a
END
Дипломный
проект
МГИЭТ (ТУ), кафедра ИПОВС,
1999 -