用定时器1设计秒表

#include
#define uchar unsigned char
#define uint unsigned int 
sbit dula=P2^6;
sbit wela=P2^7;
uchar code tab1[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar tt,bai,shi,ge;
uint shu;
void init();
void delay(uchar z);
void display(uchar bai,uchar shi,uchar ge);

void main()
{
	init();
	while(1)
	{
		display(bai,shi,ge);
	}
}
	void init()
	{
		shu=0;
		bai=shu/100;
		shi=shu%100/10;
		ge=shu%10;
		TMOD=0x10;
		TH1=(65536-10000)/256;
		TL1=(65536-10000)%256;
		EA=1;
		ET1=1;
		TR1=1;
			
	}
	void time1() interrupt 3
	{
		TH1=(65536-10000)/256;
		TL1=(65536-10000)%256;
		tt++;
		if(tt==1)
		{
			tt=0;
			shu++;
			bai=shu/100;
			shi=shu%100/10;
			ge=shu%10;
			if(shu==999)
			shu=0;

		
			
		}
			
	}
		void display(uchar bai,uchar shi,uchar ge)
			{
				wela=1;
				P2=0xfe;
				wela=0;
				dula=1;
				P0=tab1[bai];
				dula=0;
				delay(20);

				wela=1;
				P2=0xfd;
				wela=0;
				dula=1;
				P0=tab1[shi];
				dula=0;
				delay(20);

				wela=1;
				P2=0xfb;
				wela=0;
				dula=1;
				P0=tab1[ge];
				dula=0;
				delay(20);

			
			}	
		void delay(uchar z)
		{
			uchar x,y;
			for(x=0;x
我是当成一个练习题做的,主要是练习自己C语言编程与硬件结合的的能力。因此这个程序中没有考虑秒与毫秒中间小数点的问题!自我感觉这次练习的还不错没有浪费太多的时间

你可能感兴趣的:(用定时器1设计秒表)