Interrupt Uebungen

Dependencies:   mbed

Committer:
haunsi
Date:
Wed Jan 22 16:04:29 2020 +0000
Revision:
0:0256cd93b913
Interrupt Uebungen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
haunsi 0:0256cd93b913 1 #include "mbed.h"
haunsi 0:0256cd93b913 2
haunsi 0:0256cd93b913 3 // DigitalOut eine Variable für ein Bit
haunsi 0:0256cd93b913 4 // BusOut eine Variable für eine ganze Bitgruppe
haunsi 0:0256cd93b913 5 // Alle 12-Leds des M0-Boards zu einer Bitgruppe zusammenfassen
haunsi 0:0256cd93b913 6 // LSB MSB
haunsi 0:0256cd93b913 7 // 2^0 2^1 2^2 2^11
haunsi 0:0256cd93b913 8 BusOut lb(P1_13,P1_12,P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1);
haunsi 0:0256cd93b913 9 // D20 D19 D18 D17 D16 D15 D14 D13 D4 D3 D2 D1
haunsi 0:0256cd93b913 10
haunsi 0:0256cd93b913 11 // SW 1 SW 2 SW 3 SW 4
haunsi 0:0256cd93b913 12 // Bit0 Bit1 Bit2 Bit3
haunsi 0:0256cd93b913 13 BusIn btn(P0_10, P0_15, P0_23, P0_16);
haunsi 0:0256cd93b913 14
haunsi 0:0256cd93b913 15 void OneRunLightStep();
haunsi 0:0256cd93b913 16 void OneRunLightStep2(); //Einen Schritt des Runlight's ausführen
haunsi 0:0256cd93b913 17
haunsi 0:0256cd93b913 18 int prevSw3 = 0; //Schalterzustand so wie er bei der letzten Abfrage war
haunsi 0:0256cd93b913 19
haunsi 0:0256cd93b913 20 //CheckButton() liefert nur dann 1 wenn eine Flanke am Button erkannt wurde
haunsi 0:0256cd93b913 21 int CheckButton()
haunsi 0:0256cd93b913 22 {
haunsi 0:0256cd93b913 23 int ret = 0;
haunsi 0:0256cd93b913 24 if( prevSw3==0 && (btn&4))
haunsi 0:0256cd93b913 25 ret = 1;
haunsi 0:0256cd93b913 26
haunsi 0:0256cd93b913 27 else
haunsi 0:0256cd93b913 28 ret = 0;
haunsi 0:0256cd93b913 29 prevSw3 = (btn & 4); //alten Zustand merken
haunsi 0:0256cd93b913 30 return ret;
haunsi 0:0256cd93b913 31 }
haunsi 0:0256cd93b913 32
haunsi 0:0256cd93b913 33 int main()
haunsi 0:0256cd93b913 34 {
haunsi 0:0256cd93b913 35 lb = 1;
haunsi 0:0256cd93b913 36 while(1)
haunsi 0:0256cd93b913 37 {
haunsi 0:0256cd93b913 38
haunsi 0:0256cd93b913 39 if (CheckButton())
haunsi 0:0256cd93b913 40 {
haunsi 0:0256cd93b913 41 OneRunLightStep();
haunsi 0:0256cd93b913 42 }
haunsi 0:0256cd93b913 43 }
haunsi 0:0256cd93b913 44 }
haunsi 0:0256cd93b913 45
haunsi 0:0256cd93b913 46 int gCnt = 0;
haunsi 0:0256cd93b913 47 void OneRunLightStep()
haunsi 0:0256cd93b913 48 {
haunsi 0:0256cd93b913 49 lb = lb << 1;
haunsi 0:0256cd93b913 50 gCnt++;
haunsi 0:0256cd93b913 51 if(gCnt > 11)
haunsi 0:0256cd93b913 52 {
haunsi 0:0256cd93b913 53 lb = 1;
haunsi 0:0256cd93b913 54 gCnt = 0;
haunsi 0:0256cd93b913 55 }
haunsi 0:0256cd93b913 56 }
haunsi 0:0256cd93b913 57 void OneRunLightStep2()
haunsi 0:0256cd93b913 58 {
haunsi 0:0256cd93b913 59 if(lb == 0)
haunsi 0:0256cd93b913 60 {
haunsi 0:0256cd93b913 61 lb = 1;
haunsi 0:0256cd93b913 62 }
haunsi 0:0256cd93b913 63 else
haunsi 0:0256cd93b913 64 {
haunsi 0:0256cd93b913 65 lb = lb << 1;
haunsi 0:0256cd93b913 66 }
haunsi 0:0256cd93b913 67 }
haunsi 0:0256cd93b913 68