Автор: Пользователь скрыл имя, 21 Декабря 2011 в 20:05, курсовая работа
Таким образом основные функции МПУ:
а) прием и обработка сигнала с датчика угла;
б) отображение H на четырехразрядном цифровом индикаторе;
в) осуществлять установку/снятие защиты;
г) вывод сигналов управления при срабатывании защиты.
Взаимодействие МПУ с индикатором и органами управления представлено на рисунке 1.
1 Функциональная спецификация и системные требования……………………...
2 Системно – алгоритмическое проектирование…………………………………..
3 Разработка аппаратных средств…………………………………………………..
4 Разработка программы…………………………………………………………...
5 Трансляция и автономная отладка программы…………………………………
6 Комплексная отладка программы………………………………………………
Список использованных источников……………………………………………...
Приложения А – Исходный текст програм
Рисунок 6 - Идеальный и реальный сигналы
Известны аппаратные средства подавления «дребезга контактов» (с помощью RS-триггеров, одновибраторов или интегрирующих RC цепочек, устанавливаемых перед триггерами Шмитта). В устройствах на базе МК обычно используют программные способы подавления «дребезга контактов». Простейший из них основан на ограничении минимальных интервалов времени между последовательными операциями чтения порта ввода. Для надежного считывания состояний кнопки величина этих интервалов не должна быть меньше 15 – 30 мс.
Реализовать подпрограмму задержки можно с использованием таймера TMR0 или программно. Выберем второй вариант, и в этом случае временную задержку обычно формируют с помощью программного счетчика, например, вычитающего:
D15ms movlw .30
movwf Temp2
_15ms call D500us
decfsz Temp2,1
goto _15ms
return
D500us movlw .151
movwf Temp1
_500us decfsz Temp1,1
goto _500us
return
Теперь,
когда определены все используемые ресурсы
МК, можно приступить к программированию
операторов инициализации. При программировании
операторов инициализации модулей МК
необходимо помнить, что все ячейки статической
памяти данных МК размещаются в четырех
банках. При обращении к регистрам специальных
функций следует учитывать, в каком банке
они размещаются. С учетом этого операторы
инициализации модулей МК:
Инициализация:
clrf PORTD
movlw Init_ACP
movwf ADCON0
;Fosc/8,канал AN0,разрешить A/
BANKSEL OPTION_REG
movlw INIT_PA movwf TRISA^80h ;все линии - ввод
movlw Init_OPT
movwf OPTION_REG^80h ;включить подтягивающие резисторы
movlw Init_AD1
movwf ADCON1^80h ;включены линии PORTE, результат АЦП влево
movlw Init_PB
movwf TRISB^80h ;бит 3 - вывод
movlw Init_PD
movwf TRISD^80h ;все линии на вывод
movlw Init_PE
movwf TRISE^80h ;линии 1-0 – вывод
BANKSEL PORTD
call Control_MC14489
;инициализация MC14489
Инициализация микрокантролера:
bcf Cs
movlw b'00000001'
call Send8
bsf Cs
return
Инициализация ячеек памяти:
Clrf Hmax_L
clrf Hmax_H
movlw 0x40
movwf Hmax_L
movlw 0x1F
movwf Hmax_H
clrf ugol_L
clrf ugol_H
clrf H_Lbyte
clrf H_Hbyte
clrf L
clrf alpha
clrf flag
В
полученном исходном тексте программы
на языке ассемблера использованы символические
имена ячеек памяти, их отдельных
разрядов, констант. Для успешной трансляции
программы необходимо описать эти имена,
используя директивы ассемблера.
CBLOCK 0x20
temp
count
Cnt ;задержка для АЦП
R0 ;точки 7сегм.
R1 ;разряды 3-2 7сегм.
R2 ;разряды 1-0 7сегм.
L_byte
H_byte
Indval ;слово в MC14489
Cntind ;счетчик разрядов MC14489
Temp1;задержка 1
Temp2;задержка 2
L ;значение длины стрелы
alpha ;угол подъема стрелы
Hmax_L ;максимально значение параметра Н мл. байт
Hmax_H ; максимально значение параметра Н ст. байт
ugol_L ;синус угла мл. байт
ugol_H ;синус угла ст. байт
flag ;флаг состояний
H_Lbyte ;рассчетное значение Н мл. байт
H_Hbyte ;рассчетное значение Н ст. байт
ENDC
Константы:
INIT_PA EQU b'00111111' ;все линии ввод
Init_OPT EQU b'01000000';включить подтягивающие резисторы
Init_PB EQU b'11110111' ;биты 3 - вывод
Init_PE EQU b'00000100' ;биты 1,0 - вывод
Init_AD1 EQU b'00000100' ;включены линии PORTE, результат АЦП влево
Init_ACP EQU b'01000001' ;Fosc/8,канал AN0,разрешить A/D
Init_PD EQU b'00000000' ;все линии на вывод
Битовые переменные:
#define RB1 PORTB,1;кнопка "Установка/снятие защиты
#define Data_in PORTE,1;сигналы MC14489
#define Clk PORTE,0
#define Cs PORTB,3 #define Led0 PORTD,0 ;защита установлена/снята
#define Led1 PORTD,1
;превышение значения Hmax
Вычисление параметра H будет производить подпрограмма raschetH. Она основана на последовательном сложении 8 раз младших байтов ugol_L с учётом флага С и старших байтов ugol_H.
raschetH
movf ugol_L,w
movwf H_Lbyte
movf ugol_H,w
movwf H_Hbyte
movlw .7
movwf L
umn
movf ugol_L,w
addwf H_Lbyte,f (младший с младшим сложили)
btfss STATUS,C (если переполнено идём на старший с добавлением 1)
goto sl_st_bt
incf H_Hbyte (переполнение учли в старших)
sl_st_bt
movf ugol_H,w
addwf H_Hbyte,f (старшие со старшими)
decfsz L (декремент, пропускаем если 0)
goto umn
return
5 Трансляция и автономная отладка программы
Отладка
программ микропроцессорной системы
проводится, как правило, на тех же
ЭВМ, на которых велась разработка программ,
и на том же языке программирования,
на котором написаны отлаживаемые программы,
и может быть начата на ЭВМ даже
при отсутствии аппаратуры МПС. При
этом в системном программном
обеспечении ЭВМ должны находиться
программы (интерпретаторы или эмуляторы),
моделирующие функции отсутствующих
аппаратных средств. Так, разработка и
автономная отладка программных
средств может вестись на больших
ЭВМ, мини-ЭВМ, микро-ЭВМ, система команд
которых не совпадает с системой
команд используемого микропроцессора.
Кроме того, при отладке программ
может отсутствовать внешняя
среда микропроцессорной
Проверка корректности программ, то есть проверка соответствия их внешним спецификациям, осуществляется тестированием. Программы проверяются на функционирование с различными исходными данными. Результаты функционирования программ сравниваются с эталонными значениями.
Отладка программ подразделяется на следующие этапы: планирование отладки; составление тестов и задания на отладку; исполнение программ; информирование о результатах исполнения программ по заданным исходным данным; анализ результатов, обнаружение ошибок и локализация неисправностей.
В нашем случае, как для разработки программы, так и для автономной ее отладки использовался специализированный пакет программ MPLAB IDE фирмы Microchip.
Программу целесообразно отлаживать в режиме анимации (быстрый пошаговый режим). Для имитации нажатия кнопок RB1, будем использовать асинхронные стимулы (Debugger> Stimulus>New Workbook >Asynch). Результат аналого-цифрового преобразования будем задавать в окне Wotch в регистр АЦП ADRESH. Для этого поставим точку останова на окончании преобразования АЦП.
В
окне Watch будем наблюдать за изменением
регистра PORTD, R1,R2, H_Lbyte, H_Hbyte. При нажатии
на кнопку RB1 будет устанавливаться flag
и содержимое Hmax_L и H_max_H будет изменять
на текущее значение H_Hbyte и H_Lbyte соответственно.
При повторном нажатии на кнопку RB1 flag
будет сбрасываться и ячейки H_Hbyte, H_Lbyte
будет записываться значение 1000, 0000 соответственно.
Полная проверка работы основного цикла
программы потребует много времени. Ускорить
этот процесс можно путем установки нужных
значений угла. Возможные значения этих
величин приведены в таблице 6.
Таблица 6 – Результаты автономной отладки
alpha | H_Hbyte | H_Lbyte | R1 | R2 |
0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 1 |
2 | 0 | 10 | 0 | 2 |
… | … | … | … | |
60 | 110 | 1001 | 6 | 9 |
90 | 1000 | 0 | 8 | 0 |