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.
Dependencies: TextLCD mbed-rtos mbed
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "TextLCD.h" 00004 00005 #define RUN 0x1 00006 #define STOP 0x0 00007 00008 TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD16x2); 00009 Serial pc (USBTX, USBRX); 00010 DigitalOut myled(LED1); 00011 00012 00013 00014 // global vars 00015 int mm [] = {0, 0}; 00016 int ss [] = {0, 0}; 00017 int MM [] = {0, 0}; 00018 int mm_stop [] = {0, 0}; 00019 int ss_stop [] = {0, 0}; 00020 int MM_stop [] = {0, 0}; 00021 00022 int run_status = STOP; 00023 00024 // functions 00025 void update_display(void const *args); 00026 void update_mm(void const *args); 00027 void update_ss(void const *args); 00028 void update_MM(void const *args); 00029 00030 int main() { 00031 00032 Thread thread_display(update_display); 00033 Thread thread_mm(update_mm); 00034 Thread thread_ss(update_ss); 00035 Thread thread_MM(update_MM); 00036 char input = 'z'; 00037 00038 while(1) { 00039 if ( input == 's') { 00040 if (run_status==STOP) { 00041 run_status = RUN; 00042 thread_mm.signal_set(RUN); 00043 thread_ss.signal_set(RUN); 00044 thread_MM.signal_set(RUN); 00045 thread_display.signal_set(RUN); 00046 00047 } 00048 } 00049 if ( input == 'p') { 00050 if (run_status==RUN) { 00051 run_status = STOP; 00052 } 00053 } 00054 if ( input == 'r') { 00055 if (run_status == STOP) { 00056 mm[0] = mm[1] = 0; 00057 ss[0] = ss[1] = 0; 00058 MM[0] = MM[1] = 0; 00059 mm_stop[0] = mm_stop[1] = 0; 00060 ss_stop[0] = ss_stop[1] = 0; 00061 MM_stop[0] = MM_stop[1] = 0; 00062 thread_display.signal_set(RUN); 00063 } 00064 } 00065 00066 input = pc.getc(); 00067 } 00068 00069 } 00070 00071 void update_display(void const *args) { 00072 while (1) { 00073 lcd.printf("%d%d:%d%d:%d%d\n\n", MM[1], MM[0],ss[1],ss[0],mm[1],mm[0]); 00074 Thread::signal_wait(RUN); 00075 while (run_status) { 00076 lcd.printf("%d%d:%d%d:%d%d\n\n", MM[1], MM[0],ss[1],ss[0],mm[1],mm[0]); 00077 Thread::wait(10); 00078 } 00079 } 00080 } 00081 00082 void update_mm(void const *args) { 00083 while(1){ 00084 Thread::signal_wait(RUN); 00085 Thread::wait(10-mm_stop[0]); 00086 mm[0]++; 00087 if (mm[0] >= 10) { 00088 mm[0] = 0; 00089 mm[1]++; 00090 } 00091 if (mm[1] >= 10) { 00092 mm[0] = 0; 00093 mm[1] = 0; 00094 } 00095 while (run_status) { 00096 Thread::wait(10); 00097 mm[0]++; 00098 if (mm[0] >= 10) { 00099 mm[0] = 0; 00100 mm[1]++; 00101 } 00102 if (mm[1] >= 10) { 00103 mm[0] = 0; 00104 mm[1] = 0; 00105 } 00106 } 00107 mm_stop[1] = mm[1]; 00108 mm_stop[0] = mm[0]; 00109 } 00110 } 00111 00112 void update_ss(void const *args) { 00113 while(1) { 00114 Thread::signal_wait(RUN); 00115 Thread::wait(1000-100*mm_stop[1]-10*mm_stop[0]); 00116 ss[0]++; 00117 if (ss[0] >= 10) { 00118 ss[0] = 0; 00119 ss[1]++; 00120 } 00121 if (ss[1] >= 6) { 00122 ss[0] = 0; 00123 ss[1] = 0; 00124 } 00125 while (run_status) { 00126 Thread::wait(1000); 00127 ss[0]++; 00128 if (ss[0] >= 10) { 00129 ss[0] = 0; 00130 ss[1]++; 00131 } 00132 if (ss[1] >= 6) { 00133 ss[0] = 0; 00134 ss[1] = 0; 00135 } 00136 } 00137 ss_stop[1] = ss[1]; 00138 ss_stop[0] = ss[0]; 00139 } 00140 } 00141 00142 void update_MM(void const *args) { 00143 while(1) { 00144 Thread::signal_wait(RUN); 00145 Thread::wait(60000-10000*ss_stop[1]-1000*ss_stop[0]-100*mm_stop[1]-10*mm_stop[0]); 00146 MM[0]++; 00147 if (MM[0] >= 10) { 00148 MM[0] = 0; 00149 MM[1]++; 00150 } 00151 if (MM[1] >= 6) { 00152 MM[0] = 0; 00153 MM[1] = 0; 00154 } 00155 while (run_status) { 00156 Thread::wait(60000); 00157 MM[0]++; 00158 if (MM[0] >= 10) { 00159 MM[0] = 0; 00160 MM[1]++; 00161 } 00162 if (MM[1] >= 6) { 00163 MM[0] = 0; 00164 MM[1] = 0; 00165 } 00166 } 00167 MM_stop[1] = MM[1]; 00168 MM_stop[0] = MM[0]; 00169 } 00170 }
Generated on Tue Aug 9 2022 07:19:15 by
1.7.2