c51单片机基于lcd1602的定时器无法运行,图有错?

#include <reg51.h>
#define uchar unsigned char
#define unit unsigned int
#include <24c02.h>
sbit dula=P2^6;
sbit wela=P2^7;
sbit LCDEN=P3^4;
sbit LCDRS=P3^5;
sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2;
sbit rd=P3^7;
sbit beep=P2^3;
uchar count,s1_num;
uchar week,day,month,year;
char miao,shi,fen;
uchar code table[]=" 2021-5-26 wed";
void delay1(unit z)
{
	unit x,y;
	for(x=z;x>0;x--)
	 for(y=110;y>0;y--);
}
void di()
{
	beep=0;
	delay1(100);
	beep=1;
}
void write_com(uchar com)
{
	LCDRS=0;
	P0=com;
	delay1(5);
	LCDEN=1;
	delay1(5);
	LCDEN=0;
}
void write_date(uchar date)
{
	LCDRS=1;
	P0=date;
	delay1(5);
	LCDEN=1;
	delay1(5);
	LCDEN=0;
}
void write_week(char we)
{
	write_com(0x80+12);
	switch(we)
	{
		case 1:write_date('M');delay1(5);
		       write_date('o');delay1(5);
		       write_date('n');delay1(5);
		       break;
	  case 2:write_date('T');delay1(5);
		       write_date('u');delay1(5);
           write_date('e');delay1(5);
		       break;
		case 3:write_date('W');delay1(5);
		       write_date('e');delay1(5);
		       write_date('d');delay1(5); 
		       break;
		case 4:write_date('T');delay1(5);
		       write_date('h');delay1(5);
		       write_date('u');delay1(5);
		       break;
		case 5:write_date('F');delay1(5);
		       write_date('r');delay1(5);
		       write_date('i');delay1(5);
		       break;
		case 6:write_date('S');delay1(5);
		       write_date('a');delay1(5);
					 write_date('t');delay1(5);
					 break;
		case 7:write_date('S');delay1(5);
		       write_date('u');delay1(5);
					 write_date('n');delay1(5);
					 break;
					 default:break;
	}
}
void write_sfm(uchar add,uchar date)
{
	uchar shiwei,gewei;
	shiwei=date/10;
	gewei=date%10;
	write_com(0x80+0x40+add);
	write_date(0x30+shiwei);
	write_date(0x30+gewei);
}
void write_year_month_day(uchar add,uchar day)
{
	uchar shi,ge;
	shi=day/10;
	ge=day%10;
	write_com(0x80+add);
	write_date(0x30+shi);
	write_date(0x30+ge);
}
void init()
{
	uchar num;
	rd=0;
	beep=1;
	dula=0;
	wela=0;
	LCDEN=0;
	fen=0;
	miao=0;
	shi=0;
	count=0;
	init1();
	write_com(0x38);
  write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
	write_com(0x80);
	for(num=0;num<15;num++)
	{
		write_date(table[num]);
		delay1(5);
	}
	write_com(0x80+0x40+6);
	write_date(0x3a);
	delay1(5);
	write_com(0x80+0x40+9);
	write_date(0x3a);
	delay1(5);
	miao=read_add(1);
	fen=read_add(2);
	shi=read_add(3);
	week=read_add(4);
	day=read_add(5);
	month=read_add(6);
	year=read_add(7);
	write_sfm(10,miao);
	write_sfm(7,fen);
	write_sfm(4,shi);
	write_week(week);
	write_year_month_day(9,day);
  write_year_month_day(6,month);
	write_year_month_day(3,year);
	TMOD=0x01;
	TH0=(65536-45876)/256;
	TL0=(65536-45876)%256;
	EA=1;
	ET0=1;
	TR0=1;
}
void  keyscan()
{
	if(s1==0)
	{
		delay1(5);
		if(s1==0)
		{
			s1_num++;
			while(!s1);
			di();
			if(s1_num==1)
			{
				TR0=0;
				write_com(0x80+0x40+11);
				write_com(0x0f);
			}
			if(s1_num==2)
			{
				write_com(0x80+0x40+8);
			}
			if(s1_num==3)
			{
				write_com(0x80+0x40+5);
			}
			if(s1_num==4)
			{
				write_com(0x80+14);
			}
			if(s1_num==5)
			{
				write_com(0x80+10);
			}
			if(s1_num==6)
			{
				write_com(0x80+7);
			}
			if(s1_num==7)
			{
				write_com(0x80+4);
			}
			if(s1_num==8)
			{
				s1_num=0;
				write_com(0x0c);
				TR0=1;
			}
		}
	}
      if(s1_num!=0)
			{
				if(s2==0)
				{
					delay1(5);
					if(s2==0)
					{
						while(!s2);
						di();
						if(s1_num==1)
						{
							miao++;
							if(miao==60)
								miao=0;
							write_sfm(10,miao);
							write_com(0x80+0x40+11);
							write_add(1,miao);
						}
						if(s1_num==2)
						{
							fen++;
							if(fen==60)
								fen=0;
							write_sfm(7,fen);
							write_com(0x80+0x40+8);
							write_add(2,fen);
						}
						if(s1_num==3)
						{
							shi++;
							if(shi==24)
								shi=0;
							write_sfm(4,shi);
							write_com(0x80+0x40+5);
							write_add(3,shi);
						}
						if(s1_num==4)
						{
							week++;
							if(week==8)
								week=1;
							write_week(week);
							write_com(0x80+14);
							write_add(4,week);
						}
						if(s1_num==5)
						{
							day++;
							if(day==32)
								day=1;
							write_year_month_day(9,day);
							write_com(0x80+10);
							write_add(5,day);
						}
						if(s1_num==6)
						{
							month++;
							if(month==13)
								month=1;
							write_year_month_day(6,month);
							write_com(0x80+7);
							write_add(6,month);
						}
						if(s1_num==7)
						{
							year++;
							if(year==100)
								year=00;
							write_year_month_day(3,year);
							write_com(0x80+4);
							write_add(7,year);
						}
					}
				}
				if(s3==0)
				{
					delay1(5);
					if(s3==0)
					{
						while(!s3);
						di();
						if(s1_num==1)
						{
							miao--;
							if(miao==-1)
								miao=59;
							write_sfm(10,miao);
							write_com(0x80+0x40+11);
							write_add(1,miao);
						}
						if(s1_num==2)
						{
							fen--;
							if(fen==-1)
								fen=59;
							write_sfm(7,fen);
							write_com(0x80+0x40+8);
							write_add(2,fen);
						}
						if(s1_num==3)
						{
							shi--;
							if(shi==-1)
								shi=23;
							write_sfm(4,shi);
							write_com(0x80+0x40+5);
							write_add(3,shi);
						}
						if(s1_num==4)
						{
							week--;
							if(week==0)
								week=7;
							write_week(week);
							write_com(0x80+14);
							write_add(4,week);
						}
						if(s1_num==5)
						{
							day--;
							if(day==0);
							day=31;
							write_year_month_day(9,day);
							write_com(0x80+10);
							write_add(5,day);
						}
						if(s1_num==6)
						{
							month--;
							if(month==0)
								month=12;
							write_year_month_day(6,month);
							write_com(0x80+7);
							write_add(6,month);
						}
						if(s1_num==7)
						{
							year--;
							if(year==-1)
								year=99;
							write_year_month_day(3,year);
							write_com(0x80+4);
							write_add(7,year);
						}
					}
				}
			}
		}
void main()
{
	init();
	while(1)
	{
		keyscan();
	}
}
void timer0() interrupt 1
{
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	count++;
	if(count==20)
	{
		count=0;
		miao++;
		if(miao==60)
		{
			miao=0;
			fen++;
			if(fen==60)
			{
				fen=0;
				shi++;
				if(shi==24)
				{
					shi=0;
				}
				write_sfm(4,shi);
				write_add(3,shi);
			}
			write_sfm(7,fen);
			write_add(2,fen);
	  }
	write_sfm(10,miao);
	write_add(1,miao);
  }
}

		        

 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。