Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- * of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- * list of conditions and the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #include "MKL25Z4.h"
- #include "drv_lcd.h"
- #include "drv_gpio.h"
- #define SWITCH_PIN (4) // A4
- #define SWITCH_PIN2 (5) // A5
- #define VODA (0) // E0 - 15
- #define BUBEN_PRAVA (5) // E5 - 11
- #define BUBEN_LEVA (1) // E5 - 11
- #define TOPENI (1) // E1 - 16
- #define HLADINA_50 (6)
- #define TOPENI_60 (2)
- #define TOPENI_40 (16)
- #define CERPADLO (0)
- #define OTACKY_ZVYSENE (4)
- #define while_true (1)
- static int i = 0;
- void init(void);
- static inline int IsKeyPressed(int pin);
- void program1();
- void program2();
- void delay(void);
- int main(void) {
- /* Write your code here */
- // Initialize the pins
- init();
- // Wait for the user to press switch SW1. When pressed, continue with the next step.
- while (while_true) {
- if (IsKeyPressed(SWITCH_PIN2)) {
- program2();
- } else if (IsKeyPressed(SWITCH_PIN)) {
- program1();
- }
- }
- /* Never leave main */
- return 0;
- }
- void init(void) {
- // Enable clock for ports A and B
- SIM->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTE_MASK
- | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK);
- PORTA->PCR[SWITCH_PIN] = PORT_PCR_MUX(1);
- PORTA->PCR[SWITCH_PIN2] = PORT_PCR_MUX(1);
- PORTE->PCR[OTACKY_ZVYSENE] = PORT_PCR_MUX(1);
- PTE->PDDR |= (1 << OTACKY_ZVYSENE); // SV1 is output - valve 1
- PORTE->PCR[VODA] = PORT_PCR_MUX(1);
- PTE->PDDR |= (1 << VODA); // SV1 is output - valve 1
- PORTE->PCR[TOPENI] = PORT_PCR_MUX(1);
- PTE->PDDR |= (1 << TOPENI); // SV1 is output - valve 1
- PORTC->PCR[HLADINA_50] = PORT_PCR_MUX(1);
- PORTD->PCR[TOPENI_60] = PORT_PCR_MUX(1);
- PORTD->PCR[CERPADLO] = PORT_PCR_MUX(1);
- PTD->PDDR |= (1 << CERPADLO); // SV1 is output - valve 1
- PORTE->PCR[BUBEN_PRAVA] = PORT_PCR_MUX(1);
- PORTC->PCR[BUBEN_LEVA] = PORT_PCR_MUX(1);
- PTE->PDDR |= (1 << BUBEN_PRAVA); // SV1 is output - valve 1
- PTC->PDDR |= (1 << BUBEN_LEVA); // SV1 is output - valve 1
- LCD_initialize();
- // 2. Smazeme displej. Kurzor bude na radku 1, sloupci 1.
- LCD_clear();
- }
- static inline int IsKeyPressed(int pin) {
- if ((PTA->PDIR & (1 << pin)) == 0)
- return 1;
- else
- return 0;
- }
- void program1() {
- // Zapnuti programu
- LCD_clear();
- LCD_set_cursor(1, 1);
- LCD_puts("Program 1 spusten!");
- PTE->PSOR = PTE->PSOR | (1 << BUBEN_PRAVA);
- delay();
- PTE->PCOR = PTE->PCOR | (1 << BUBEN_PRAVA);
- PTE->PSOR = PTE->PSOR | (1 << VODA);
- while ((PTC->PDIR & (1 << HLADINA_50)) == 0)
- ;
- PTE->PCOR = PTE->PCOR | (1 << VODA);
- PTE->PSOR = PTE->PSOR | (1 << TOPENI);
- while ((PTD->PDIR & (1 << TOPENI_60)) == 0)
- ;
- PTE->PCOR = PTE->PCOR | (1 << TOPENI);
- PTE->PSOR = PTE->PSOR | (1 << BUBEN_PRAVA);
- delay();
- PTE->PCOR = PTE->PCOR | (1 << BUBEN_PRAVA);
- PTC->PSOR = PTE->PSOR | (1 << BUBEN_LEVA);
- delay();
- PTC->PCOR = PTE->PCOR | (1 << BUBEN_LEVA);
- PTE->PSOR = PTE->PSOR | (1 << BUBEN_PRAVA);
- delay();
- PTE->PCOR = PTE->PCOR | (1 << BUBEN_PRAVA);
- PTD->PSOR = PTE->PSOR | (1 << CERPADLO);
- delay();
- PTD->PCOR = PTE->PCOR | (1 << CERPADLO);
- PTE->PSOR = PTE->PSOR | (1 << OTACKY_ZVYSENE);
- PTC->PSOR = PTE->PSOR | (1 << BUBEN_LEVA);
- delay();
- PTC->PCOR = PTE->PCOR | (1 << BUBEN_LEVA);
- PTE->PCOR = PTE->PCOR | (1 << OTACKY_ZVYSENE);
- // Zapnuti programu
- LCD_clear();
- LCD_set_cursor(1, 1);
- LCD_puts("Dekujeme za");
- LCD_set_cursor(2, 1);
- LCD_puts("pouziti pracky!");
- }
- void program2() {
- // Zapnuti programu
- LCD_set_cursor(1, 1);
- LCD_puts("Program 2 spusten!");
- PTE->PSOR = PTE->PSOR | (1 << BUBEN_PRAVA);
- delay();
- PTE->PCOR = PTE->PCOR | (1 << BUBEN_PRAVA);
- PTE->PSOR = PTE->PSOR | (1 << VODA);
- while ((PTC->PDIR & (1 << HLADINA_50)) == 0)
- ;
- PTE->PCOR = PTE->PCOR | (1 << VODA);
- PTE->PSOR = PTE->PSOR | (1 << TOPENI);
- while ((PTD->PDIR & (1 << TOPENI_40)) == 0)
- ;
- PTE->PCOR = PTE->PCOR | (1 << TOPENI);
- PTE->PSOR = PTE->PSOR | (1 << BUBEN_PRAVA);
- delay();
- PTE->PCOR = PTE->PCOR | (1 << BUBEN_PRAVA);
- PTC->PSOR = PTE->PSOR | (1 << BUBEN_LEVA);
- delay();
- PTC->PCOR = PTE->PCOR | (1 << BUBEN_LEVA);
- PTE->PSOR = PTE->PSOR | (1 << BUBEN_PRAVA);
- delay();
- PTE->PCOR = PTE->PCOR | (1 << BUBEN_PRAVA);
- PTD->PSOR = PTE->PSOR | (1 << CERPADLO);
- delay();
- PTD->PCOR = PTE->PCOR | (1 << CERPADLO);
- PTE->PSOR = PTE->PSOR | (1 << OTACKY_ZVYSENE);
- PTC->PSOR = PTE->PSOR | (1 << BUBEN_LEVA);
- delay();
- PTC->PCOR = PTE->PCOR | (1 << BUBEN_LEVA);
- PTE->PCOR = PTE->PCOR | (1 << OTACKY_ZVYSENE);
- // Zapnuti programu
- LCD_clear();
- LCD_set_cursor(1, 1);
- LCD_puts("Dekujeme za");
- LCD_set_cursor(2, 1);
- LCD_puts("pouziti pracky!");
- }
- void delay(void) {
- // 5 sec
- unsigned long n = 16666666;
- while (n--)
- ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement