clock

Dependencies:   mbed

Committer:
donghuoyinzi
Date:
Tue May 08 02:13:50 2018 +0000
Revision:
0:17e9016529cf
Child:
1:013b9fdc4e78
CLOCK_needle_180508

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donghuoyinzi 0:17e9016529cf 1 #include "myclodriv.h"
donghuoyinzi 0:17e9016529cf 2
donghuoyinzi 0:17e9016529cf 3
donghuoyinzi 0:17e9016529cf 4 int cloDAct::snstpSe=0; int cloDAct::mnstpSe=0; int cloDAct::mcstpSe=0; int cloDAct::spstpSe=0;
donghuoyinzi 0:17e9016529cf 5 int cloDAct::sec; int cloDAct::min; int cloDAct::hour;
donghuoyinzi 0:17e9016529cf 6 /*****************************
donghuoyinzi 0:17e9016529cf 7 Fun.: clodriv initialization。
donghuoyinzi 0:17e9016529cf 8 Desc.:
donghuoyinzi 0:17e9016529cf 9 Auth. Vesion:2018.1.5
donghuoyinzi 0:17e9016529cf 10 *****************************/
donghuoyinzi 0:17e9016529cf 11 void cloDAct::init(void)
donghuoyinzi 0:17e9016529cf 12 {
donghuoyinzi 0:17e9016529cf 13
donghuoyinzi 0:17e9016529cf 14 }
donghuoyinzi 0:17e9016529cf 15
donghuoyinzi 0:17e9016529cf 16 /*****************************
donghuoyinzi 0:17e9016529cf 17 Fun.: initialization of cloDAct start。
donghuoyinzi 0:17e9016529cf 18 Desc.:
donghuoyinzi 0:17e9016529cf 19 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 20 *****************************/
donghuoyinzi 0:17e9016529cf 21 void cloDAct::start(void)
donghuoyinzi 0:17e9016529cf 22 {
donghuoyinzi 0:17e9016529cf 23
donghuoyinzi 0:17e9016529cf 24 }
donghuoyinzi 0:17e9016529cf 25
donghuoyinzi 0:17e9016529cf 26 /*****************************
donghuoyinzi 0:17e9016529cf 27 Fun.: initialization of cloDAct data。
donghuoyinzi 0:17e9016529cf 28 Desc.:
donghuoyinzi 0:17e9016529cf 29 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 30 *****************************/
donghuoyinzi 0:17e9016529cf 31 void cloDAct::data(void)
donghuoyinzi 0:17e9016529cf 32 {
donghuoyinzi 0:17e9016529cf 33 snstpSe=1;
donghuoyinzi 0:17e9016529cf 34 mnstpSe=1;
donghuoyinzi 0:17e9016529cf 35 mcstpSe=1;
donghuoyinzi 0:17e9016529cf 36 spstpSe=1;
donghuoyinzi 0:17e9016529cf 37 mcstpSe=1;
donghuoyinzi 0:17e9016529cf 38
donghuoyinzi 0:17e9016529cf 39 know::polSta[26]="1";
donghuoyinzi 0:17e9016529cf 40 know::polSta[28]="1";
donghuoyinzi 0:17e9016529cf 41
donghuoyinzi 0:17e9016529cf 42 know::polSta[33]="1";
donghuoyinzi 0:17e9016529cf 43 know::polSta[32]="1";
donghuoyinzi 0:17e9016529cf 44 know::polSta[34]="1";
donghuoyinzi 0:17e9016529cf 45
donghuoyinzi 0:17e9016529cf 46 sec=1;
donghuoyinzi 0:17e9016529cf 47 min=1;
donghuoyinzi 0:17e9016529cf 48 hour=1;
donghuoyinzi 0:17e9016529cf 49
donghuoyinzi 0:17e9016529cf 50 know::MotS0=0;
donghuoyinzi 0:17e9016529cf 51 know::MotS1=0;
donghuoyinzi 0:17e9016529cf 52 know::MotM0=0;
donghuoyinzi 0:17e9016529cf 53 know::MotM1=0; //电平归零
donghuoyinzi 0:17e9016529cf 54 }
donghuoyinzi 0:17e9016529cf 55
donghuoyinzi 0:17e9016529cf 56 /*****************************
donghuoyinzi 0:17e9016529cf 57 Fun.: clodriv ready。
donghuoyinzi 0:17e9016529cf 58 Desc.:
donghuoyinzi 0:17e9016529cf 59 Auth. Vesion:2018.1.5
donghuoyinzi 0:17e9016529cf 60 *****************************/
donghuoyinzi 0:17e9016529cf 61 void cloDAct::ready(void)
donghuoyinzi 0:17e9016529cf 62 {
donghuoyinzi 0:17e9016529cf 63
donghuoyinzi 0:17e9016529cf 64 }
donghuoyinzi 0:17e9016529cf 65
donghuoyinzi 0:17e9016529cf 66 /*****************************
donghuoyinzi 0:17e9016529cf 67 Fun.:
donghuoyinzi 0:17e9016529cf 68 Desc.:
donghuoyinzi 0:17e9016529cf 69 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 70 *****************************/
donghuoyinzi 0:17e9016529cf 71 void cloDAct::put_revok(void)
donghuoyinzi 0:17e9016529cf 72 {
donghuoyinzi 0:17e9016529cf 73
donghuoyinzi 0:17e9016529cf 74 }
donghuoyinzi 0:17e9016529cf 75
donghuoyinzi 0:17e9016529cf 76 /*****************************
donghuoyinzi 0:17e9016529cf 77 Fun.: 秒针正常走时。
donghuoyinzi 0:17e9016529cf 78 Desc.:
donghuoyinzi 0:17e9016529cf 79 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 80 *****************************/
donghuoyinzi 0:17e9016529cf 81 void cloDAct::put_snorm(void)
donghuoyinzi 0:17e9016529cf 82 {
donghuoyinzi 0:17e9016529cf 83 snstpSe++;
donghuoyinzi 0:17e9016529cf 84
donghuoyinzi 0:17e9016529cf 85 switch(snstpSe){
donghuoyinzi 0:17e9016529cf 86 case 17: //高电平脉冲宽度46.875ms/15.625ms=3
donghuoyinzi 0:17e9016529cf 87 case 18:
donghuoyinzi 0:17e9016529cf 88 case 19:
donghuoyinzi 0:17e9016529cf 89 know::MotS1 = 1; //秒针马达端1输出高电平
donghuoyinzi 0:17e9016529cf 90 know::MotS0 = 0; //秒针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 91 break;
donghuoyinzi 0:17e9016529cf 92 case 20:
donghuoyinzi 0:17e9016529cf 93 know::MotS0 = 0; //秒针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 94 know::MotS1 = 0; //秒针马达端1输出低电平
donghuoyinzi 0:17e9016529cf 95 break;
donghuoyinzi 0:17e9016529cf 96 case 21:
donghuoyinzi 0:17e9016529cf 97 case 22:
donghuoyinzi 0:17e9016529cf 98 case 23: //秒针马达端0输出脉冲
donghuoyinzi 0:17e9016529cf 99 know::MotS0 = 1; //秒针马达端0输出高电平
donghuoyinzi 0:17e9016529cf 100 know::MotS1 = 0; //秒针马达端1输出低电平
donghuoyinzi 0:17e9016529cf 101 break;
donghuoyinzi 0:17e9016529cf 102 case 24:
donghuoyinzi 0:17e9016529cf 103 know::MotS0 = 0; //秒针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 104 know::MotS1 = 0; //秒针马达端1输出低电平
donghuoyinzi 0:17e9016529cf 105 snstpSe=16;
donghuoyinzi 0:17e9016529cf 106 break;
donghuoyinzi 0:17e9016529cf 107 default:
donghuoyinzi 0:17e9016529cf 108 break;
donghuoyinzi 0:17e9016529cf 109 }
donghuoyinzi 0:17e9016529cf 110 }
donghuoyinzi 0:17e9016529cf 111
donghuoyinzi 0:17e9016529cf 112 /*****************************
donghuoyinzi 0:17e9016529cf 113 Fun.: 分针正常走时。
donghuoyinzi 0:17e9016529cf 114 Desc.:
donghuoyinzi 0:17e9016529cf 115 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 116 *****************************/
donghuoyinzi 0:17e9016529cf 117 void cloDAct::put_mnorm(void)
donghuoyinzi 0:17e9016529cf 118 {
donghuoyinzi 0:17e9016529cf 119 mnstpSe++;
donghuoyinzi 0:17e9016529cf 120 if(mnstpSe<=2){ //高电平脉冲宽度31.250ms/15.625ms=2
donghuoyinzi 0:17e9016529cf 121 switch(atoi(know::polSta[26].c_str())){ //周期交替标志
donghuoyinzi 0:17e9016529cf 122 case 1:
donghuoyinzi 0:17e9016529cf 123 know::MotM1 = 1; //分针马达端1输出高电平
donghuoyinzi 0:17e9016529cf 124 know::MotM0 = 0; //分针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 125 break;
donghuoyinzi 0:17e9016529cf 126 case 0: //分针马达端0输出脉冲
donghuoyinzi 0:17e9016529cf 127 know::MotM0 = 1; //分针马达端0输出高电平
donghuoyinzi 0:17e9016529cf 128 know::MotM1 = 0; //分针马达端1输出低电平
donghuoyinzi 0:17e9016529cf 129 break;
donghuoyinzi 0:17e9016529cf 130 default:
donghuoyinzi 0:17e9016529cf 131 break;
donghuoyinzi 0:17e9016529cf 132 }
donghuoyinzi 0:17e9016529cf 133 }
donghuoyinzi 0:17e9016529cf 134 else if(mnstpSe<=639&&mnstpSe>=3){
donghuoyinzi 0:17e9016529cf 135 know::MotM0 = 0; //分针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 136 know::MotM1 = 0; //分针马达端1输出低电平
donghuoyinzi 0:17e9016529cf 137 switch(atoi(know::polSta[26].c_str())){
donghuoyinzi 0:17e9016529cf 138 case 0:
donghuoyinzi 0:17e9016529cf 139 know::polSta[26]="1"; //马达端1输出脉冲标识置1
donghuoyinzi 0:17e9016529cf 140 break;
donghuoyinzi 0:17e9016529cf 141 case 1:
donghuoyinzi 0:17e9016529cf 142 know::polSta[26]="0";
donghuoyinzi 0:17e9016529cf 143 break;
donghuoyinzi 0:17e9016529cf 144 default:
donghuoyinzi 0:17e9016529cf 145 break;
donghuoyinzi 0:17e9016529cf 146 }
donghuoyinzi 0:17e9016529cf 147 }
donghuoyinzi 0:17e9016529cf 148 else mnstpSe=0;
donghuoyinzi 0:17e9016529cf 149 }
donghuoyinzi 0:17e9016529cf 150
donghuoyinzi 0:17e9016529cf 151 /*****************************
donghuoyinzi 0:17e9016529cf 152 Fun.: 分针追针。
donghuoyinzi 0:17e9016529cf 153 Desc.:
donghuoyinzi 0:17e9016529cf 154 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 155 *****************************/
donghuoyinzi 0:17e9016529cf 156 void cloDAct::put_mchas(void)
donghuoyinzi 0:17e9016529cf 157 {
donghuoyinzi 0:17e9016529cf 158 mcstpSe++;
donghuoyinzi 0:17e9016529cf 159
donghuoyinzi 0:17e9016529cf 160 switch(mcstpSe){
donghuoyinzi 0:17e9016529cf 161 case 1: //高电平脉冲宽度31.250ms/15.625ms=2
donghuoyinzi 0:17e9016529cf 162 case 2:
donghuoyinzi 0:17e9016529cf 163 know::MotM1 = 1; //分针马达端1输出高电平
donghuoyinzi 0:17e9016529cf 164 know::MotM0 = 0; //分针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 165 break;
donghuoyinzi 0:17e9016529cf 166 case 3:
donghuoyinzi 0:17e9016529cf 167 case 4:
donghuoyinzi 0:17e9016529cf 168 know::MotM0 = 0; //分针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 169 know::MotM1 = 0; //分针马达端1输出低电平
donghuoyinzi 0:17e9016529cf 170 break;
donghuoyinzi 0:17e9016529cf 171 case 5: //高电平脉冲宽度31.250ms/15.625ms=2
donghuoyinzi 0:17e9016529cf 172 case 6:
donghuoyinzi 0:17e9016529cf 173 know::MotM1 = 0; //分针马达端1输出高电平
donghuoyinzi 0:17e9016529cf 174 know::MotM0 = 1; //分针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 175 break;
donghuoyinzi 0:17e9016529cf 176 case 7:
donghuoyinzi 0:17e9016529cf 177 case 8:
donghuoyinzi 0:17e9016529cf 178 know::MotM0 = 0; //分针马达端0输出低电平
donghuoyinzi 0:17e9016529cf 179 know::MotM1 = 0; //分针马达端1输出低电平
donghuoyinzi 0:17e9016529cf 180 mcstpSe=0;
donghuoyinzi 0:17e9016529cf 181 cmp_cmin();
donghuoyinzi 0:17e9016529cf 182 if(know::polSta[33]=="1") {
donghuoyinzi 0:17e9016529cf 183 know::polSta[27]="1";
donghuoyinzi 0:17e9016529cf 184 //know::time1.attach_us(&isr_systick1,15625);
donghuoyinzi 0:17e9016529cf 185 }
donghuoyinzi 0:17e9016529cf 186 break;
donghuoyinzi 0:17e9016529cf 187 default:
donghuoyinzi 0:17e9016529cf 188 break;
donghuoyinzi 0:17e9016529cf 189 }
donghuoyinzi 0:17e9016529cf 190 }
donghuoyinzi 0:17e9016529cf 191
donghuoyinzi 0:17e9016529cf 192 void cloDAct::cmp_cmin(void)
donghuoyinzi 0:17e9016529cf 193 {
donghuoyinzi 0:17e9016529cf 194 tm *tim;
donghuoyinzi 0:17e9016529cf 195 sec++;
donghuoyinzi 0:17e9016529cf 196
donghuoyinzi 0:17e9016529cf 197 if(sec>=3){ //定时器3 15.625ms*24=375ms=1min 实际追1分钟(分针1格)只需要375ms
donghuoyinzi 0:17e9016529cf 198 sec=0;
donghuoyinzi 0:17e9016529cf 199 min++;
donghuoyinzi 0:17e9016529cf 200 if(min>=60){
donghuoyinzi 0:17e9016529cf 201 min=0;
donghuoyinzi 0:17e9016529cf 202 hour++;
donghuoyinzi 0:17e9016529cf 203 if(hour>=12) hour=0;
donghuoyinzi 0:17e9016529cf 204 }
donghuoyinzi 0:17e9016529cf 205 }
donghuoyinzi 0:17e9016529cf 206
donghuoyinzi 0:17e9016529cf 207 time_t seconds=time(NULL);
donghuoyinzi 0:17e9016529cf 208 tim=localtime(&seconds);
donghuoyinzi 0:17e9016529cf 209
donghuoyinzi 0:17e9016529cf 210 if(tim->tm_min== min&&tim->tm_hour== hour){
donghuoyinzi 0:17e9016529cf 211 min=54; //分针检测信号有效为11时59分 开始追针或等追
donghuoyinzi 0:17e9016529cf 212 hour=11;
donghuoyinzi 0:17e9016529cf 213 know::polSta[33]="1";
donghuoyinzi 0:17e9016529cf 214 }
donghuoyinzi 0:17e9016529cf 215 }
donghuoyinzi 0:17e9016529cf 216
donghuoyinzi 0:17e9016529cf 217 /*****************************
donghuoyinzi 0:17e9016529cf 218 Fun.: miao停止,脉冲信号保持为低电平,最少停止250ms。
donghuoyinzi 0:17e9016529cf 219 Desc.:
donghuoyinzi 0:17e9016529cf 220 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 221 *****************************/
donghuoyinzi 0:17e9016529cf 222 void cloDAct::put_sstop(void)
donghuoyinzi 0:17e9016529cf 223 {
donghuoyinzi 0:17e9016529cf 224 spstpSe++; //延时250ms
donghuoyinzi 0:17e9016529cf 225
donghuoyinzi 0:17e9016529cf 226 switch(spstpSe){
donghuoyinzi 0:17e9016529cf 227 case 1:
donghuoyinzi 0:17e9016529cf 228 know::MotS0 = 0; //Mot1秒针驱动引脚输出低电平
donghuoyinzi 0:17e9016529cf 229 know::MotS1 = 0;
donghuoyinzi 0:17e9016529cf 230 break;
donghuoyinzi 0:17e9016529cf 231 case 17:
donghuoyinzi 0:17e9016529cf 232 cmp_sec();
donghuoyinzi 0:17e9016529cf 233 if(atoi(know::polSta[32].c_str())==1){
donghuoyinzi 0:17e9016529cf 234 spstpSe=0;
donghuoyinzi 0:17e9016529cf 235 know::polSta[28]="1"; //cmpsec_state="k";
donghuoyinzi 0:17e9016529cf 236 }
donghuoyinzi 0:17e9016529cf 237 else spstpSe=16;
donghuoyinzi 0:17e9016529cf 238 break;
donghuoyinzi 0:17e9016529cf 239 default:
donghuoyinzi 0:17e9016529cf 240 break;
donghuoyinzi 0:17e9016529cf 241 }
donghuoyinzi 0:17e9016529cf 242 }
donghuoyinzi 0:17e9016529cf 243
donghuoyinzi 0:17e9016529cf 244 void cloDAct::cmp_sec(void)
donghuoyinzi 0:17e9016529cf 245 {
donghuoyinzi 0:17e9016529cf 246 tm *tim;
donghuoyinzi 0:17e9016529cf 247 time_t seconds=time(NULL);
donghuoyinzi 0:17e9016529cf 248 tim=localtime(&seconds);
donghuoyinzi 0:17e9016529cf 249 if(tim->tm_sec==56) know::polSta[32]="1"; //秒针检测信号有效为56秒 等追
donghuoyinzi 0:17e9016529cf 250 }
donghuoyinzi 0:17e9016529cf 251
donghuoyinzi 0:17e9016529cf 252 /*****************************
donghuoyinzi 0:17e9016529cf 253 Fun.: min停止。
donghuoyinzi 0:17e9016529cf 254 Desc.:
donghuoyinzi 0:17e9016529cf 255 Auth. Vesion:2017.7.2
donghuoyinzi 0:17e9016529cf 256 *****************************/
donghuoyinzi 0:17e9016529cf 257 void cloDAct::put_mstop(void)
donghuoyinzi 0:17e9016529cf 258 {
donghuoyinzi 0:17e9016529cf 259 know::MotM0 = 0; //Mot1分针驱动引脚输出低电平
donghuoyinzi 0:17e9016529cf 260 know::MotM1 = 0;
donghuoyinzi 0:17e9016529cf 261 cmp_smin();
donghuoyinzi 0:17e9016529cf 262 if(atoi(know::polSta[34].c_str())==1){
donghuoyinzi 0:17e9016529cf 263 know::polSta[29]="1"; //正常走时停止则为59分
donghuoyinzi 0:17e9016529cf 264 //know::time1.attach_us(&cloSAct::isr_systick1,15625);
donghuoyinzi 0:17e9016529cf 265 }
donghuoyinzi 0:17e9016529cf 266 }
donghuoyinzi 0:17e9016529cf 267
donghuoyinzi 0:17e9016529cf 268 void cloDAct::cmp_smin(void)
donghuoyinzi 0:17e9016529cf 269 {
donghuoyinzi 0:17e9016529cf 270 tm *tim;
donghuoyinzi 0:17e9016529cf 271 time_t seconds=time(NULL);
donghuoyinzi 0:17e9016529cf 272 tim=localtime(&seconds);
donghuoyinzi 0:17e9016529cf 273 if(tim->tm_min==59) know::polSta[34]="1"; //待测 若追针后停止分针则为58分 pol_min=58
donghuoyinzi 0:17e9016529cf 274 }
donghuoyinzi 0:17e9016529cf 275