
Working but very buggy
main.cpp@0:147fce697a5d, 2021-02-09 (annotated)
- Committer:
- andrewbw01
- Date:
- Tue Feb 09 18:04:24 2021 +0000
- Revision:
- 0:147fce697a5d
Working but very buggy
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
andrewbw01 | 0:147fce697a5d | 1 | #include "mbed.h" |
andrewbw01 | 0:147fce697a5d | 2 | |
andrewbw01 | 0:147fce697a5d | 3 | BusOut LED_Disp(p7,p11,p9,p8,p5,p6,p10,p12); |
andrewbw01 | 0:147fce697a5d | 4 | |
andrewbw01 | 0:147fce697a5d | 5 | InterruptIn button_up(p14); //assign interrupt to 14 and 15 |
andrewbw01 | 0:147fce697a5d | 6 | InterruptIn button_down(p17); |
andrewbw01 | 0:147fce697a5d | 7 | |
andrewbw01 | 0:147fce697a5d | 8 | int counter1; //global counter value |
andrewbw01 | 0:147fce697a5d | 9 | |
andrewbw01 | 0:147fce697a5d | 10 | void Increment_up(void); //ISR to be assigned to button_up interrupt |
andrewbw01 | 0:147fce697a5d | 11 | void Increment_down(void); |
andrewbw01 | 0:147fce697a5d | 12 | void DisplayNumber(int); //function to display number on seven segment |
andrewbw01 | 0:147fce697a5d | 13 | |
andrewbw01 | 0:147fce697a5d | 14 | int main() |
andrewbw01 | 0:147fce697a5d | 15 | { |
andrewbw01 | 0:147fce697a5d | 16 | button_up.rise(&Increment_up); //attach adress of ISR to interrupt |
andrewbw01 | 0:147fce697a5d | 17 | button_down.rise(&Increment_down); |
andrewbw01 | 0:147fce697a5d | 18 | |
andrewbw01 | 0:147fce697a5d | 19 | while(1) |
andrewbw01 | 0:147fce697a5d | 20 | { |
andrewbw01 | 0:147fce697a5d | 21 | wait(0.2); |
andrewbw01 | 0:147fce697a5d | 22 | } |
andrewbw01 | 0:147fce697a5d | 23 | } |
andrewbw01 | 0:147fce697a5d | 24 | |
andrewbw01 | 0:147fce697a5d | 25 | // Interrupt function to increment counter |
andrewbw01 | 0:147fce697a5d | 26 | void Increment_up(void) |
andrewbw01 | 0:147fce697a5d | 27 | { |
andrewbw01 | 0:147fce697a5d | 28 | counter1++; //increment counter |
andrewbw01 | 0:147fce697a5d | 29 | |
andrewbw01 | 0:147fce697a5d | 30 | if(counter1 <0) // check for min value |
andrewbw01 | 0:147fce697a5d | 31 | counter1 = 0; |
andrewbw01 | 0:147fce697a5d | 32 | |
andrewbw01 | 0:147fce697a5d | 33 | if(counter1 >9) //check for max value |
andrewbw01 | 0:147fce697a5d | 34 | counter1 = 9; |
andrewbw01 | 0:147fce697a5d | 35 | |
andrewbw01 | 0:147fce697a5d | 36 | DisplayNumber(counter1); //display counter1 number on seven segment |
andrewbw01 | 0:147fce697a5d | 37 | wait(0.3); //debounce timer |
andrewbw01 | 0:147fce697a5d | 38 | |
andrewbw01 | 0:147fce697a5d | 39 | } |
andrewbw01 | 0:147fce697a5d | 40 | |
andrewbw01 | 0:147fce697a5d | 41 | void Increment_down(void) |
andrewbw01 | 0:147fce697a5d | 42 | { |
andrewbw01 | 0:147fce697a5d | 43 | counter1--; |
andrewbw01 | 0:147fce697a5d | 44 | if(counter1 <0) |
andrewbw01 | 0:147fce697a5d | 45 | counter1 = 0; |
andrewbw01 | 0:147fce697a5d | 46 | |
andrewbw01 | 0:147fce697a5d | 47 | if(counter1 >9) |
andrewbw01 | 0:147fce697a5d | 48 | counter1 = 9; |
andrewbw01 | 0:147fce697a5d | 49 | |
andrewbw01 | 0:147fce697a5d | 50 | DisplayNumber(counter1); |
andrewbw01 | 0:147fce697a5d | 51 | wait(0.3); |
andrewbw01 | 0:147fce697a5d | 52 | } |
andrewbw01 | 0:147fce697a5d | 53 | |
andrewbw01 | 0:147fce697a5d | 54 | //funtion to display counter1 on seven segment |
andrewbw01 | 0:147fce697a5d | 55 | void DisplayNumber(int num) |
andrewbw01 | 0:147fce697a5d | 56 | { |
andrewbw01 | 0:147fce697a5d | 57 | switch(num) |
andrewbw01 | 0:147fce697a5d | 58 | { |
andrewbw01 | 0:147fce697a5d | 59 | case 0: |
andrewbw01 | 0:147fce697a5d | 60 | LED_Disp = ~0x3F; |
andrewbw01 | 0:147fce697a5d | 61 | break; |
andrewbw01 | 0:147fce697a5d | 62 | case 1: |
andrewbw01 | 0:147fce697a5d | 63 | LED_Disp = ~0x06; |
andrewbw01 | 0:147fce697a5d | 64 | break; |
andrewbw01 | 0:147fce697a5d | 65 | case 2: |
andrewbw01 | 0:147fce697a5d | 66 | LED_Disp = ~0x5B; |
andrewbw01 | 0:147fce697a5d | 67 | break; |
andrewbw01 | 0:147fce697a5d | 68 | case 3: |
andrewbw01 | 0:147fce697a5d | 69 | LED_Disp = ~0x4F; |
andrewbw01 | 0:147fce697a5d | 70 | break; |
andrewbw01 | 0:147fce697a5d | 71 | case 4: |
andrewbw01 | 0:147fce697a5d | 72 | LED_Disp = ~0x66; |
andrewbw01 | 0:147fce697a5d | 73 | break; |
andrewbw01 | 0:147fce697a5d | 74 | case 5: |
andrewbw01 | 0:147fce697a5d | 75 | LED_Disp = ~0x6D; |
andrewbw01 | 0:147fce697a5d | 76 | break; |
andrewbw01 | 0:147fce697a5d | 77 | case 6: |
andrewbw01 | 0:147fce697a5d | 78 | LED_Disp = ~0x7D; |
andrewbw01 | 0:147fce697a5d | 79 | break; |
andrewbw01 | 0:147fce697a5d | 80 | case 7: |
andrewbw01 | 0:147fce697a5d | 81 | LED_Disp = ~0x07; |
andrewbw01 | 0:147fce697a5d | 82 | break; |
andrewbw01 | 0:147fce697a5d | 83 | case 8: |
andrewbw01 | 0:147fce697a5d | 84 | LED_Disp = ~0x7F; |
andrewbw01 | 0:147fce697a5d | 85 | break; |
andrewbw01 | 0:147fce697a5d | 86 | case 9: |
andrewbw01 | 0:147fce697a5d | 87 | LED_Disp = ~0x67; |
andrewbw01 | 0:147fce697a5d | 88 | break; |
andrewbw01 | 0:147fce697a5d | 89 | } |
andrewbw01 | 0:147fce697a5d | 90 | } |
andrewbw01 | 0:147fce697a5d | 91 | |
andrewbw01 | 0:147fce697a5d | 92 | |
andrewbw01 | 0:147fce697a5d | 93 | |
andrewbw01 | 0:147fce697a5d | 94 | |
andrewbw01 | 0:147fce697a5d | 95 |