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

📄 shizhong.lst

📁 51单片机时钟+秒表程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  SHIZHONG                                                               06/07/2010 16:00:45 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE SHIZHONG
OBJECT MODULE PLACED IN .\shizhong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\shizhong.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg52.h>
   2          #define uint unsigned int
   3          #define uchar unsigned char	
   4          uchar hour,minute,second,hour2,minute2,second2,count,num,num1,a,b,c,d,e,f,i,k,nao,date,month,nian,lowsec1,
             -second1,higsec1;
   5          uchar code xian[]="WELCOME TO CQUPT";
   6          uchar code xingqi[]="MONTUEWEDTHUFRISATSUN";
   7          uchar code table[]="2000-01-01  MON";
   8          uchar code table1[]="00:00:00";
   9          sbit lcdrs=P2^7;
  10          sbit lcdrw=P2^6;
  11          sbit lcde=P2^5;
  12          sbit mod=P1^0;     /*********设置键*******/
  13          sbit add=P1^1;     /*********调整键*******/
  14          sbit swi=P1^2;     /*********12/24模式转换键*****/
  15          sbit sec=P1^3;     /*********秒表键*******/
  16          sbit buz=P1^5;     /*********闹钟IO口定义******/
  17          sbit clo=P1^4;     /*********闹钟键********/
  18          void xianshi(uchar i);
  19          void  lcd_com(uchar com);
  20          void  lcd_dat(uchar dat);
  21          void display(uchar add,uchar dat);
  22          void display1(uchar add,uchar dat);
  23          void keyscan();
  24          void delay(uint z);
  25          void startlcd();
  26          void starttimer();
  27          void start();
  28          void main()
  29          {
  30   1      	 start();
  31   1      	 startlcd();
  32   1      	 starttimer();	 
  33   1      	while(1)
  34   1      	{
  35   2      		keyscan();
  36   2      	}	
  37   1      }
  38          
  39          void xianshi(uchar i)
  40          {
  41   1      	k=3*i;
  42   1      	lcd_com(0x80+12);
  43   1      	lcd_dat(xingqi[k]);
  44   1      	lcd_dat(xingqi[k+1]);
  45   1      	lcd_dat(xingqi[k+2]);
  46   1      }
  47          
  48          void startlcd()
  49          	{
  50   1      	   lcd_com(0x01);
  51   1             lcd_com(0x38);
  52   1             lcd_com(0x0c);
  53   1      	   lcd_com(0x06);
  54   1      	   lcd_com(0x80);
C51 COMPILER V6.12  SHIZHONG                                                               06/07/2010 16:00:45 PAGE 2   

  55   1      	   for(num=0;num<16;num++)
  56   1      	   {
  57   2      			lcd_dat(xian[num]);
  58   2      	   }
  59   1      	   delay(3000);
  60   1      	   lcd_com(0x01);
  61   1      	   lcd_com(0x80);
  62   1      	   for(num=0;num<15;num++)
  63   1      			{
  64   2      				  lcd_dat(table[num]);
  65   2      			}
  66   1      	   lcd_com(0x80+0x43);
  67   1      	   for(num1=0;num1<8;num1++)
  68   1      			{
  69   2      				  lcd_dat(table1[num1]);
  70   2      			}
  71   1      	}
  72          	
  73          void starttimer()
  74          	{				
  75   1      	   TMOD=0x11;
  76   1      	   TH0=(65536-10000)/256;
  77   1      	   TL0=(65536-10000)%256;
  78   1      	   TH1=(65536-50000)/256;
  79   1      	   TL1=(65536-50000)%256;
  80   1      	   EA=1;
  81   1      	   ET0=1;
  82   1      	   ET1=1;
  83   1             TR0=0;
  84   1      	   TR1=1;
  85   1      	}
  86          	
  87          void start()
  88          {
  89   1      	   buz=1;
  90   1      	   count=0;
  91   1      	   second=0;
  92   1      	   minute=0;
  93   1      	   hour=0;
  94   1      	   date=1;
  95   1      	   month=1;
  96   1      	   nian=0;
  97   1      	   lowsec1=0;
  98   1      	   second1=0;
  99   1             higsec1=0;
 100   1      	   second2=0;
 101   1      	   minute2=0;
 102   1      	   hour2=0;
 103   1      	   a=0;
 104   1      	   b=0;
 105   1      	   c=0;
 106   1      	   d=0;
 107   1      	   e=0;
 108   1      	   f=0;
 109   1      	   i=0;
 110   1      	   k=0;
 111   1             nao=0;
 112   1      }	
 113          
 114          void  lcd_com(uchar com)
 115          {
 116   1      	lcdrs=0;
C51 COMPILER V6.12  SHIZHONG                                                               06/07/2010 16:00:45 PAGE 3   

 117   1      	lcdrw=0;
 118   1      	lcde=0;
 119   1      	P0=com;
 120   1      	lcde=1;
 121   1      	lcde=0;
 122   1      	delay(1);
 123   1      }
 124          
 125          void  lcd_dat(uchar dat)
 126          {
 127   1      	lcdrs=1;
 128   1      	lcdrw=0;
 129   1      	P0=dat;
 130   1      	lcde=1;
 131   1      	lcde=0;
 132   1      	lcdrs=0;
 133   1      	delay(1);
 134   1      }
 135          
 136          /**********************1602第二排显示****************/
 137          void display(uchar add,uchar dat)
 138          {
 139   1      	uchar shi,ge;
 140   1      	shi=dat/10;
 141   1      	ge=dat%10;
 142   1      	lcd_com(0x80+0x40+add);
 143   1      	lcd_dat(0x30+shi);
 144   1      	lcd_dat(0x30+ge);
 145   1      }
 146          
 147          /********************1602第一排显示*****************/
 148          void display1(uchar add,uchar dat)
 149          {
 150   1      	uchar shi,ge;
 151   1      	shi=dat/10;
 152   1      	ge=dat%10;
 153   1      	lcd_com(0x80+add);
 154   1      	lcd_dat(0x30+shi);
 155   1      	lcd_dat(0x30+ge);
 156   1      }
 157          
 158          
 159          void delay(uint z)
 160          {
 161   1      	uint x,y;
 162   1      	for(x=0;x<z;x++)
 163   1      	for(y=0;y<123;y++);
 164   1      }
 165          
 166          /***********中断1为秒表的中断************/
 167          void timer0() interrupt 1
 168          {
 169   1      	   TH0=(65536-10000)/256;
 170   1      	   TL0=(65536-10000)%256;
 171   1      	   lowsec1++;
 172   1      	   if(lowsec1==100)
 173   1      		   {
 174   2      			   	lowsec1=0;
 175   2      				second1++;
 176   2      				if(second1==60)
 177   2      					{
 178   3      						second1=0;
C51 COMPILER V6.12  SHIZHONG                                                               06/07/2010 16:00:45 PAGE 4   

 179   3      						higsec1++;
 180   3      						if(higsec1==60)
 181   3      							{	
 182   4      								higsec1=0;																
 183   4      							 }
 184   3      						display1(0,higsec1);
 185   3      					}
 186   2      				display1(3,second1);
 187   2      		   }
 188   1      	   display1(6,lowsec1);
 189   1      }	
 190          
 191          /*******************中断2为时钟运行************/
 192          void timer1() interrupt 3
 193          { 
 194   1       	   TH0=(65536-50000)/256;
 195   1      	   TL0=(65536-50000)%256;
 196   1      	   count++;	   
 197   1      	   if(count==20)
 198   1      		   {
 199   2      			   	count=0;
 200   2      				second++;
 201   2      				if(b==1)
 202   2      				{
 203   3      					if(hour>12)
 204   3      					{
 205   4      					hour=hour-12;
 206   4      					display(3,hour);										
 207   4      					}
 208   3      				}
 209   2      				if(hour==hour2)
 210   2      				f=1;
 211   2      				if((minute==minute2)&&(f==1))
 212   2      				f=2;
 213   2      				if((second==second2)&&(f==2))
 214   2      				{
 215   3      				buz=0;
 216   3      				if(second>55)
 217   3      				nao=second-55;
 218   3      				nao=second+5;
 219   3      				}
 220   2      				if(nao==second)
 221   2      				{
 222   3      					buz=1;
 223   3      					f=0;
 224   3      				}
 225   2      				if(second==60)
 226   2      					{
 227   3      						second=0;
 228   3      						minute++;
 229   3      						if(minute==60)
 230   3      							{	
 231   4      								buz=0;
 232   4      								nao=2;
 233   4      								minute=0;
 234   4      								hour++;
 235   4      								if(b==1)
 236   4      								{
 237   5      									if(hour==12)
 238   5      									{
 239   6      										c++;
 240   6      										if(c%2==0)
C51 COMPILER V6.12  SHIZHONG                                                               06/07/2010 16:00:45 PAGE 5   

 241   6      										{
 242   7      											c=0;
 243   7      											date++;
 244   7      											i++;
 245   7      											if(date==30&&month==2)
 246   7      											 {
 247   8      											  	date=1;
 248   8      												month++;
 249   8      												if(month==13)
 250   8      												  {
 251   9      												   month=1;
 252   9      												   nian++;
 253   9      												   if(nian==100)
 254   9      												   nian=0;
 255   9      												   display1(2,nian);
 256   9      												  }
 257   8      												   if(e==0)
 258   8      												   display1(5,month);
 259   8      											 }	
 260   7      											if(date==31&&(month==4||month==6||month==9||month==11))
 261   7      											   {
 262   8      											  	date=1;
 263   8      												month++;
 264   8      												if(month==13)
 265   8      												  { 
 266   9      												   month=1;
 267   9      												   nian++;
 268   9      												   if(nian==100)
 269   9      												   nian=0;
 270   9      												   display1(2,nian);
 271   9      												  }
 272   8      												   if(e==0)
 273   8      												   display1(5,month);
 274   8      											  	}
 275   7      											if(date==32)
 276   7      											  {
 277   8      											  	date=1;
 278   8      												month++;
 279   8      												if(month==13)
 280   8      												  {
 281   9      												   month=1;
 282   9      												   nian++;
 283   9      												   if(nian==100)
 284   9      												   nian=0;
 285   9      												   display1(2,nian);
 286   9      												  }
 287   8      												   if(e==0)
 288   8      												   display1(5,month);
 289   8      											  }
 290   7      											  if(e==0)
 291   7      											  {
 292   8      											  display1(8,date);
 293   8      											  xianshi(i);
 294   8      											  }
 295   7      										  }
 296   6      									}	
 297   5      									if(hour==13)
 298   5      									hour=1;
 299   5      								}
 300   4      								else
 301   4      								{
 302   5      										if(hour==24)
C51 COMPILER V6.12  SHIZHONG                                                               06/07/2010 16:00:45 PAGE 6   

 303   5      									{
 304   6      										hour=0;
 305   6      										date++;
 306   6      										i++;
 307   6      										if(date==30&&month==2)
 308   6      											{
 309   7      										  	date=1;
 310   7      											month++;
 311   7      											if(month==13)
 312   7      											  {
 313   8      										   	   month=1;
 314   8      											   nian++;
 315   8      											   if(nian==100)
 316   8      											   nian=0;
 317   8      											   display1(2,nian);
 318   8      											  }
 319   7      											   if(e==0)
 320   7      											   display1(5,month);
 321   7      										     }	

⌨️ 快捷键说明

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