⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.c

📁 c51串口编程的例子
💻 C
字号:
#include<ctype.h>
#include<string.h>
#include<stdio.h>

#include "tdp.h"

#ifdef evalboard
extern void DINPUT(unsigned char aa, unsigned char bb);
extern void DISPLY(unsigned char data *cc);
static unsigned char data dg[] = {0,0,10,0,0,10,0,0};
#endif

/*Global var. */
static xdata unsigned long dayhsecs;
static xdata unsigned last_tick;
static xdata unsigned char scan_flag;
static xdata unsigned char alm_flag;
static xdata unsigned almmins;

#define MAX_HSEC_DAY   (100 * 60 * 60 * 24 )

/*Clock Init*/
void clock_init(void) {
	scan_flag = 0;
	alm_flag = 0;
	dayhsecs = 0L;
	last_tick = timer0_count();
}

/* Clock Update*/
void clock_update(void) {
	static xdata unsigned long last_daysecs;
	dayhsecs += timer0_elapsed_count(last_tick);
	last_tick = timer0_count();
	while (dayhsecs >= MAX_HSEC_DAY)
	    dayhsecs -=  MAX_HSEC_DAY;
	if((dayhsecs/100) == last_daysecs)
		return;
	last_daysecs = dayhsecs /100;
	if(alm_flag != 0)
		if((dayhsecs / (100*60)) == almmins)
			com_putchar('\x7');
	if(scan_flag != 0) {
		clock_out_time();
		cmdb_prompt();
	}
}

void clock_set(unsigned long sethsec){
	dayhsecs = sethsec;
	last_tick = timer0_count();
	clock_update();
}

void clock_scan(unsigned char flag) {
	scan_flag = flag;
}

void clock_out_time(void) {
	xdata char buf[21];
	unsigned hsecs,secs,mins,hours;
	unsigned long t;

	t = dayhsecs;
	hsecs = t % 100;
	t /= 100;
	secs = t % 60;
	t /= 60;
	mins = t % 60;
	t /= 60;
	hours = t % 24;
	
	buf[0] = (hours /10 ) + '0';
	buf[1] = (hours % 10) + '0';
	buf[2] = ':';
	buf[3] = (mins /10 ) + '0';
	buf[4] = (mins % 10) + '0';
	buf[5] = ':';	
	buf[6] = (secs /10 ) + '0';
	buf[7] = (secs % 10) + '0';
	buf[8] = ':';
	buf[9] = (hsecs /10 ) + '0';
	buf[10] = (hsecs % 10) + '0';
	buf[11] = '\0';

#ifdef evalboard
	dg[7] = buf[7];
	dg[6] = buf[6];
	dg[4] = buf[4];
	dg[3] = buf[3];
	dg[1] = buf[1];
	dg[0] = buf[0];
	DISPLY(dg);
#endif
	
	com_puts("\r\n");
	com_puts(buf);
	com_puts("\r\n");
}

/*set the screen to disply by "HHMMSS" */
char strtotm(unsigned long *t,char *s) {
	char *s2;
	unsigned char tmp;

	if(strlen(s) != 6)
		return (-1);

	for(s2=s;*s2 != '\0'; s2++){
		if(!isdigit(*s2))
			return(-1);
	}

	tmp = ((s[0] - '0') * 10) + (s[1] - '0');
	if(tmp>= 24)
		return(-1);

	*t =tmp;
	tmp = ((s[0] - '0') * 10 ) + (s[1] - '0');
	if(tmp>= 24)
		return(-1);

	*t =tmp;
	tmp = ((s[2] - '0') * 10 ) + (s[3] - '0');
	if(tmp>= 60)
		return(-1);

	*t =tmp;
	tmp = ((s[4] - '0') * 10 ) + (s[5] - '0');
	if(tmp>= 60)
		return(-1);

	*t = (60 * *t) + tmp;
	return(0);

}

void alarm_set (unsigned setmins) {
	almmins = setmins;
	alm_flag = 1;
}

void alarm_clr(void){
	alm_flag = 0;
}

void alarm_out_time(void) {
	xdata char buf[21];
	unsigned mins;
	unsigned hours;
	unsigned t;

	if(alm_flag ==0) {
		com_puts("\r\nNone\r\n");
		return;
	}
	
	t = almmins;
	mins = t % 60;
	t /= 60;
	hours =t % 24;

	buf[0] = (hours /10 ) + '0';
	buf[1] = (hours % 10) + '0';
	buf[2] = ':';
	buf[3] = (mins /10 ) + '0';
	buf[4] = (mins % 10) + '0';
	buf[5] = ':';	

	com_puts("\r\n");
	com_puts(buf);
	com_puts("\r\n");

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -