Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Ход работы. Периферийная плата исследователя снабжена двумя кнопками PB1 и PB2





Периферийная плата исследователя снабжена двумя кнопками PB1 и PB2. Если кнопка нажата, соответствующая входная линия читается как «0»; если нет, она читается как «1». Кнопка PB1 подключена на GPIO17, а PB2 на GPIO48.

Задание.

Для того, чтобы начать последовательность счета из Lab2.4, необходимо нажать PB1.

Для того, чтобы приостановить последовательность счета, нажать PB2.

Для того, чтобы продолжать счет, снова нажать PB1.

Модифицируйте программу и файл проекта

Откройте исходную программу «Lab5_4.c» из проекта Lab21.pjt в C:\DSP2833x_V4\Labs\Lab5 и сохраните её как «Lab5_5.c».

Исключите файл «Lab5_4.c» из build. Правое нажатие на Lab5_4.c в окне проекта и выбор «Exclude File(s) from Build».

Модифицируйте Lab5_5.c

Проверьте функцию «Gpio_select()» и убедитесь, что GPIO17 и GPIO48 проинициализированы как входные линии.

В начало Lab5_5.c добавьте два определения:

 

#define START GpioDataRegs.GPADAT.bit.GPIO17;

#define STOP GpioDataRegs.GPBDAT.bit.GPIO48;

 

Теперь мы можем использовать символы START и STOP вместо длинных имен битовых переменных.

В начало функции «delay_loop()», добавьте определение для статической переменной «run» и инициализируйте её как 0:

 

static unsigned int run = 0;

 

Эта переменная позже будет использована в качестве управляющего ключа. Если run = 0 выполнение цикла кода остановлено. Если run = 1, цикл управляющего кода разрешен.

В for()–цикл функции «delay_loop()», добавьте кодовую последовательность, чтобы отложить выполнение цикла пока PB1 не нажата. Эта опция должна использовать do–while конструкцию:

do

{

EALLOW;

SysCtrlRegs.WDKEY = 0x55;

SysCtrlRegs.WDKEY = 0xAA; // service watchdog

EDIS;

if (START == 0 && STOP == 1) run = 1; // run control code if PB1=0

} while (.run);

 

Примечание. Вы должны отрегулировать вычисление входного параметра для функции «delay_loop()».

После того, как выполнен do–while –цикл, нам нужно проверить, нажата ли PB2. Если нажата, то мы должны установить переменную run = 0.

 

if(STOP == 0) run = 0; // пауза

 

С следующим повторением for() –цикла процессор снова входит в do–while конструкцию и ждет вторую START команду.

Процедуры шагов 6 и 7 – один из вариантов решения задания. Вы можете найти другие решения равные или более подходящие.

Скомпилируйте, загрузите и протестируйте программу как Вы сделали в предшествующих упражнениях.

 

Date: 2015-06-06; view: 601; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию