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

📄 rob.lst

📁 本人弄的一个C程序
💻 LST
字号:
C51 COMPILER V6.12  ROB                                                                    01/13/2008 23:15:13 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE ROB
OBJECT MODULE PLACED IN .\rob.OBJ
COMPILER INVOKED BY: D:\Program_Files\Keil\C51\BIN\C51.EXE .\rob.C DEBUG OBJECTEXTEND

stmt level    source

   1           ///////////////////////12M
   2           ////////////////改为按一次键即可清除并启动
   3           ///////加一个开关作为两种抢答模式1不可连续抢答,2可连续抢答
   4          
   5          #include<\atmel\AT89X51.h>
   6          #include<intrins.h>
   7          
   8          
   9          sbit	 	robled1	 =	P3^1;
  10          sbit	 	robled2 =	P3^3;
  11          sbit		robled3 =	P3^5;
  12          sbit		robled4 =	P1^7;
  13          sbit		startled =	P2^0;
  14          sbit		speaker =	P1^5;
  15          
  16          sbit		robkey1 =	P1^0;
  17          sbit		robkey2	=	P1^1;
  18          sbit		robkey3 =	P1^2;
  19          sbit		robkey4 =	P1^3;
  20          sbit		startkey =	P1^4;
  21          
  22          sbit		statuskey =	P0^1;
  23          
  24          unsigned char th0_f; //在中断中装载的T0的值高8位
  25          unsigned char tl0_f; //在中断中装载的T0的值低8位
  26          
  27          void delay_10us(unsigned char delayvalue);
  28          void delay_ms(unsigned int delayvalue);	
  29          unsigned char scankey(void);
  30          void dispsub(void);
  31          unsigned char scanrobkey(void);
  32          void alarm(void);
  33          void scankey1(void);
  34          
  35           //T0的值,及输出频率对照表
  36          unsigned char  code freq[36*2]={
  37                  0xA9,0xEF,//00220HZ ,1         //0
  38                  0x93,0xF0,//00233HZ ,1#
  39                  0x73,0xF1,//00247HZ ,2
  40                  0x49,0xF2,//00262HZ ,2#
  41                  0x07,0xF3,//00277HZ ,3
  42                  0xC8,0xF3,//00294HZ ,4
  43                  0x73,0xF4,//00311HZ ,4#
  44                  0x1E,0xF5,//00330HZ ,5 
  45                  0xB6,0xF5,//00349HZ ,5#
  46                  0x4C,0xF6,//00370HZ ,6
  47                  0xD7,0xF6,//00392HZ ,6#
  48                  0x5A,0xF7,//00415HZ ,7    
  49                  0xD8,0xF7,//00440HZ 1     //12
  50                  0x4D,0xF8,//00466HZ 1#    //13
  51                  0xBD,0xF8,//00494HZ 2     //14
  52                  0x24,0xF9,//00523HZ 2#    //15
  53                  0x87,0xF9,//00554HZ 3     //16
  54                  0xE4,0xF9,//00587HZ 4     //17
  55                  0x3D,0xFA,//00622HZ 4#    //18
C51 COMPILER V6.12  ROB                                                                    01/13/2008 23:15:13 PAGE 2   

  56                  0x90,0xFA,//00659HZ 5     //19
  57                  0xDE,0xFA,//00698HZ 5#    //20
  58                  0x29,0xFB,//00740HZ 6     //21
  59                  0x6F,0xFB,//00784HZ 6#    //22
  60                  0xB1,0xFB,//00831HZ 7     //23
  61                  0xEF,0xFB,//00880HZ `1
  62                  0x2A,0xFC,//00932HZ `1#
  63                  0x62,0xFC,//00988HZ `2
  64                  0x95,0xFC,//01046HZ `2#
  65                  0xC7,0xFC,//01109HZ `3
  66                  0xF6,0xFC,//01175HZ `4
  67                  0x22,0xFD,//01244HZ `4#
  68                  0x4B,0xFD,//01318HZ `5
  69                  0x73,0xFD,//01397HZ `5#
  70                  0x98,0xFD,//01480HZ `6
  71                  0xBB,0xFD,//01568HZ `6#
  72                  0xDC,0xFD,//01661HZ `7           //35
  73          };
  74          ////////////////////////////////////////////
  75            timer0() interrupt 1 
  76          {
  77   1          TL0=tl0_f;TH0=th0_f;  //调入预定时值
  78   1          speaker=~speaker;           //取反音乐输出IO
  79   1      }
  80          
  81          
  82          ////////////////////
  83          ///////////////////////////////////////
  84          void main(){
  85   1      unsigned char i,j;
  86   1      i=0;j=0;
  87   1      speaker=0;
  88   1      for(;;){
  89   2      	P3=0x0;
  90   2      	P1_5=0;
  91   2      	P1_7=0;
  92   2      	P2_0=1;
  93   2      	P2_2=0;
  94   2      	j=0;
  95   2      	for(;;){
  96   3      		j=scanrobkey();
  97   3      		if(j==0)break;
  98   3      		delay_ms(1);
  99   3      		}
 100   2      	if(statuskey==1){
 101   3      		if(startkey==0){		
 102   4      			delay_ms(2);
 103   4      			if(startkey==0)i=scankey(); 
 104   4      			}
 105   3      	 	if(i!=0)dispsub();
 106   3      	 	i=0;
 107   3      		}
 108   2      	if(statuskey==0){
 109   3      		if(startkey==0){		
 110   4      			delay_ms(2);
 111   4      			if(startkey==0)scankey1(); 
 112   4      			}		
 113   3      		}
 114   2      	}	
 115   1      }
 116          //////////////////12Mhz
 117          unsigned char scanrobkey(void){
C51 COMPILER V6.12  ROB                                                                    01/13/2008 23:15:13 PAGE 3   

 118   1      
 119   1      		if(robkey1==0)return(1);
 120   1      		if(robkey2==0)return(1);
 121   1      		if(robkey3==0)return(1);
 122   1      		if(robkey4==0)return(1);
 123   1      		return(0);
 124   1      		}
 125          ///////////////////////////////////
 126          void scankey1(void){
 127   1      	unsigned char temp;
 128   1      	unsigned char k1,k2,k3,k4;
 129   1      	k1=0;k2=0;k3=0;k4=0;
 130   1      	temp=0;
 131   1      	for(;;){	//testing startkey until startkey have been free
 132   2      		if(startkey==1){delay_ms(1);if(startkey==1)break;}
 133   2      		delay_ms(1);
 134   2      		}
 135   1      	P2_0=0;
 136   1      	P2_2=1;
 137   1      
 138   1      	for(;;){	//every key haved press will setup disabel
 139   2      		for(;;){
 140   3      			if((robkey1==0)&&(k1==0)){
 141   4      				k1=1;
 142   4      
 143   4      				robled1=1;
 144   4      				robled2=0;
 145   4      				robled3=0;
 146   4      				robled4=0;
 147   4      				break;
 148   4      				}
 149   3      			if((robkey2==0)&&(k2==0)){
 150   4      				k2=1;
 151   4      
 152   4      				robled1=0;
 153   4      				robled2=1;
 154   4      				robled3=0;
 155   4      				robled4=0;
 156   4      				break;
 157   4      				}
 158   3      			if((robkey3==0)&&(k3==0)){
 159   4      				k3=1;
 160   4      
 161   4      				robled1=0;
 162   4      				robled2=0;
 163   4      				robled3=1;
 164   4      				robled4=0;
 165   4      				break;
 166   4      				}
 167   3      			if((robkey4==0)&&(k4==0)){
 168   4      				k4=1;
 169   4      
 170   4      				robled1=0;
 171   4      				robled2=0;
 172   4      				robled3=0;
 173   4      				robled4=1;
 174   4      				break;
 175   4      				}
 176   3      			if(startkey==0){
 177   4      				delay_ms(2);
 178   4      				if(startkey==0){
 179   5      			
C51 COMPILER V6.12  ROB                                                                    01/13/2008 23:15:13 PAGE 4   

 180   5      						P3=0x0;
 181   5      						P1_5=0;
 182   5      						P1_7=0;
 183   5      						return;
 184   5      						}
 185   4      				}
 186   3      			}
 187   2      
 188   2      		P2_0=1;
 189   2      		P2_2=1;
 190   2      		alarm();
 191   2      		for(temp=0;temp<100;temp++){	//delay 2second exact startkey active other key disabel		
 192   3      			delay_ms(20);
 193   3      			if(startkey==0){
 194   4      				delay_ms(2);
 195   4      				if(startkey==0){
 196   5      			
 197   5      						P3=0x0;
 198   5      						P1_5=0;
 199   5      						P1_7=0;
 200   5      						return;
 201   5      						}
 202   4      				}
 203   3      			}
 204   2      		}
 205   1      	
 206   1      	return;  
 207   1         }
 208          
 209          //////////////////////
 210          unsigned char scankey(void){
 211   1      
 212   1      	unsigned char key;
 213   1      	key=0;
 214   1      	for(;;){
 215   2      		if(startkey==1){delay_ms(1);if(startkey==1)break;}
 216   2      		delay_ms(1);
 217   2      		}
 218   1      	P2_0=0;
 219   1      	P2_2=1;
 220   1      	for(;;){
 221   2      		if(robkey1==0){key=1;robled1=1;break;}
 222   2      		if(robkey2==0){key=2;robled2=1;break;}
 223   2      		if(robkey3==0){key=3;robled3=1;break;}
 224   2      		if(robkey4==0){key=4;robled4=1;break;}
 225   2      		if(startkey==0){
 226   3      				delay_ms(2);
 227   3      				if(startkey==0){key=0;break;}
 228   3      				}
 229   2      		}
 230   1      	//if(key==0){
 231   1      	//	for(;;){
 232   1      	//	if(startkey==1){delay_ms(1);if(startkey==1)break;}
 233   1      	//	delay_ms(1);
 234   1      	//	}
 235   1      	//  }
 236   1      	//if(key!=0)speaker=1;
 237   1      	return(key);  
 238   1         }
 239          ///////////////////
 240          void dispsub(void){
 241   1      	P2_0=1;
C51 COMPILER V6.12  ROB                                                                    01/13/2008 23:15:13 PAGE 5   

 242   1      	P2_2=1;
 243   1      	alarm();
 244   1      	delay_10us(10);
 245   1      	for(;;){
 246   2      		speaker=0;
 247   2      		//switch(k){
 248   2      		//	case 1:robled1=1;break;
 249   2      		//	case 2:robled2=1;break;
 250   2      		//	case 3:robled3=1;break;
 251   2      		//	case 4:robled4=1;break;
 252   2      		//	default: break;
 253   2      		//	}
 254   2      		if(startkey==0){
 255   3      				delay_ms(2);
 256   3      				if(startkey==0)break;
 257   3      				}
 258   2      		}
 259   1      	//for(;;){
 260   1      	//	if(startkey==1){delay_ms(1);if(startkey==1)break;}
 261   1      	//	delay_ms(1);
 262   1      	//	}
 263   1      	P3=0x0;
 264   1      	P1_5=0;
 265   1      	P1_7=0;
 266   1      	}
 267          	
 268           
 269          ///////////////////
 270          
 271          void delay_10us(unsigned char delayvalue){
 272   1      	
 273   1      	while(--delayvalue!=0){
 274   2      		_nop_();
 275   2      		_nop_();
 276   2      		_nop_();
 277   2      		_nop_();
 278   2      		continue;
 279   2      		}
 280   1      	}
 281          //////////////////////////12Mhz
 282          void delay_ms(unsigned int delayvalue){
 283   1      	unsigned int i,j;
 284   1      	for(i=0;i<delayvalue;i++)
 285   1      		for(j=0;j<123;j++);
 286   1      	}
 287          ////////////////////////////////
 288          void alarm(void){
 289   1        		unsigned long n;
 290   1              unsigned char i,j=0;
 291   1      
 292   1              unsigned char  code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1八个音符在频率表中的位置
 293   1              unsigned char  code Led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
 294   1      
 295   1              TMOD = 0x01;  //使用定时器0的16位工作模式
 296   1              TR0 = 1;
 297   1              ET0 = 1;
 298   1              EA = 1;
 299   1      
 300   1              
 301   1              
 302   1                       for(i=7;i<8;i++)        //循环播放8个音符
 303   1                       {
C51 COMPILER V6.12  ROB                                                                    01/13/2008 23:15:13 PAGE 6   

 304   2                               P0=Led[j];
 305   2                              j++;
 306   2                              if(j==8)
 307   2                                j=0;
 308   2                              tl0_f=freq[jie8[i]*2];          //置一个音符的值
 309   2                              th0_f=freq[jie8[i]*2+1];
 310   2                               for(n=0;n<15000;n++);        //延时1秒左右
 311   2                              
 312   2                       }
 313   1              speaker=0;
 314   1      		EA = 0;
 315   1      	 	TR0 = 0;
 316   1              ET0 = 0;
 317   1              
 318   1         }
 319          /*
 320          void alarm(void){
 321          	signed char i,j;
 322          	signed stone;
 323          	//stone=
 324          	for(i=1;i<10;i++){
 325          		for(j=1;j<20;j++){
 326          			speaker=0;
 327          			delay_10us(i*30);
 328          			speaker=1;
 329          			delay_10us((50-i)*30);
 330          			}
 331          			delay_ms(j);
 332          		  }
 333          		 
 334          	 }
 335          
 336          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    601    ----
   CONSTANT SIZE    =     88    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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