Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Разработка программы обработки событий

Автор:   •  Май 11, 2019  •  Лабораторная работа  •  1,051 Слов (5 Страниц)  •  352 Просмотры

Страница 1 из 5

Разработка программы обработки событий

Рисунок заданного графа:

[pic 1]

[pic 2]

[pic 3][pic 4][pic 5][pic 6][pic 7][pic 8][pic 9][pic 10][pic 11][pic 12][pic 13][pic 14]

Листинг программы, реализующей алгоритм:

#include “stm32f10x.h”

#include “stm32f10x_gpio.h”

#include “stm32f10x_rcc.h”

int state=0;

int k=0;

int k_p=0;

int C_k=0;

int Q=0; //переменная, отвечает за кол-во нажатий кнопки

int V=0; //переменная, отвечает за кол-во секунд в течение горения светодиода

int i=0;

void TIM6_DAC_IRQHandler(void)

{

TIM->SR &=~ TIM_SR_UIF;

K=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);

if (k= = 1 & k_p = = 0) Q=Q+1;  момент нажатия кнопки. Сигнал сохраняется после ее отпускания. (Работа по принципу RS -триггера

k_p=k;

if (Q>0) C_k=C_k+1;  

if (C_k= = 150)

{

        if(Q = = 3)

        {

                        state=1;

                }

                

                C_k=0;

                Q=0;

}

Swith (state)      // state - переменная состояния, нажатия кнопки

{

        case 0; //светодиоды не горят

        {

        GPIO_WriteBit(GPIOC, GPIO_Pin_8, 0);

        GPIO_WriteBit(GPIOC, GPIO_Pin_9, 0);

        break;

        }

        

        case: 1 //PC8 и PC9 горят

        

        {

        GPIO_WriteBit(GPIOC, GPIO_Pin_9, 1);

        GPIO_WriteBit(GPIOC, GPIO_Pin_8, 1);

        V=V+1;

If (V = = 150) //период времени, в течение которого горят 3 секунды диоды

        {

        state = 2;

        V=0;

        }

                        break;

        

                        }

case 2: // PC8 мигает, PC9 не горит

        {

        GPIO_WriteBit(GPIOC, GPIO_Pin_8, 1);

        GPIO_WriteBit(GPIOC, GPIO_Pin_9, 0);

        for( i=0; i<0x10000; i++);

        GPIO_WriteBit(GPIOC, GPIO_Pin_8, 0);

        for( i=0; i<0x10000; i++);

                                                V=V+1;

if( V = = 60) //период времен, в течение которого мигает 4 секунды Pin_8

        

{

    state=3; //PC8 не мигает, PC9 мигает с частотой 2 раза меньшей

    V=0;

}

        break;

        }

                        case 3;

        }

        GPIO_WriteBit(GPIOC, GPIO_Pin_9, 1);

        GPIO_WriteBit(GPIOC, GPIO_Pin_9, 0);

...

Скачать:   txt (4.9 Kb)   pdf (258.6 Kb)   docx (14 Kb)  
Продолжить читать еще 4 страниц(ы) »
Доступно только на Essays.club