Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@3:21a5cec57b18, 2020-05-18 (annotated)
- Committer:
- namcheol
- Date:
- Mon May 18 12:24:00 2020 +0000
- Revision:
- 3:21a5cec57b18
- Parent:
- 2:20e20cfae75e
lab06-digital-clock
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dshin | 0:f31836d48420 | 1 | #include "mbed.h" |
| namcheol | 3:21a5cec57b18 | 2 | #include "C12832.h" |
| namcheol | 3:21a5cec57b18 | 3 | |
| namcheol | 3:21a5cec57b18 | 4 | C12832 lcd(D11, D13, D12, D7, D10); //lcd = (MOSI, SCK, RESET, A0, nCS) |
| namcheol | 3:21a5cec57b18 | 5 | InterruptIn sw2(SW2); //start or stop start = green led on |
| namcheol | 3:21a5cec57b18 | 6 | InterruptIn sw3(SW3); //reset |
| namcheol | 3:21a5cec57b18 | 7 | PwmOut Green(D9); |
| namcheol | 3:21a5cec57b18 | 8 | PwmOut Red(D5); |
| namcheol | 3:21a5cec57b18 | 9 | InterruptIn up(A2); |
| namcheol | 3:21a5cec57b18 | 10 | InterruptIn down(A3); |
| namcheol | 3:21a5cec57b18 | 11 | InterruptIn left(A4); |
| namcheol | 3:21a5cec57b18 | 12 | InterruptIn rite(A5); |
| namcheol | 3:21a5cec57b18 | 13 | InterruptIn center(D4); |
| namcheol | 3:21a5cec57b18 | 14 | |
| namcheol | 3:21a5cec57b18 | 15 | Timer timer; |
| namcheol | 3:21a5cec57b18 | 16 | int offset = 0; |
| namcheol | 3:21a5cec57b18 | 17 | int start = 0; |
| namcheol | 3:21a5cec57b18 | 18 | |
| namcheol | 3:21a5cec57b18 | 19 | void ISR_sw2() |
| namcheol | 3:21a5cec57b18 | 20 | { |
| namcheol | 3:21a5cec57b18 | 21 | if(start == 0){ |
| namcheol | 3:21a5cec57b18 | 22 | timer.start(); |
| namcheol | 3:21a5cec57b18 | 23 | Green = 0; |
| namcheol | 3:21a5cec57b18 | 24 | start = 1; |
| namcheol | 3:21a5cec57b18 | 25 | } |
| namcheol | 3:21a5cec57b18 | 26 | else{ |
| namcheol | 3:21a5cec57b18 | 27 | timer.stop(); |
| namcheol | 3:21a5cec57b18 | 28 | Green = 1; |
| namcheol | 3:21a5cec57b18 | 29 | start = 0; |
| namcheol | 3:21a5cec57b18 | 30 | } |
| namcheol | 3:21a5cec57b18 | 31 | } |
| dshin | 0:f31836d48420 | 32 | |
| namcheol | 3:21a5cec57b18 | 33 | void ISR_sw3() |
| namcheol | 3:21a5cec57b18 | 34 | { |
| namcheol | 3:21a5cec57b18 | 35 | timer.reset(); |
| namcheol | 3:21a5cec57b18 | 36 | offset = 0; |
| namcheol | 3:21a5cec57b18 | 37 | start = 1; |
| namcheol | 3:21a5cec57b18 | 38 | } |
| namcheol | 3:21a5cec57b18 | 39 | |
| namcheol | 3:21a5cec57b18 | 40 | void ISR_up() |
| namcheol | 3:21a5cec57b18 | 41 | { |
| namcheol | 3:21a5cec57b18 | 42 | if(up) |
| namcheol | 3:21a5cec57b18 | 43 | offset += 60*1000; |
| namcheol | 3:21a5cec57b18 | 44 | } |
| namcheol | 3:21a5cec57b18 | 45 | |
| namcheol | 3:21a5cec57b18 | 46 | void ISR_down() |
| namcheol | 3:21a5cec57b18 | 47 | { |
| namcheol | 3:21a5cec57b18 | 48 | offset -= 60*1000; |
| namcheol | 3:21a5cec57b18 | 49 | } |
| namcheol | 3:21a5cec57b18 | 50 | |
| namcheol | 3:21a5cec57b18 | 51 | void ISR_left() |
| namcheol | 3:21a5cec57b18 | 52 | { |
| namcheol | 3:21a5cec57b18 | 53 | offset -= 60*60*1000; |
| namcheol | 3:21a5cec57b18 | 54 | } |
| namcheol | 3:21a5cec57b18 | 55 | |
| namcheol | 3:21a5cec57b18 | 56 | void ISR_rite() |
| namcheol | 3:21a5cec57b18 | 57 | { |
| namcheol | 3:21a5cec57b18 | 58 | offset += 60*60*1000; |
| namcheol | 3:21a5cec57b18 | 59 | } |
| namcheol | 3:21a5cec57b18 | 60 | |
| namcheol | 3:21a5cec57b18 | 61 | void ISR_center() |
| namcheol | 3:21a5cec57b18 | 62 | { |
| namcheol | 3:21a5cec57b18 | 63 | offset -= (timer.read_ms()+ offset ) % (60 * 1000); |
| namcheol | 3:21a5cec57b18 | 64 | } |
| dshin | 0:f31836d48420 | 65 | |
| dshin | 0:f31836d48420 | 66 | int main() |
| dshin | 0:f31836d48420 | 67 | { |
| namcheol | 3:21a5cec57b18 | 68 | long time; |
| namcheol | 3:21a5cec57b18 | 69 | int hour=0, minute=0, second=0, mili=0; |
| namcheol | 3:21a5cec57b18 | 70 | Green = Red = 1; |
| namcheol | 3:21a5cec57b18 | 71 | |
| namcheol | 3:21a5cec57b18 | 72 | sw2.fall(&ISR_sw2); |
| namcheol | 3:21a5cec57b18 | 73 | sw3.fall(&ISR_sw3); |
| namcheol | 3:21a5cec57b18 | 74 | up.rise(&ISR_up); |
| namcheol | 3:21a5cec57b18 | 75 | down.rise(&ISR_down); |
| namcheol | 3:21a5cec57b18 | 76 | rite.rise(&ISR_rite); |
| namcheol | 3:21a5cec57b18 | 77 | left.rise(&ISR_left); |
| namcheol | 3:21a5cec57b18 | 78 | center.rise(&ISR_center); |
| namcheol | 3:21a5cec57b18 | 79 | |
| namcheol | 3:21a5cec57b18 | 80 | lcd.cls(); |
| namcheol | 3:21a5cec57b18 | 81 | lcd.locate(0,6); |
| namcheol | 3:21a5cec57b18 | 82 | lcd.printf("Digital Clock!"); |
| namcheol | 3:21a5cec57b18 | 83 | while(true){ |
| namcheol | 3:21a5cec57b18 | 84 | time = timer.read_ms(); |
| namcheol | 3:21a5cec57b18 | 85 | if(time + offset < 0) |
| namcheol | 3:21a5cec57b18 | 86 | offset = -time; |
| namcheol | 3:21a5cec57b18 | 87 | time = time + offset; |
| namcheol | 3:21a5cec57b18 | 88 | |
| namcheol | 3:21a5cec57b18 | 89 | mili = time % 100; |
| namcheol | 3:21a5cec57b18 | 90 | second = (time / 1000) % 60; |
| namcheol | 3:21a5cec57b18 | 91 | minute = ((time / 1000) / 60) % 60; |
| namcheol | 3:21a5cec57b18 | 92 | hour = ((time / 1000) / 3600) % 24; |
| namcheol | 3:21a5cec57b18 | 93 | lcd.locate(0,16); |
| namcheol | 3:21a5cec57b18 | 94 | lcd.printf("Current Time: %02d:%02d:%02d:%02d", hour, minute, second, mili); |
| namcheol | 3:21a5cec57b18 | 95 | thread_sleep_for(100); |
| dshin | 0:f31836d48420 | 96 | } |
| dshin | 0:f31836d48420 | 97 | } |