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

📄 my_clock.c

📁 8051 UART clock Example allow you to send time clock through RS232 to your PC.
💻 C
字号:
#include "..\MPC82.H"

char flag4=0;
char *msg;					
unsigned char X; 
unsigned char hour=23, min=55, sec=50;
unsigned char ahour=0, amin=0, asec=0;

void init_uart(void);
void print(unsigned char abc);
void uart_msg(char *msg);
void print_clock(void);
  
main()
{	
  EA=1;      //enable interrupt
  EX3=1;     //INT3 as interrupt

  init_uart();
	//print out menu
	msg="\r\n**********************\n\0";
	uart_msg(msg);
	msg="\r\n Press 1 => Clock !\n\0";
	uart_msg(msg);
	msg="\r\n Press 2 => Alarm Setup\n\0";
	uart_msg(msg);
	msg="\r\n**********************\n\r\0";
	uart_msg(msg);
	//wait for user input
	while(1)
	 {
		while (RI==0){}
		RI=0; 
		X=SBUF;
		if (X==0x31)
		{
			while(1)
			{
				print(hour/10+0x30);
				print(hour%10+0x30);
				print(':');
				print(min/10+0x30);
				print(min%10+0x30);
				print(':');
				print(sec/10+0x30);
				print(sec%10+0x30);
				print('\n');
				print('\r');
				Delay_ms(1000);
   	
				sec++;		
				if (sec<60) continue;
					else {sec=0; min++;}
				if (min<60) continue;
					else {min=0; hour++;}
				if (hour<24) continue;
					else {sec=0; min=0; hour=0;}
			}
		}
		else if (X==0x32)
		{  	
			msg="\n\rYou are enter Alarm Setup\n\r";	  														
			uart_msg(msg);
			msg="\n\rPress 1 => hour, Press 2 => min, Press3 => sec\n\r";	  														
			uart_msg(msg);
		  while(1)
		  {
			  while(RI==0){}
			  RI=0;
			  X=SBUF;
			  while (X==0x31)
			  {	flag4=0;
				ahour++;
				do
				{
					while(KEY1==1);
				}
				while(KEY1==1);
				do
				{
				 	while(KEY1==0);
				}
				while(KEY1==0);
				print_clock();
				if (flag4==1) break;
			  }
			  while(X==0x32)
			  {	flag4=0;
				amin++;
				do
				{
					while(KEY2==1);
				}
				while(KEY2==1);
				do
				{
				 	while(KEY2==0);
				}
				while(KEY2==0);
				print_clock();
				if (flag4==1) break;
			  }
			  while(X==0x33)
			  {	flag4=0;
				asec++;
				do
				{
					while(KEY3==1);
				}
				while(KEY3==1);
				do
				{
				 	while(KEY3==0);
				}
				while(KEY3==0);
				print_clock();
				if (flag4==1) break;
			  }   	
		  }	//end of while(1)
		}  //end of 0x32
		else
		{
			msg="\n\rend\n\r";	  
			uart_msg(msg);
			break;
		}	
	}//	end of while
}  	
void init_uart(void)
{
 SCON=0x50;
 PCON=0x00;	//SMOD=0;
 AUXR2=0x00;//T1X12=0;
 TMOD=0x20;//setup timer1
 TH1=250;//SMOD=0;T1X12=0;Baudrate=9600
 TCON=0x40;//TR1=1, make timer 1 start
}
void print(unsigned char abc)
{
 SBUF=abc;
 while(TI==0);
 TI=0;
}
void uart_msg(char *msg)
{
	char *p;
	SBUF=0x00;
	for(p=msg; *p!='\0'; )
	{
		SBUF=*p++;
		while(TI==0);
		TI=0;
	}
}	
void EX3_int(void) interrupt 0 using 1 
 {
//use key4 to interrupt
	 flag4=1;
 }
void print_clock()
{
			print(ahour/10+0x30);
			print(ahour%10+0x30);
			print(':');
			print(amin/10+0x30);
			print(amin%10+0x30);
			print(':');
			print(asec/10+0x30);
			print(asec%10+0x30);
			print('\n');
			print('\r');
			Delay_ms(1000);
}

⌨️ 快捷键说明

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