C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 1   


DOS C51 COMPILER V5.10, COMPILATION OF MODULE SPIER1
OBJECT MODULE PLACED IN SPIER1.OBJ
COMPILER INVOKED BY: C:\C51LITE\BIN\C51.EXE SPIER1.C CD ROM(SMALL) 

stmt level    source

   1          // (c) 2000 SEGMENT bv
   2          
   3          /*********** HARDCODED COPYRIGHT & VERSION INFORMATION *********************************************/
   4          #define SOFTVER 	1
   5          #define SOFTSUBVER      1
   6          #define SOFTSUBSUBVER   7
   7          char hardcodedcopyrightstring[]="(c) 2000 SEGMENT bv, v1.1.7"; 
   8          /***************************************************************************************************/
   9          
  10          
  11          
  12          
  13          /************************ DEFINITIONS **************************************************************/
  14          #include <At892051.h>
  15          #define TIMEMODE 0
  16          #define PROGMODE 1
  17          #define DECIMAL 0
  18          #define HEXADECIMAL 1
  19          #define HALFSECLENGTH 1954     
  20          // 1954 = 0,5 sec. @ 12MHz        1800 @ 11,059...Mhz
  21          #define STING_REPEATTIME 36
  22          /***************************************************************************************************/
  23          
  24          
  25          /*****************  DECLARATIONS OF VARIABELS ******************************************************/
  26          int intcount, timecounthalfsec=0;
  27          /*  
  28          the following sbits are defined in At892051.h
  29          sbit P1_0 = 0x90;
  30          sbit P1_1 = 0x91;
  31          sbit P1_2 = 0x92;
  32          sbit P1_3 = 0x93;
  33          sbit P1_4 = 0x94;
  34          sbit P1_5 = 0x95;
  35          sbit P1_6 = 0x96;
  36          sbit P1_7 = 0x97;
  37          sbit P3_0 = 0xB0;
  38          sbit P3_1 = 0xB1;
  39          sbit P3_2 = 0xB2;    
  40          sbit P3_3 = 0xB3;    
  41          sbit P3_4 = 0xB4;    
  42          sbit P3_5 = 0xB5;    
  43          sbit P3_7 = 0xB7; */
  44          
  45          sbit mode = 0xB5;          /* mode key */
  46          sbit up   = 0xB3;          /* up key   */
  47          sbit down = 0xB4;          /* down key */
  48          sbit startstop = 0xB2;     /* start/stop key */
  49          sbit posout = 0xB0;        /* output that drives transistor T1 */
  50          sbit negout = 0xB1;	   /* output that drives transistor T2 */	
  51          sbit LD1_a = 0x91;	   /* 7seg-display LD1 seg a */
  52          sbit LD1_b = 0x90;         /* 7seg-display LD1 seg b */
  53          sbit LD1_c = 0x92;	   /* 7seg-display LD1 seg c */
  54          sbit LD1_d = 0x93;         /* 7seg-display LD1 seg d */
  55          sbit LD1_e = 0x94;         /* 7seg-display LD1 seg e */
  56          sbit LD1_f = 0x95;         /* 7seg-display LD1 seg f */
  57          sbit LD1_g = 0x96;         /* 7seg-display LD1 seg g */
  58          sbit LD2_bc = 0x97;        /* 7seg-display LD2 seg b & seg c */
  59          sfr LDs=0x90;              /* the seg's that are declared as bits above are declared here as one byte */ 
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 2   

  60          sbit LEDs_mode = 0xB7;     /* toggles the mode LEDs (LED D1 & D2) */
  61          
  62          bit     temp; /* temporary bit for making compare actions of IO bits fail-save */
  63          bit 	mode_old=1, up_old=1, down_old=1, startstop_old=1; /* bits for saving the previous state of the input
             --keys */
  64          bit 	modepressedflag=0, uppressedflag=0, downpressedflag=0, startstoppressedflag=0,
  65          	/* flags that indicate whether a key has been pressed or not */
  66          	outflag=0, startnotstopflag=0, displayrunning=0;
  67          	/* flags that indicate whether there has to be output or not (outflag),
  68          	   whether a treatment has to start or stop (startnotstopflag),
  69          	   whether the display has to show running segments (displayrunning) */	 
  70          
  71          unsigned int antidender, outpcount;
  72          /* counters used in the interrupt routine for stabilizing key-inputs (antidender)
  73             and calculation of output-puls pattern */
  74          
  75          unsigned char treatmenttime=0; // contains the time that is left during a treatment. unity: 1 minute. init
             -ial value=0.
  76          unsigned int totaltime=0; //contains the time that was setup before the user started the treatment unity: 
             -one minute initial value=0
  77          char 	prog=0, dutycycle=0;  //prog contains will contain the selected program (1,2...8,9   e.g.  A,B...E,F
             -)
  78          char testarray[]={205,163,72,194,133,205,145,207,163,200};    	//"ROMVERSION"
  79          char limsarray[]={199,207,72,145}; 				 //"LIMS"
  80          char segmentarray[]={253,254,251,247,239,223,191,127,255}; 	 //single segments, used in testroutine
  81          char versionarray[]={SOFTVER,SOFTSUBVER,SOFTSUBSUBVER};    	 //versionarray contains software versionnumbe
             -r
  82          /******************************************************************************************************/
  83          
  84          
  85          
  86          
  87          
  88          /************ FUNCTION PROTOTYPES ********************************************/
  89          void timer0int (void); 		//prototype of interruptfunction
  90          void display (char,bit); 	//prototype of function for general displayhandling
  91          void GetDutycycle(void); 	//prototype of function for calculating the dutycycle
  92          void testroutine(void);         //prototype of testroutine
  93          void delay(unsigned integer);   //prototype of delayfunction
  94          /****************************************************************************/
  95          
  96          
  97          
  98          
  99          
 100          
 101          
 102          main()
 103          {
 104   1      /*********************************** INIT **************************************************/
 105   1      unsigned int n; char counter;
 106   1      posout = 1;	// make sure that transistors T1 & T2 are conducting
 107   1      negout = 1;     // as soon as posible, so that C5 cannot build up any charge
 108   1      
 109   1      
 110   1      	/******** SETUP INTERRUPT-TIMING ***************/
 111   1      	/*    Using an 8 bit timer that counts at a    */ 
 112   1      	/*      frequency of 1/12*CLOCKFREQUENCY       */
 113   1      	/* generates an interrupt on every overflow    */
 114   1      	/* so every 256 microseconds @ 12Mhz christal  */
 115   1      	
 116   1      /*
 117   1      select mode 3 for timer 0: T0_M0_=1
 118   1                                 T0_M1_=1                            
 119   1      configure timer 0 as a timer and not as a counter:     			T0_CT_=0  	
 120   1      timer 0 always running; no external control by means of /INT0 io-pin:   T0_GATE_=0
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 3   

 121   1      above bits are only availeble as a byte register declared in the At892051.h headerfile as TMOD,
 122   1      thus TMOD byte register = 00000011 = 3 (dec.)
 123   1      */
 124   1      
 125   1      TMOD=3;
 126   1      
 127   1      
 128   1      TR0=1;	      // timer 0 run control bit on
 129   1      EA=1;	      // enable all interrupts	
 130   1      ET0=1;	      // enable timer0 interrupt	
 131   1      
 132   1      	/******** END INTERRUPT-TIMER SETUP ************/
 133   1      
 134   1      
 135   1      /**********************************************************************-> END INIT <-**********/
 136   1      
 137   1      
 138   1      
 139   1      
 140   1                                                                                    
 141   1      
 142   1      
 143   1      
 144   1      
 145   1      /********************ON  POWER-UP **********************************/
 146   1      while(1==1)
 147   1      {
 148   2      	delay(16000);
 149   2      	if(uppressedflag==1 && downpressedflag==1) testroutine();
 150   2      	else break; //break unless test-mode is entered by means of pressing up & down key during delay(16000)
 151   2      }
 152   1      
 153   1      
 154   1      	for(counter=0;counter<4;counter++)
 155   1      	{
 156   2      	delay(17500); LDs=limsarray[counter];
 157   2      	delay(17500); LDs=255;
 158   2      	} // display "LIMS"
 159   1      
 160   1      LEDs_mode=PROGMODE; 		//on power-up, program-mode is selected
 161   1      display(prog,HEXADECIMAL);      //display program. Initial value of prog was set to '0'
 162   1      				//in the display() subroutine is determined that
 163   1      				//only seg d lites up when display() is called HEXADECIMAL
 164   1      /********************************************************************/
 165   1      
 166   1      
 167   1      
 168   1      while(1==1)
 169   1      {
 170   2      	if(startnotstopflag==0) //ready to run treatmentprogram, currently not running
 171   2      	{
 172   3      		if(uppressedflag==1) // up-key pressed
 173   3      		{
 174   4      			if(LEDs_mode==PROGMODE)
 175   4      			{
 176   5      			if(prog>14 || prog <1) prog=1;
 177   5      			else prog++;
 178   5      			display(prog,HEXADECIMAL);
 179   5      			}
 180   4      
 181   4      			else     // LEDsmode==TIMEMODE
 182   4      			{
 183   5      			if(treatmenttime>18) treatmenttime=1;
 184   5      			else treatmenttime++;
 185   5      			display(treatmenttime,DECIMAL);
 186   5      			timecounthalfsec=0;
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 4   

 187   5      			}
 188   4                      uppressedflag=0;
 189   4      		}
 190   3      
 191   3      		if(downpressedflag==1) // down-key pressed
 192   3      		{
 193   4      			if(LEDs_mode==PROGMODE)
 194   4      			{
 195   5      			if(prog<2) prog=15;
 196   5      			else prog--;
 197   5      			display(prog,HEXADECIMAL);
 198   5      			}
 199   4      
 200   4      			else // LEDs_mode=TIMEMODE
 201   4      			{
 202   5      			if(treatmenttime<2) treatmenttime=19; 
 203   5      			else treatmenttime--;
 204   5      			display(treatmenttime,DECIMAL);
 205   5      			timecounthalfsec=0;
 206   5      			}
 207   4      		downpressedflag=0;
 208   4      		}
 209   3      
 210   3      		if(modepressedflag==1) // modeselect-key pressed
 211   3      		{
 212   4      		temp=~LEDs_mode;
 213   4      		LEDs_mode=temp;
 214   4      		if(temp==TIMEMODE) display(treatmenttime,DECIMAL);	
 215   4      		else display(prog,HEXADECIMAL);
 216   4      		modepressedflag=0;
 217   4      		}
 218   3      
 219   3      		if(startstoppressedflag==1) // start/stop key pressed
 220   3      		{
 221   4      			if(prog==0)              // when prog==0 the user did not select a program
 222   4      			{                        // in that case make sure we are in prog mode 
 223   5      			LEDs_mode=PROGMODE;      // display a flashing seg d
 224   5      			display(21,0);
 225   5      			}
 226   4      
 227   4      			else
 228   4      			{	
 229   5      			 	if(treatmenttime==0)  //when treatmenttime==0 the user did not select
 230   5         				{                    //the duration time. In that case 
 231   6      				LEDs_mode=TIMEMODE;  //make sure we are in time mode and display a flasing '0'
 232   6      				display(22,0);
 233   6                      		}
 234   5      
 235   5      				else                 //when prog and time are set reset interrupt counter 
 236   5      				{                    //reset timecounters and set startnotstopflag.
 237   6      		       		intcount=0;          //make n zero so that the display starts running immediately
 238   6      				totaltime=treatmenttime;
 239   6      					/* treatmenttime will be decreased when treatmentprogram is running.
 240   6      					   A saved value of the initial selected time is needed for the 
 241   6      					   automated programs (progA..F) to calculate when the dutycycle should change
 242   6      					   therefore treatmenttime is copied to totaltime. 			*/
 243   6                             		startnotstopflag=1;
 244   6      				n=0;
 245   6      				}
 246   5      			}
 247   4      		startstoppressedflag=0;
 248   4      		}
 249   3      	} /* end if(startnotstopflag==0) */
 250   2      
 251   2      
 252   2      
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 5   

 253   2      
 254   2      
 255   2      
 256   2      
 257   2      /**************** following code is executed when treatment program is started  **************************
             -/
 258   2      
 259   2      	if(startnotstopflag==1) //treatmentprogram is running
 260   2              {
 261   3      	    	GetDutycycle();
 262   3      		if (timecounthalfsec%dutycycle==0 || timecounthalfsec%dutycycle==1) 	   //calculates when there should b
             -e output
 263   3      		{
 264   4      		outflag=1;                     //output
 265   4      		}
 266   3      		else outflag=0;		       //no output
 267   3      
 268   3      		if(uppressedflag==1 || downpressedflag==1) // if the user presses the up or down key, make the display v
             -isible
 269   3      		{                                          // for a few seconds. (look futher down below to 
 270   4      		n=40000;                                   // understand the construction with n)
 271   4      		uppressedflag=0; downpressedflag=0;
 272   4                      }
 273   3      
 274   3      		if(modepressedflag==1)                     // if the user presses the mode key, toggle mode
 275   3      		{                                          // and make the display visible for a few seconds
 276   4       		LEDs_mode=~LEDs_mode; //toggle mode        // look further down below to
 277   4      		n=40000;                                   // understand the construction with n)
 278   4      		modepressedflag=0;
 279   4      		}		
 280   3      
 281   3      
 282   3      
 283   3      		if(startstoppressedflag==1 || treatmenttime==0) //treatment has to be stopped
 284   3      		{                    	//because the user pressed the stop key OR because 'the time is up'
 285   4      		outflag=0;
 286   4      	 	modepressedflag=0; uppressedflag=0; downpressedflag=0; startstoppressedflag=0;
 287   4      		startnotstopflag=0;
 288   4                      	if(treatmenttime==0)             // time is up; in that case the user needs to re-enter
 289   4      			{                                // prog and treatmenttime before he can start again 
 290   5      			prog=0;                          // Therefore prog is resetted to its initial value of '0'.
 291   5      			}
 292   4      			if(LEDs_mode==TIMEMODE) display(treatmenttime,DECIMAL);
 293   4      			else display(prog,HEXADECIMAL); 
 294   4      		}
 295   3      
 296   3      
 297   3              	else                //treatment has to contine
 298   3      		{
 299   4      			if (n>20000)    // is n is set to a value greater than 20000, 
 300   4      					// the display is made visible and n is decreased with 1 until n<20000
 301   4      			{
 302   5      			displayrunning=0;
 303   5       			if(LEDs_mode==TIMEMODE) display(treatmenttime,DECIMAL);	
 304   5      			else display(prog,HEXADECIMAL);
 305   5      			n--;
 306   5      			}
 307   4      			else displayrunning=1; // keep display display a running '8'
 308   4      		} 
 309   3      	}
 310   2      } /* end while (1==1) */
 311   1      } /* end main */
 312          
 313          
 314          
 315          
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 6   

 316          void timer0int (void) interrupt 1 using 1
 317          {
 318   1      intcount++;
 319   1      	if (startnotstopflag==1 && intcount>HALFSECLENGTH)    
 320   1      	{	
 321   2      	intcount=0;
 322   2      	timecounthalfsec++; 
 323   2      	if(timecounthalfsec%120==0) treatmenttime--;
 324   2              }
 325   1      	
 326   1      	if(displayrunning==1)
 327   1      	{
 328   2                      LD1_g=1;			
 329   2      		LD2_bc=1;
 330   2      		if (intcount<(HALFSECLENGTH/8)*1)	    	LDs=253; /*seg a*/ 
 331   2      		else if (intcount<(HALFSECLENGTH/8)*2)  	LDs=254; /*seg b*/
 332   2      		else if (intcount<(HALFSECLENGTH/8)*3)  	LDs=191; /*seg g*/
 333   2      		else if (intcount<(HALFSECLENGTH/8)*4)  	LDs=239; /*seg e*/
 334   2      		else if (intcount<(HALFSECLENGTH/8)*5)  	LDs=247; /*seg d*/
 335   2      		else if (intcount<(HALFSECLENGTH/8)*6)  	LDs=251; /*seg c*/
 336   2      		else if (intcount<(HALFSECLENGTH/8)*7)  	LDs=191; /*seg g*/
 337   2      		else 				       		LDs=223; /*seg f*/
 338   2      		displayrunning=0;
 339   2              }
 340   1      
 341   1      	if(mode!=mode_old || up!=up_old || down!=down_old || startstop!=startstop_old)
 342   1      	{	
 343   2      	mode_old=mode;
 344   2      	up_old=up;
 345   2      	down_old=down;
 346   2      	startstop_old=startstop;
 347   2      	antidender=0;
 348   2              }
 349   1      
 350   1      	if(mode==mode_old && up==up_old && down==down_old && startstop==startstop_old)
 351   1      	{
 352   2      	antidender++;
 353   2      		if(antidender==40)
 354   2      		{
 355   3      		modepressedflag=~mode_old;  
 356   3      		uppressedflag=~up_old;      
 357   3      		downpressedflag=~down_old;  // ~ = 1s-complement operator 
 358   3      		startstoppressedflag=~startstop_old;
 359   3      		}		
 360   2      		else if(antidender==4500)
 361   2      		{
 362   3      		uppressedflag=~up_old;
 363   3      		downpressedflag=~down_old;
 364   3                      }
 365   2      
 366   2      		else if(antidender==5100)
 367   2      		{
 368   3      		uppressedflag=~up_old;
 369   3      		downpressedflag=~down_old;
 370   3      		antidender=4500;
 371   3      		}
 372   2      	}
 373   1      
 374   1      	if(outpcount==0)
 375   1      	{
 376   2      		if(outflag==1)
 377   2      		{
 378   3      		outpcount++;
 379   3      		}
 380   2      		else { posout=1; negout=1; }
 381   2      	}
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 7   

 382   1      
 383   1      	else
 384   1      	{
 385   2      	outpcount++;
 386   2      		if(outpcount==2)
 387   2      		{
 388   3      		posout=1;
 389   3      		}
 390   2      
 391   2                      else if(outpcount==3)
 392   2      		{
 393   3      		posout=0;
 394   3      		}		
 395   2      
 396   2      		else if(outpcount==(STING_REPEATTIME/2)+2)
 397   2      		{
 398   3      		negout=1;
 399   3      		}
 400   2      
 401   2      		else if(outpcount==(STING_REPEATTIME/2)+3)
 402   2      		{
 403   3      		negout=0;
 404   3                      }
 405   2      
 406   2      		else if(outpcount==STING_REPEATTIME+1)
 407   2      		{
 408   3       		outpcount=0;
 409   3      		}
 410   2              }
 411   1      }
 412          
 413          void display (char display,bit mode)
 414          {
 415   1      //unsigned int n;
 416   1      
 417   1      
 418   1      switch(display)
 419   1      	{
 420   2      	case 0:	if(mode==DECIMAL) LDs=192; 
 421   2      		else LDs=247;
 422   2      		break;
 423   2      
 424   2      	case 1:	LDs=250; break;
 425   2      	case 2: LDs=164; break;
 426   2      	case 3: LDs=176; break;
 427   2      	case 4:	LDs=154; break;
 428   2      	case 5:	LDs=145; break;
 429   2      	case 6:	LDs=129; break;
 430   2      	case 7:	LDs=248; break;
 431   2      	case 8:	LDs=128; break;
 432   2      	case 9: LDs=144; break;
 433   2      	case 10:
 434   2      		if(mode==DECIMAL) LDs=64;
 435   2      		else LDs=136;
 436   2      		break;
 437   2      	case 11:
 438   2      		if(mode==DECIMAL) LDs=122;
 439   2      		else LDs=131;
 440   2      		break;
 441   2      	case 12:
 442   2      		if(mode==DECIMAL) LDs=36;
 443   2      		else LDs=197;
 444   2      		break;
 445   2      	case 13:
 446   2      		if(mode==DECIMAL) LDs=48;
 447   2      		else LDs=162;
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 8   

 448   2      		break;
 449   2      	case 14:
 450   2      		if(mode==DECIMAL) LDs=26;
 451   2      		else LDs=133;
 452   2      		break;
 453   2      	case 15:
 454   2      		if(mode==DECIMAL) LDs=17;
 455   2      		else LDs=141;
 456   2      		break;
 457   2      	case 16: LDs=1; break;
 458   2      	case 17: LDs=120; break;
 459   2      	case 18: LDs=0; break;
 460   2              case 19: LDs=16; break;
 461   2      
 462   2              case 21: 	   //'Prompt' like an MS-DOS prompt 
 463   2      	                   // user has to enter a value by pressing up or down key before prompt disapeares
 464   2      
 465   2      		while(uppressedflag==0 && downpressedflag==0) //otherwhise user may not/cannot do anything
 466   2      		{
 467   3      		LDs=255; delay(6000);
 468   3      		LDs=247; delay(5000);
 469   3      		}
 470   2      		break;
 471   2      
 472   2      	case 22: 	//'flashing zero'  
 473   2                              // user has to enter a value by pressing up or down key before 'flashing zero' dis
             -apeares
 474   2      
 475   2      		while(uppressedflag==0 && downpressedflag==0)  //otherwhise user may not/cannot do anything 
 476   2      		{
 477   3      		LDs=255; delay(6000);
 478   3      		LDs=192; delay(5000);
 479   3      		}
 480   2                      break;
 481   2      	} /* end switch */
 482   1      } /* end display() */
 483          
 484          
 485          void GetDutycycle(void)
 486          {
 487   1      char para1, para2, para3;
 488   1      /* The following 2 lines could be called 'dirty code'; on ALL even programs para1=10, para2=7 and para3=5
 489   1         on ALL odd programs para1=9, para2=6 and para3=3.
 490   1         The dirty thing is that these para1,2,3 are only used in the preset programs, A,B...E,F.
 491   1         Code would be faster and, even more important, clearer if the assignment of para1,2,3 would take place	
 492   1         in the IF..ELSE constructions that determine the dutycycle (a few lines below).
 493   1         We have done it this 'dirty way' because the size of the code reduced 'dramaticaly' this way (several b
             -ytes).
 494   1      */	   
 495   1      if(prog%2==0){para1=10; para2=7; para3=5;}
 496   1      else {para1=9; para2=6; para3=3;}
 497   1      
 498   1        	if(prog<10) dutycycle=12-prog;
 499   1      
 500   1      	else if(prog<12) /* prog = A eg. B */	
 501   1      			{
 502   2      			if(timecounthalfsec<totaltime*2*12) dutycycle=para1;
 503   2      			else if(timecounthalfsec<totaltime*3*12) dutycycle=para2;
 504   2      			else if(timecounthalfsec<totaltime*8*12) dutycycle=para3;
 505   2      			else if(timecounthalfsec<totaltime*9*12) dutycycle=para2;
 506   2      			else dutycycle=para1;
 507   2         			}
 508   1      
 509   1              else if(prog<14) /* prog = C eg D */
 510   1      			{
 511   2      			if(timecounthalfsec<totaltime*3*12) dutycycle=para1;
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 9   

 512   2      			else if(timecounthalfsec<totaltime*6*12) dutycycle=para2;
 513   2      			else dutycycle=para3;
 514   2      			}
 515   1      	else		 /* prog = E eg F */
 516   1      		 	{
 517   2      			if(timecounthalfsec<totaltime*2*12) dutycycle=para2;
 518   2      			else if(timecounthalfsec<totaltime*4*12) dutycycle=para3;
 519   2      			else if(timecounthalfsec<totaltime*6*12) dutycycle=para2;
 520   2      			else if(timecounthalfsec<totaltime*8*12) dutycycle=para3;
 521   2      			else dutycycle=para2;
 522   2      			}
 523   1      }
 524          
 525          void testroutine(void)
 526          {
 527   1      char counter=0;
 528   1      LDs=255;
 529   1      modepressedflag=0; startstoppressedflag=0;
 530   1         while(1==1)
 531   1         {
 532   2      	if(startstoppressedflag==1)  //start / stopkey was pressed
 533   2      	{
 534   3        		for(counter=0;counter<9;counter++) //show all single segments on display
 535   3      		{
 536   4            		delay(20000); LDs=segmentarray[counter];
 537   4      		LEDs_mode=~LEDs_mode;
 538   4            		} 
 539   3      	LEDs_mode=~LEDs_mode;
 540   3      	startstoppressedflag=0;                     
 541   3      	}
 542   2      
 543   2      
 544   2         	if(modepressedflag==1) // mode-key pressed
 545   2          	{
 546   3        		for(counter=0;counter<10;counter++) //show "ROMVERSION" on display
 547   3          		{
 548   4            		delay(20000); LDs=testarray[counter];
 549   4      	    	delay(20000); LDs=255;
 550   4              	}
 551   3        		for(counter=0;counter<3;counter++) //show rom versionnumber
 552   3          		{
 553   4            		delay(20000); display(versionarray[counter],DECIMAL);
 554   4      	   	delay(20000); LDs=255;
 555   4              	}
 556   3          	modepressedflag=0; uppressedflag=0; downpressedflag=0; startstoppressedflag=0;
 557   3          	break;   
 558   3          	}        
 559   2         }
 560   1      }
 561          
 562          void delay(unsigned int dl)
 563          {
 564   1      unsigned int n;
 565   1      for(n=0;n<dl;n++){}
 566   1      }
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 10  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 102
                                           ; SOURCE LINE # 103
                                           ; SOURCE LINE # 106
0000 D2B0          SETB    posout
                                           ; SOURCE LINE # 107
0002 D2B1          SETB    negout
                                           ; SOURCE LINE # 125
0004 758903        MOV     TMOD,#03H
                                           ; SOURCE LINE # 128
0007 D28C          SETB    TR0
                                           ; SOURCE LINE # 129
0009 D2AF          SETB    EA
                                           ; SOURCE LINE # 130
000B D2A9          SETB    ET0
000D         ?C0001:
                                           ; SOURCE LINE # 146
                                           ; SOURCE LINE # 147
                                           ; SOURCE LINE # 148
000D 7F80          MOV     R7,#080H
000F 7E3E          MOV     R6,#03EH
0011 1100    R     ACALL   _delay
                                           ; SOURCE LINE # 149
0013 300007  R     JNB     uppressedflag,?C0002
0016 300004  R     JNB     downpressedflag,?C0002
0019 1100    R     ACALL   testroutine
001B 80F0          SJMP    ?C0001
                                           ; SOURCE LINE # 150
                                           ; SOURCE LINE # 151
001D         ?C0002:
                                           ; SOURCE LINE # 154
001D E4            CLR     A
001E F500    R     MOV     counter,A
0020         ?C0005:
                                           ; SOURCE LINE # 155
                                           ; SOURCE LINE # 156
0020 7F5C          MOV     R7,#05CH
0022 7E44          MOV     R6,#044H
0024 1100    R     ACALL   _delay
0026 7400    R     MOV     A,#limsarray
0028 2500    R     ADD     A,counter
002A F8            MOV     R0,A
002B E6            MOV     A,@R0
002C F590          MOV     LDs,A
                                           ; SOURCE LINE # 157
002E 7F5C          MOV     R7,#05CH
0030 7E44          MOV     R6,#044H
0032 1100    R     ACALL   _delay
0034 7590FF        MOV     LDs,#0FFH
                                           ; SOURCE LINE # 158
0037 0500    R     INC     counter
0039 C3            CLR     C
003A E500    R     MOV     A,counter
003C 6480          XRL     A,#080H
003E 9484          SUBB    A,#084H
0040 40DE          JC      ?C0005
0042         ?C0006:
                                           ; SOURCE LINE # 160
0042 D2B7          SETB    LEDs_mode
                                           ; SOURCE LINE # 161
0044 AF00    R     MOV     R7,prog
0046 D200    R     SETB    ?_display?BIT
0048 1100    R     ACALL   _display
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 11  

004A         ?C0008:
                                           ; SOURCE LINE # 168
                                           ; SOURCE LINE # 169
                                           ; SOURCE LINE # 170
004A 300002  R     JNB     startnotstopflag,$ + 5H
004D 0100    R     AJMP    ?C0010
                                           ; SOURCE LINE # 171
                                           ; SOURCE LINE # 172
004F 30003F  R     JNB     uppressedflag,?C0011
                                           ; SOURCE LINE # 173
                                           ; SOURCE LINE # 174
0052 30B721        JNB     LEDs_mode,?C0012
                                           ; SOURCE LINE # 175
                                           ; SOURCE LINE # 176
0055 D3            SETB    C
0056 E500    R     MOV     A,prog
0058 6480          XRL     A,#080H
005A 948E          SUBB    A,#08EH
005C 5009          JNC     ?C0014
005E C3            CLR     C
005F E500    R     MOV     A,prog
0061 6480          XRL     A,#080H
0063 9481          SUBB    A,#081H
0065 5005          JNC     ?C0013
0067         ?C0014:
0067 750001  R     MOV     prog,#01H
006A 8002          SJMP    ?C0015
006C         ?C0013:
                                           ; SOURCE LINE # 177
006C 0500    R     INC     prog
006E         ?C0015:
                                           ; SOURCE LINE # 178
006E AF00    R     MOV     R7,prog
0070 D200    R     SETB    ?_display?BIT
0072 1100    R     ACALL   _display
                                           ; SOURCE LINE # 179
0074 8019          SJMP    ?C0016
0076         ?C0012:
                                           ; SOURCE LINE # 182
                                           ; SOURCE LINE # 183
0076 E500    R     MOV     A,treatmenttime
0078 D3            SETB    C
0079 9412          SUBB    A,#012H
007B 4005          JC      ?C0017
007D 750001  R     MOV     treatmenttime,#01H
0080 8002          SJMP    ?C0018
0082         ?C0017:
                                           ; SOURCE LINE # 184
0082 0500    R     INC     treatmenttime
0084         ?C0018:
                                           ; SOURCE LINE # 185
0084 AF00    R     MOV     R7,treatmenttime
0086 C200    R     CLR     ?_display?BIT
0088 1100    R     ACALL   _display
                                           ; SOURCE LINE # 186
008A E4            CLR     A
008B F500    R     MOV     timecounthalfsec,A
008D F500    R     MOV     timecounthalfsec+01H,A
                                           ; SOURCE LINE # 187
008F         ?C0016:
                                           ; SOURCE LINE # 188
008F C200    R     CLR     uppressedflag
                                           ; SOURCE LINE # 189
0091         ?C0011:
                                           ; SOURCE LINE # 191
0091 300036  R     JNB     downpressedflag,?C0019
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 12  

                                           ; SOURCE LINE # 192
                                           ; SOURCE LINE # 193
0094 30B718        JNB     LEDs_mode,?C0020
                                           ; SOURCE LINE # 194
                                           ; SOURCE LINE # 195
0097 C3            CLR     C
0098 E500    R     MOV     A,prog
009A 6480          XRL     A,#080H
009C 9482          SUBB    A,#082H
009E 5005          JNC     ?C0021
00A0 75000F  R     MOV     prog,#0FH
00A3 8002          SJMP    ?C0022
00A5         ?C0021:
                                           ; SOURCE LINE # 196
00A5 1500    R     DEC     prog
00A7         ?C0022:
                                           ; SOURCE LINE # 197
00A7 AF00    R     MOV     R7,prog
00A9 D200    R     SETB    ?_display?BIT
00AB 1100    R     ACALL   _display
                                           ; SOURCE LINE # 198
00AD 8019          SJMP    ?C0023
00AF         ?C0020:
                                           ; SOURCE LINE # 201
                                           ; SOURCE LINE # 202
00AF E500    R     MOV     A,treatmenttime
00B1 C3            CLR     C
00B2 9402          SUBB    A,#02H
00B4 5005          JNC     ?C0024
00B6 750013  R     MOV     treatmenttime,#013H
00B9 8002          SJMP    ?C0025
00BB         ?C0024:
                                           ; SOURCE LINE # 203
00BB 1500    R     DEC     treatmenttime
00BD         ?C0025:
                                           ; SOURCE LINE # 204
00BD AF00    R     MOV     R7,treatmenttime
00BF C200    R     CLR     ?_display?BIT
00C1 1100    R     ACALL   _display
                                           ; SOURCE LINE # 205
00C3 E4            CLR     A
00C4 F500    R     MOV     timecounthalfsec,A
00C6 F500    R     MOV     timecounthalfsec+01H,A
                                           ; SOURCE LINE # 206
00C8         ?C0023:
                                           ; SOURCE LINE # 207
00C8 C200    R     CLR     downpressedflag
                                           ; SOURCE LINE # 208
00CA         ?C0019:
                                           ; SOURCE LINE # 210
00CA 30001C  R     JNB     modepressedflag,?C0026
                                           ; SOURCE LINE # 211
                                           ; SOURCE LINE # 212
00CD A2B7          MOV     C,LEDs_mode
00CF B3            CPL     C
00D0 9200    R     MOV     temp,C
                                           ; SOURCE LINE # 213
00D2 A200    R     MOV     C,temp
00D4 92B7          MOV     LEDs_mode,C
                                           ; SOURCE LINE # 214
00D6 200008  R     JB      temp,?C0027
00D9 AF00    R     MOV     R7,treatmenttime
00DB C200    R     CLR     ?_display?BIT
00DD 1100    R     ACALL   _display
00DF 8006          SJMP    ?C0028
00E1         ?C0027:
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 13  

                                           ; SOURCE LINE # 215
00E1 AF00    R     MOV     R7,prog
00E3 D200    R     SETB    ?_display?BIT
00E5 1100    R     ACALL   _display
00E7         ?C0028:
                                           ; SOURCE LINE # 216
00E7 C200    R     CLR     modepressedflag
                                           ; SOURCE LINE # 217
00E9         ?C0026:
                                           ; SOURCE LINE # 219
00E9 30002E  R     JNB     startstoppressedflag,?C0010
                                           ; SOURCE LINE # 220
                                           ; SOURCE LINE # 221
00EC E500    R     MOV     A,prog
00EE 700A          JNZ     ?C0030
                                           ; SOURCE LINE # 222
                                           ; SOURCE LINE # 223
00F0 D2B7          SETB    LEDs_mode
                                           ; SOURCE LINE # 224
00F2 7F15          MOV     R7,#015H
00F4 C200    R     CLR     ?_display?BIT
00F6 1100    R     ACALL   _display
                                           ; SOURCE LINE # 225
00F8 801E          SJMP    ?C0031
00FA         ?C0030:
                                           ; SOURCE LINE # 228
                                           ; SOURCE LINE # 229
00FA E500    R     MOV     A,treatmenttime
00FC 700A          JNZ     ?C0032
                                           ; SOURCE LINE # 230
                                           ; SOURCE LINE # 231
00FE C2B7          CLR     LEDs_mode
                                           ; SOURCE LINE # 232
0100 7F16          MOV     R7,#016H
0102 C200    R     CLR     ?_display?BIT
0104 1100    R     ACALL   _display
                                           ; SOURCE LINE # 233
0106 8010          SJMP    ?C0031
0108         ?C0032:
                                           ; SOURCE LINE # 236
                                           ; SOURCE LINE # 237
0108 E4            CLR     A
0109 F500    R     MOV     intcount,A
010B F500    R     MOV     intcount+01H,A
                                           ; SOURCE LINE # 238
010D F500    R     MOV     totaltime,A
010F 850000  R     MOV     totaltime+01H,treatmenttime
                                           ; SOURCE LINE # 243
0112 D200    R     SETB    startnotstopflag
                                           ; SOURCE LINE # 244
0114 F500    R     MOV     n,A
0116 F500    R     MOV     n+01H,A
                                           ; SOURCE LINE # 245
                                           ; SOURCE LINE # 246
0118         ?C0031:
                                           ; SOURCE LINE # 247
0118 C200    R     CLR     startstoppressedflag
                                           ; SOURCE LINE # 248
                                           ; SOURCE LINE # 249
011A         ?C0010:
                                           ; SOURCE LINE # 259
011A 200002  R     JB      startnotstopflag,$ + 5H
011D 0100    R     AJMP    ?C0008
                                           ; SOURCE LINE # 260
                                           ; SOURCE LINE # 261
011F 1100    R     ACALL   GetDutycycle
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 14  

                                           ; SOURCE LINE # 262
0121 E500    R     MOV     A,dutycycle
0123 FD            MOV     R5,A
0124 33            RLC     A
0125 95E0          SUBB    A,ACC
0127 FC            MOV     R4,A
0128 AE00    R     MOV     R6,timecounthalfsec
012A AF00    R     MOV     R7,timecounthalfsec+01H
012C 1100    E     ACALL   ?C?SIDIV
012E ED            MOV     A,R5
012F 4C            ORL     A,R4
0130 6006          JZ      ?C0036
0132 ED            MOV     A,R5
0133 6401          XRL     A,#01H
0135 4C            ORL     A,R4
0136 7004          JNZ     ?C0035
0138         ?C0036:
                                           ; SOURCE LINE # 263
                                           ; SOURCE LINE # 264
0138 D200    R     SETB    outflag
                                           ; SOURCE LINE # 265
013A 8002          SJMP    ?C0037
013C         ?C0035:
                                           ; SOURCE LINE # 266
013C C200    R     CLR     outflag
013E         ?C0037:
                                           ; SOURCE LINE # 268
013E 200003  R     JB      uppressedflag,?C0039
0141 30000A  R     JNB     downpressedflag,?C0038
0144         ?C0039:
                                           ; SOURCE LINE # 269
                                           ; SOURCE LINE # 270
0144 75009C  R     MOV     n,#09CH
0147 750040  R     MOV     n+01H,#040H
                                           ; SOURCE LINE # 271
014A C200    R     CLR     uppressedflag
014C C200    R     CLR     downpressedflag
                                           ; SOURCE LINE # 272
014E         ?C0038:
                                           ; SOURCE LINE # 274
014E 30000A  R     JNB     modepressedflag,?C0040
                                           ; SOURCE LINE # 275
                                           ; SOURCE LINE # 276
0151 B2B7          CPL     LEDs_mode
                                           ; SOURCE LINE # 277
0153 75009C  R     MOV     n,#09CH
0156 750040  R     MOV     n+01H,#040H
                                           ; SOURCE LINE # 278
0159 C200    R     CLR     modepressedflag
                                           ; SOURCE LINE # 279
015B         ?C0040:
                                           ; SOURCE LINE # 283
015B 200004  R     JB      startstoppressedflag,?C0042
015E E500    R     MOV     A,treatmenttime
0160 7025          JNZ     ?C0041
0162         ?C0042:
                                           ; SOURCE LINE # 284
                                           ; SOURCE LINE # 285
0162 C200    R     CLR     outflag
                                           ; SOURCE LINE # 286
0164 C200    R     CLR     modepressedflag
0166 C200    R     CLR     uppressedflag
0168 C200    R     CLR     downpressedflag
016A C200    R     CLR     startstoppressedflag
                                           ; SOURCE LINE # 287
016C C200    R     CLR     startnotstopflag
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 15  

                                           ; SOURCE LINE # 288
016E E500    R     MOV     A,treatmenttime
0170 7002          JNZ     ?C0043
                                           ; SOURCE LINE # 289
                                           ; SOURCE LINE # 290
0172 F500    R     MOV     prog,A
                                           ; SOURCE LINE # 291
0174         ?C0043:
                                           ; SOURCE LINE # 292
0174 20B708        JB      LEDs_mode,?C0044
0177 AF00    R     MOV     R7,treatmenttime
0179 C200    R     CLR     ?_display?BIT
017B 1100    R     ACALL   _display
017D 0100    R     AJMP    ?C0008
017F         ?C0044:
                                           ; SOURCE LINE # 293
017F AF00    R     MOV     R7,prog
0181 D200    R     SETB    ?_display?BIT
0183 1100    R     ACALL   _display
                                           ; SOURCE LINE # 294
0185 0100    R     AJMP    ?C0008
0187         ?C0041:
                                           ; SOURCE LINE # 298
                                           ; SOURCE LINE # 299
0187 D3            SETB    C
0188 E500    R     MOV     A,n+01H
018A 9420          SUBB    A,#020H
018C E500    R     MOV     A,n
018E 944E          SUBB    A,#04EH
0190 401D          JC      ?C0047
                                           ; SOURCE LINE # 301
                                           ; SOURCE LINE # 302
0192 C200    R     CLR     displayrunning
                                           ; SOURCE LINE # 303
0194 20B708        JB      LEDs_mode,?C0048
0197 AF00    R     MOV     R7,treatmenttime
0199 C200    R     CLR     ?_display?BIT
019B 1100    R     ACALL   _display
019D 8006          SJMP    ?C0049
019F         ?C0048:
                                           ; SOURCE LINE # 304
019F AF00    R     MOV     R7,prog
01A1 D200    R     SETB    ?_display?BIT
01A3 1100    R     ACALL   _display
01A5         ?C0049:
                                           ; SOURCE LINE # 305
01A5 E500    R     MOV     A,n+01H
01A7 1500    R     DEC     n+01H
01A9 7002          JNZ     ?C0180
01AB 1500    R     DEC     n
01AD         ?C0180:
                                           ; SOURCE LINE # 306
01AD 0100    R     AJMP    ?C0008
01AF         ?C0047:
                                           ; SOURCE LINE # 307
01AF D200    R     SETB    displayrunning
                                           ; SOURCE LINE # 308
                                           ; SOURCE LINE # 309
                                           ; SOURCE LINE # 310
01B1 0100    R     AJMP    ?C0008
                                           ; SOURCE LINE # 311
01B3 22            RET     
             ; FUNCTION main (END)

             ; FUNCTION timer0int (BEGIN)
0000 C0E0          PUSH    ACC
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 16  

0002 C0F0          PUSH    B
0004 C0D0          PUSH    PSW
0006 75D008        MOV     PSW,#08H
                                           ; SOURCE LINE # 316
                                           ; SOURCE LINE # 318
0009 0500    R     INC     intcount+01H
000B E500    R     MOV     A,intcount+01H
000D 7002          JNZ     ?C0181
000F 0500    R     INC     intcount
0011         ?C0181:
                                           ; SOURCE LINE # 319
0011 30002A  R     JNB     startnotstopflag,?C0052
0014 D3            SETB    C
0015 E500    R     MOV     A,intcount+01H
0017 94A2          SUBB    A,#0A2H
0019 E500    R     MOV     A,intcount
001B 6480          XRL     A,#080H
001D 9487          SUBB    A,#087H
001F 401D          JC      ?C0052
                                           ; SOURCE LINE # 320
                                           ; SOURCE LINE # 321
0021 E4            CLR     A
0022 F500    R     MOV     intcount,A
0024 F500    R     MOV     intcount+01H,A
                                           ; SOURCE LINE # 322
0026 0500    R     INC     timecounthalfsec+01H
0028 E500    R     MOV     A,timecounthalfsec+01H
002A 7002          JNZ     ?C0182
002C 0500    R     INC     timecounthalfsec
002E         ?C0182:
                                           ; SOURCE LINE # 323
002E AE00    R     MOV     R6,timecounthalfsec
0030 AF00    R     MOV     R7,timecounthalfsec+01H
0032 7C00          MOV     R4,#00H
0034 7D78          MOV     R5,#078H
0036 1100    E     ACALL   ?C?SIDIV
0038 ED            MOV     A,R5
0039 4C            ORL     A,R4
003A 7002          JNZ     ?C0052
003C 1500    R     DEC     treatmenttime
                                           ; SOURCE LINE # 324
003E         ?C0052:
                                           ; SOURCE LINE # 326
003E 200002  R     JB      displayrunning,$ + 5H
0041 0100    R     AJMP    ?C0054
                                           ; SOURCE LINE # 327
                                           ; SOURCE LINE # 328
0043 D296          SETB    LD1_g
                                           ; SOURCE LINE # 329
0045 D297          SETB    LD2_bc
                                           ; SOURCE LINE # 330
0047 C3            CLR     C
0048 E500    R     MOV     A,intcount+01H
004A 94F4          SUBB    A,#0F4H
004C E500    R     MOV     A,intcount
004E 6480          XRL     A,#080H
0050 9480          SUBB    A,#080H
0052 5005          JNC     ?C0055
0054 7590FD        MOV     LDs,#0FDH
0057 806F          SJMP    ?C0056
0059         ?C0055:
                                           ; SOURCE LINE # 331
0059 C3            CLR     C
005A E500    R     MOV     A,intcount+01H
005C 94E8          SUBB    A,#0E8H
005E E500    R     MOV     A,intcount
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 17  

0060 6480          XRL     A,#080H
0062 9481          SUBB    A,#081H
0064 5005          JNC     ?C0057
0066 7590FE        MOV     LDs,#0FEH
0069 805D          SJMP    ?C0056
006B         ?C0057:
                                           ; SOURCE LINE # 332
006B C3            CLR     C
006C E500    R     MOV     A,intcount+01H
006E 94DC          SUBB    A,#0DCH
0070 E500    R     MOV     A,intcount
0072 6480          XRL     A,#080H
0074 9482          SUBB    A,#082H
0076 5005          JNC     ?C0059
0078 7590BF        MOV     LDs,#0BFH
007B 804B          SJMP    ?C0056
007D         ?C0059:
                                           ; SOURCE LINE # 333
007D C3            CLR     C
007E E500    R     MOV     A,intcount+01H
0080 94D0          SUBB    A,#0D0H
0082 E500    R     MOV     A,intcount
0084 6480          XRL     A,#080H
0086 9483          SUBB    A,#083H
0088 5005          JNC     ?C0061
008A 7590EF        MOV     LDs,#0EFH
008D 8039          SJMP    ?C0056
008F         ?C0061:
                                           ; SOURCE LINE # 334
008F C3            CLR     C
0090 E500    R     MOV     A,intcount+01H
0092 94C4          SUBB    A,#0C4H
0094 E500    R     MOV     A,intcount
0096 6480          XRL     A,#080H
0098 9484          SUBB    A,#084H
009A 5005          JNC     ?C0063
009C 7590F7        MOV     LDs,#0F7H
009F 8027          SJMP    ?C0056
00A1         ?C0063:
                                           ; SOURCE LINE # 335
00A1 C3            CLR     C
00A2 E500    R     MOV     A,intcount+01H
00A4 94B8          SUBB    A,#0B8H
00A6 E500    R     MOV     A,intcount
00A8 6480          XRL     A,#080H
00AA 9485          SUBB    A,#085H
00AC 5005          JNC     ?C0065
00AE 7590FB        MOV     LDs,#0FBH
00B1 8015          SJMP    ?C0056
00B3         ?C0065:
                                           ; SOURCE LINE # 336
00B3 C3            CLR     C
00B4 E500    R     MOV     A,intcount+01H
00B6 94AC          SUBB    A,#0ACH
00B8 E500    R     MOV     A,intcount
00BA 6480          XRL     A,#080H
00BC 9486          SUBB    A,#086H
00BE 5005          JNC     ?C0067
00C0 7590BF        MOV     LDs,#0BFH
00C3 8003          SJMP    ?C0056
00C5         ?C0067:
                                           ; SOURCE LINE # 337
00C5 7590DF        MOV     LDs,#0DFH
00C8         ?C0056:
                                           ; SOURCE LINE # 338
00C8 C200    R     CLR     displayrunning
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 18  

                                           ; SOURCE LINE # 339
00CA         ?C0054:
                                           ; SOURCE LINE # 341
00CA A2B5          MOV     C,mode
00CC 300001  R     JNB     mode_old,?C0183
00CF B3            CPL     C
00D0         ?C0183:
00D0 4018          JC      ?C0070
00D2 A2B3          MOV     C,up
00D4 300001  R     JNB     up_old,?C0184
00D7 B3            CPL     C
00D8         ?C0184:
00D8 4010          JC      ?C0070
00DA A2B4          MOV     C,down
00DC 300001  R     JNB     down_old,?C0185
00DF B3            CPL     C
00E0         ?C0185:
00E0 4008          JC      ?C0070
00E2 A2B2          MOV     C,startstop
00E4 300001  R     JNB     startstop_old,?C0186
00E7 B3            CPL     C
00E8         ?C0186:
00E8 5015          JNC     ?C0069
00EA         ?C0070:
                                           ; SOURCE LINE # 342
                                           ; SOURCE LINE # 343
00EA A2B5          MOV     C,mode
00EC 9200    R     MOV     mode_old,C
                                           ; SOURCE LINE # 344
00EE A2B3          MOV     C,up
00F0 9200    R     MOV     up_old,C
                                           ; SOURCE LINE # 345
00F2 A2B4          MOV     C,down
00F4 9200    R     MOV     down_old,C
                                           ; SOURCE LINE # 346
00F6 A2B2          MOV     C,startstop
00F8 9200    R     MOV     startstop_old,C
                                           ; SOURCE LINE # 347
00FA E4            CLR     A
00FB F500    R     MOV     antidender,A
00FD F500    R     MOV     antidender+01H,A
                                           ; SOURCE LINE # 348
00FF         ?C0069:
                                           ; SOURCE LINE # 350
00FF A2B5          MOV     C,mode
0101 300001  R     JNB     mode_old,?C0187
0104 B3            CPL     C
0105         ?C0187:
0105 406E          JC      ?C0071
0107 A2B3          MOV     C,up
0109 300001  R     JNB     up_old,?C0188
010C B3            CPL     C
010D         ?C0188:
010D 4066          JC      ?C0071
010F A2B4          MOV     C,down
0111 300001  R     JNB     down_old,?C0189
0114 B3            CPL     C
0115         ?C0189:
0115 405E          JC      ?C0071
0117 A2B2          MOV     C,startstop
0119 300001  R     JNB     startstop_old,?C0190
011C B3            CPL     C
011D         ?C0190:
011D 4056          JC      ?C0071
                                           ; SOURCE LINE # 351
                                           ; SOURCE LINE # 352
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 19  

011F 0500    R     INC     antidender+01H
0121 E500    R     MOV     A,antidender+01H
0123 7002          JNZ     ?C0191
0125 0500    R     INC     antidender
0127         ?C0191:
                                           ; SOURCE LINE # 353
0127 E500    R     MOV     A,antidender+01H
0129 6428          XRL     A,#028H
012B 4500    R     ORL     A,antidender
012D 7016          JNZ     ?C0072
                                           ; SOURCE LINE # 354
                                           ; SOURCE LINE # 355
012F A200    R     MOV     C,mode_old
0131 B3            CPL     C
0132 9200    R     MOV     modepressedflag,C
                                           ; SOURCE LINE # 356
0134 A200    R     MOV     C,up_old
0136 B3            CPL     C
0137 9200    R     MOV     uppressedflag,C
                                           ; SOURCE LINE # 357
0139 A200    R     MOV     C,down_old
013B B3            CPL     C
013C 9200    R     MOV     downpressedflag,C
                                           ; SOURCE LINE # 358
013E A200    R     MOV     C,startstop_old
0140 B3            CPL     C
0141 9200    R     MOV     startstoppressedflag,C
                                           ; SOURCE LINE # 359
0143 8030          SJMP    ?C0071
0145         ?C0072:
                                           ; SOURCE LINE # 360
0145 E500    R     MOV     A,antidender+01H
0147 B49411        CJNE    A,#094H,?C0074
014A E500    R     MOV     A,antidender
014C B4110C        CJNE    A,#011H,?C0074
                                           ; SOURCE LINE # 361
                                           ; SOURCE LINE # 362
014F A200    R     MOV     C,up_old
0151 B3            CPL     C
0152 9200    R     MOV     uppressedflag,C
                                           ; SOURCE LINE # 363
0154 A200    R     MOV     C,down_old
0156 B3            CPL     C
0157 9200    R     MOV     downpressedflag,C
                                           ; SOURCE LINE # 364
0159 801A          SJMP    ?C0071
015B         ?C0074:
                                           ; SOURCE LINE # 366
015B E500    R     MOV     A,antidender+01H
015D B4EC15        CJNE    A,#0ECH,?C0071
0160 E500    R     MOV     A,antidender
0162 B41310        CJNE    A,#013H,?C0071
                                           ; SOURCE LINE # 367
                                           ; SOURCE LINE # 368
0165 A200    R     MOV     C,up_old
0167 B3            CPL     C
0168 9200    R     MOV     uppressedflag,C
                                           ; SOURCE LINE # 369
016A A200    R     MOV     C,down_old
016C B3            CPL     C
016D 9200    R     MOV     downpressedflag,C
                                           ; SOURCE LINE # 370
016F 750011  R     MOV     antidender,#011H
0172 750094  R     MOV     antidender+01H,#094H
                                           ; SOURCE LINE # 371
                                           ; SOURCE LINE # 372
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 20  

0175         ?C0071:
                                           ; SOURCE LINE # 374
0175 E500    R     MOV     A,outpcount+01H
0177 4500    R     ORL     A,outpcount
0179 7013          JNZ     ?C0077
                                           ; SOURCE LINE # 375
                                           ; SOURCE LINE # 376
017B 30000A  R     JNB     outflag,?C0078
                                           ; SOURCE LINE # 377
                                           ; SOURCE LINE # 378
017E 0500    R     INC     outpcount+01H
0180 E500    R     MOV     A,outpcount+01H
0182 7002          JNZ     ?C0194
0184 0500    R     INC     outpcount
0186         ?C0194:
                                           ; SOURCE LINE # 379
0186 804A          SJMP    ?C0090
0188         ?C0078:
                                           ; SOURCE LINE # 380
0188 D2B0          SETB    posout
018A D2B1          SETB    negout
                                           ; SOURCE LINE # 381
018C 8044          SJMP    ?C0090
018E         ?C0077:
                                           ; SOURCE LINE # 384
                                           ; SOURCE LINE # 385
018E 0500    R     INC     outpcount+01H
0190 E500    R     MOV     A,outpcount+01H
0192 7002          JNZ     ?C0195
0194 0500    R     INC     outpcount
0196         ?C0195:
                                           ; SOURCE LINE # 386
0196 E500    R     MOV     A,outpcount+01H
0198 6402          XRL     A,#02H
019A 4500    R     ORL     A,outpcount
019C 7004          JNZ     ?C0081
                                           ; SOURCE LINE # 387
                                           ; SOURCE LINE # 388
019E D2B0          SETB    posout
                                           ; SOURCE LINE # 389
01A0 8030          SJMP    ?C0090
01A2         ?C0081:
                                           ; SOURCE LINE # 391
01A2 E500    R     MOV     A,outpcount+01H
01A4 6403          XRL     A,#03H
01A6 4500    R     ORL     A,outpcount
01A8 7004          JNZ     ?C0083
                                           ; SOURCE LINE # 392
                                           ; SOURCE LINE # 393
01AA C2B0          CLR     posout
                                           ; SOURCE LINE # 394
01AC 8024          SJMP    ?C0090
01AE         ?C0083:
                                           ; SOURCE LINE # 396
01AE E500    R     MOV     A,outpcount+01H
01B0 6414          XRL     A,#014H
01B2 4500    R     ORL     A,outpcount
01B4 7004          JNZ     ?C0085
                                           ; SOURCE LINE # 397
                                           ; SOURCE LINE # 398
01B6 D2B1          SETB    negout
                                           ; SOURCE LINE # 399
01B8 8018          SJMP    ?C0090
01BA         ?C0085:
                                           ; SOURCE LINE # 401
01BA E500    R     MOV     A,outpcount+01H
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 21  

01BC 6415          XRL     A,#015H
01BE 4500    R     ORL     A,outpcount
01C0 7004          JNZ     ?C0087
                                           ; SOURCE LINE # 402
                                           ; SOURCE LINE # 403
01C2 C2B1          CLR     negout
                                           ; SOURCE LINE # 404
01C4 800C          SJMP    ?C0090
01C6         ?C0087:
                                           ; SOURCE LINE # 406
01C6 E500    R     MOV     A,outpcount+01H
01C8 6425          XRL     A,#025H
01CA 4500    R     ORL     A,outpcount
01CC 7004          JNZ     ?C0090
                                           ; SOURCE LINE # 407
                                           ; SOURCE LINE # 408
01CE F500    R     MOV     outpcount,A
01D0 F500    R     MOV     outpcount+01H,A
                                           ; SOURCE LINE # 409
                                           ; SOURCE LINE # 410
                                           ; SOURCE LINE # 411
01D2         ?C0090:
01D2 D0D0          POP     PSW
01D4 D0F0          POP     B
01D6 D0E0          POP     ACC
01D8 32            RETI    
             ; FUNCTION timer0int (END)

             ; FUNCTION _display (BEGIN)
;---- Variable 'display' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 413
                                           ; SOURCE LINE # 414
                                           ; SOURCE LINE # 418
0000 EF            MOV     A,R7
0001 B41700        CJNE    A,#017H,?C0196
0004         ?C0196:
0004 4002          JC      $ + 4H
0006 0100    R     AJMP    ?C0132
0008 900000  R     MOV     DPTR,#?C0197
000B 25E0          ADD     A,ACC
000D 73            JMP     @A+DPTR
000E         ?C0197:
000E 0100    R     AJMP    ?C0092
0010 0100    R     AJMP    ?C0095
0012 0100    R     AJMP    ?C0096
0014 0100    R     AJMP    ?C0097
0016 0100    R     AJMP    ?C0098
0018 0100    R     AJMP    ?C0099
001A 0100    R     AJMP    ?C0100
001C 0100    R     AJMP    ?C0101
001E 0100    R     AJMP    ?C0102
0020 0100    R     AJMP    ?C0103
0022 0100    R     AJMP    ?C0104
0024 0100    R     AJMP    ?C0107
0026 0100    R     AJMP    ?C0110
0028 0100    R     AJMP    ?C0113
002A 0100    R     AJMP    ?C0116
002C 0100    R     AJMP    ?C0119
002E 0100    R     AJMP    ?C0122
0030 0100    R     AJMP    ?C0123
0032 0100    R     AJMP    ?C0124
0034 0100    R     AJMP    ?C0125
0036 0100    R     AJMP    ?C0132
0038 0100    R     AJMP    ?C0127
003A 0100    R     AJMP    ?C0130
                                           ; SOURCE LINE # 419
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 22  

                                           ; SOURCE LINE # 420
003C         ?C0092:
003C 200004  R     JB      mode,?C0093
003F 7590C0        MOV     LDs,#0C0H
0042 22            RET     
0043         ?C0093:
                                           ; SOURCE LINE # 421
0043 7590F7        MOV     LDs,#0F7H
                                           ; SOURCE LINE # 422
0046 22            RET     
                                           ; SOURCE LINE # 424
0047         ?C0095:
0047 7590FA        MOV     LDs,#0FAH
004A 22            RET     
                                           ; SOURCE LINE # 425
004B         ?C0096:
004B 7590A4        MOV     LDs,#0A4H
004E 22            RET     
                                           ; SOURCE LINE # 426
004F         ?C0097:
004F 7590B0        MOV     LDs,#0B0H
0052 22            RET     
                                           ; SOURCE LINE # 427
0053         ?C0098:
0053 75909A        MOV     LDs,#09AH
0056 22            RET     
                                           ; SOURCE LINE # 428
0057         ?C0099:
0057 759091        MOV     LDs,#091H
005A 22            RET     
                                           ; SOURCE LINE # 429
005B         ?C0100:
005B 759081        MOV     LDs,#081H
005E 22            RET     
                                           ; SOURCE LINE # 430
005F         ?C0101:
005F 7590F8        MOV     LDs,#0F8H
0062 22            RET     
                                           ; SOURCE LINE # 431
0063         ?C0102:
0063 759080        MOV     LDs,#080H
0066 22            RET     
                                           ; SOURCE LINE # 432
0067         ?C0103:
0067 759090        MOV     LDs,#090H
006A 22            RET     
                                           ; SOURCE LINE # 433
006B         ?C0104:
                                           ; SOURCE LINE # 434
006B 200004  R     JB      mode,?C0105
006E 759040        MOV     LDs,#040H
0071 22            RET     
0072         ?C0105:
                                           ; SOURCE LINE # 435
0072 759088        MOV     LDs,#088H
                                           ; SOURCE LINE # 436
0075 22            RET     
                                           ; SOURCE LINE # 437
0076         ?C0107:
                                           ; SOURCE LINE # 438
0076 200004  R     JB      mode,?C0108
0079 75907A        MOV     LDs,#07AH
007C 22            RET     
007D         ?C0108:
                                           ; SOURCE LINE # 439
007D 759083        MOV     LDs,#083H
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 23  

                                           ; SOURCE LINE # 440
0080 22            RET     
                                           ; SOURCE LINE # 441
0081         ?C0110:
                                           ; SOURCE LINE # 442
0081 200004  R     JB      mode,?C0111
0084 759024        MOV     LDs,#024H
0087 22            RET     
0088         ?C0111:
                                           ; SOURCE LINE # 443
0088 7590C5        MOV     LDs,#0C5H
                                           ; SOURCE LINE # 444
008B 22            RET     
                                           ; SOURCE LINE # 445
008C         ?C0113:
                                           ; SOURCE LINE # 446
008C 200004  R     JB      mode,?C0114
008F 759030        MOV     LDs,#030H
0092 22            RET     
0093         ?C0114:
                                           ; SOURCE LINE # 447
0093 7590A2        MOV     LDs,#0A2H
                                           ; SOURCE LINE # 448
0096 22            RET     
                                           ; SOURCE LINE # 449
0097         ?C0116:
                                           ; SOURCE LINE # 450
0097 200004  R     JB      mode,?C0117
009A 75901A        MOV     LDs,#01AH
009D 22            RET     
009E         ?C0117:
                                           ; SOURCE LINE # 451
009E 759085        MOV     LDs,#085H
                                           ; SOURCE LINE # 452
00A1 22            RET     
                                           ; SOURCE LINE # 453
00A2         ?C0119:
                                           ; SOURCE LINE # 454
00A2 200004  R     JB      mode,?C0120
00A5 759011        MOV     LDs,#011H
00A8 22            RET     
00A9         ?C0120:
                                           ; SOURCE LINE # 455
00A9 75908D        MOV     LDs,#08DH
                                           ; SOURCE LINE # 456
00AC 22            RET     
                                           ; SOURCE LINE # 457
00AD         ?C0122:
00AD 759001        MOV     LDs,#01H
00B0 22            RET     
                                           ; SOURCE LINE # 458
00B1         ?C0123:
00B1 759078        MOV     LDs,#078H
00B4 22            RET     
                                           ; SOURCE LINE # 459
00B5         ?C0124:
00B5 E4            CLR     A
00B6 F590          MOV     LDs,A
00B8 22            RET     
                                           ; SOURCE LINE # 460
00B9         ?C0125:
00B9 759010        MOV     LDs,#010H
00BC 22            RET     
                                           ; SOURCE LINE # 462
00BD         ?C0127:
                                           ; SOURCE LINE # 465
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 24  

00BD 200031  R     JB      uppressedflag,?C0132
00C0 20002E  R     JB      downpressedflag,?C0132
                                           ; SOURCE LINE # 466
                                           ; SOURCE LINE # 467
00C3 7590FF        MOV     LDs,#0FFH
00C6 7F70          MOV     R7,#070H
00C8 7E17          MOV     R6,#017H
00CA 1100    R     ACALL   _delay
                                           ; SOURCE LINE # 468
00CC 7590F7        MOV     LDs,#0F7H
00CF 7F88          MOV     R7,#088H
00D1 7E13          MOV     R6,#013H
00D3 1100    R     ACALL   _delay
                                           ; SOURCE LINE # 469
00D5 80E6          SJMP    ?C0127
                                           ; SOURCE LINE # 470
                                           ; SOURCE LINE # 472
00D7         ?C0130:
                                           ; SOURCE LINE # 475
00D7 200017  R     JB      uppressedflag,?C0132
00DA 200014  R     JB      downpressedflag,?C0132
                                           ; SOURCE LINE # 476
                                           ; SOURCE LINE # 477
00DD 7590FF        MOV     LDs,#0FFH
00E0 7F70          MOV     R7,#070H
00E2 7E17          MOV     R6,#017H
00E4 1100    R     ACALL   _delay
                                           ; SOURCE LINE # 478
00E6 7590C0        MOV     LDs,#0C0H
00E9 7F88          MOV     R7,#088H
00EB 7E13          MOV     R6,#013H
00ED 1100    R     ACALL   _delay
                                           ; SOURCE LINE # 479
00EF 80E6          SJMP    ?C0130
                                           ; SOURCE LINE # 480
                                           ; SOURCE LINE # 481
                                           ; SOURCE LINE # 482
00F1         ?C0132:
00F1 22            RET     
             ; FUNCTION _display (END)

             ; FUNCTION GetDutycycle (BEGIN)
;---- Variable 'para2' assigned to Register 'R3' ----
;---- Variable 'para3' assigned to Register 'R2' ----
;---- Variable 'para1' assigned to Register 'R1' ----
                                           ; SOURCE LINE # 485
                                           ; SOURCE LINE # 486
                                           ; SOURCE LINE # 495
0000 E500    R     MOV     A,prog
0002 75F002        MOV     B,#02H
0005 1100    E     ACALL   ?C?SCDIV
0007 AFF0          MOV     R7,B
0009 EF            MOV     A,R7
000A 7008          JNZ     ?C0133
000C 790A          MOV     R1,#0AH
000E 7B07          MOV     R3,#07H
0010 7A05          MOV     R2,#05H
0012 8006          SJMP    ?C0134
0014         ?C0133:
                                           ; SOURCE LINE # 496
0014 7909          MOV     R1,#09H
0016 7B06          MOV     R3,#06H
0018 7A03          MOV     R2,#03H
001A         ?C0134:
                                           ; SOURCE LINE # 498
001A C3            CLR     C
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 25  

001B E500    R     MOV     A,prog
001D 6480          XRL     A,#080H
001F 948A          SUBB    A,#08AH
0021 5008          JNC     ?C0135
0023 C3            CLR     C
0024 740C          MOV     A,#0CH
0026 9500    R     SUBB    A,prog
0028 F500    R     MOV     dutycycle,A
002A 22            RET     
002B         ?C0135:
                                           ; SOURCE LINE # 500
002B C3            CLR     C
002C E500    R     MOV     A,prog
002E 6480          XRL     A,#080H
0030 948C          SUBB    A,#08CH
0032 505B          JNC     ?C0137
                                           ; SOURCE LINE # 501
                                           ; SOURCE LINE # 502
0034 AE00    R     MOV     R6,totaltime
0036 AF00    R     MOV     R7,totaltime+01H
0038 7C00          MOV     R4,#00H
003A 7D18          MOV     R5,#018H
003C 1100    E     ACALL   ?C?IMUL
003E C3            CLR     C
003F E500    R     MOV     A,timecounthalfsec+01H
0041 9F            SUBB    A,R7
0042 E500    R     MOV     A,timecounthalfsec
0044 9E            SUBB    A,R6
0045 5003          JNC     ?C0138
0047 8900    R     MOV     dutycycle,R1
0049 22            RET     
004A         ?C0138:
                                           ; SOURCE LINE # 503
004A AE00    R     MOV     R6,totaltime
004C AF00    R     MOV     R7,totaltime+01H
004E 7C00          MOV     R4,#00H
0050 7D24          MOV     R5,#024H
0052 1100    E     ACALL   ?C?IMUL
0054 C3            CLR     C
0055 E500    R     MOV     A,timecounthalfsec+01H
0057 9F            SUBB    A,R7
0058 E500    R     MOV     A,timecounthalfsec
005A 9E            SUBB    A,R6
005B 5003          JNC     ?C0140
005D 8B00    R     MOV     dutycycle,R3
005F 22            RET     
0060         ?C0140:
                                           ; SOURCE LINE # 504
0060 AE00    R     MOV     R6,totaltime
0062 AF00    R     MOV     R7,totaltime+01H
0064 7C00          MOV     R4,#00H
0066 7D60          MOV     R5,#060H
0068 1100    E     ACALL   ?C?IMUL
006A C3            CLR     C
006B E500    R     MOV     A,timecounthalfsec+01H
006D 9F            SUBB    A,R7
006E E500    R     MOV     A,timecounthalfsec
0070 9E            SUBB    A,R6
0071 5003          JNC     ?C0142
0073 8A00    R     MOV     dutycycle,R2
0075 22            RET     
0076         ?C0142:
                                           ; SOURCE LINE # 505
0076 AE00    R     MOV     R6,totaltime
0078 AF00    R     MOV     R7,totaltime+01H
007A 7C00          MOV     R4,#00H
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 26  

007C 7D6C          MOV     R5,#06CH
007E 1100    E     ACALL   ?C?IMUL
0080 C3            CLR     C
0081 E500    R     MOV     A,timecounthalfsec+01H
0083 9F            SUBB    A,R7
0084 E500    R     MOV     A,timecounthalfsec
0086 9E            SUBB    A,R6
0087 5003          JNC     ?C0144
0089 8B00    R     MOV     dutycycle,R3
008B 22            RET     
008C         ?C0144:
                                           ; SOURCE LINE # 506
008C 8900    R     MOV     dutycycle,R1
                                           ; SOURCE LINE # 507
008E 22            RET     
008F         ?C0137:
                                           ; SOURCE LINE # 509
008F C3            CLR     C
0090 E500    R     MOV     A,prog
0092 6480          XRL     A,#080H
0094 948E          SUBB    A,#08EH
0096 502F          JNC     ?C0147
                                           ; SOURCE LINE # 510
                                           ; SOURCE LINE # 511
0098 AE00    R     MOV     R6,totaltime
009A AF00    R     MOV     R7,totaltime+01H
009C 7C00          MOV     R4,#00H
009E 7D24          MOV     R5,#024H
00A0 1100    E     ACALL   ?C?IMUL
00A2 C3            CLR     C
00A3 E500    R     MOV     A,timecounthalfsec+01H
00A5 9F            SUBB    A,R7
00A6 E500    R     MOV     A,timecounthalfsec
00A8 9E            SUBB    A,R6
00A9 5003          JNC     ?C0148
00AB 8900    R     MOV     dutycycle,R1
00AD 22            RET     
00AE         ?C0148:
                                           ; SOURCE LINE # 512
00AE AE00    R     MOV     R6,totaltime
00B0 AF00    R     MOV     R7,totaltime+01H
00B2 7C00          MOV     R4,#00H
00B4 7D48          MOV     R5,#048H
00B6 1100    E     ACALL   ?C?IMUL
00B8 C3            CLR     C
00B9 E500    R     MOV     A,timecounthalfsec+01H
00BB 9F            SUBB    A,R7
00BC E500    R     MOV     A,timecounthalfsec
00BE 9E            SUBB    A,R6
00BF 5003          JNC     ?C0150
00C1 8B00    R     MOV     dutycycle,R3
00C3 22            RET     
00C4         ?C0150:
                                           ; SOURCE LINE # 513
00C4 8A00    R     MOV     dutycycle,R2
                                           ; SOURCE LINE # 514
00C6 22            RET     
00C7         ?C0147:
                                           ; SOURCE LINE # 516
                                           ; SOURCE LINE # 517
00C7 AE00    R     MOV     R6,totaltime
00C9 AF00    R     MOV     R7,totaltime+01H
00CB 7C00          MOV     R4,#00H
00CD 7D18          MOV     R5,#018H
00CF 1100    E     ACALL   ?C?IMUL
00D1 C3            CLR     C
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 27  

00D2 E500    R     MOV     A,timecounthalfsec+01H
00D4 9F            SUBB    A,R7
00D5 E500    R     MOV     A,timecounthalfsec
00D7 9E            SUBB    A,R6
00D8 5003          JNC     ?C0153
00DA 8B00    R     MOV     dutycycle,R3
00DC 22            RET     
00DD         ?C0153:
                                           ; SOURCE LINE # 518
00DD AE00    R     MOV     R6,totaltime
00DF AF00    R     MOV     R7,totaltime+01H
00E1 7C00          MOV     R4,#00H
00E3 7D30          MOV     R5,#030H
00E5 1100    E     ACALL   ?C?IMUL
00E7 C3            CLR     C
00E8 E500    R     MOV     A,timecounthalfsec+01H
00EA 9F            SUBB    A,R7
00EB E500    R     MOV     A,timecounthalfsec
00ED 9E            SUBB    A,R6
00EE 5003          JNC     ?C0155
00F0 8A00    R     MOV     dutycycle,R2
00F2 22            RET     
00F3         ?C0155:
                                           ; SOURCE LINE # 519
00F3 AE00    R     MOV     R6,totaltime
00F5 AF00    R     MOV     R7,totaltime+01H
00F7 7C00          MOV     R4,#00H
00F9 7D48          MOV     R5,#048H
00FB 1100    E     ACALL   ?C?IMUL
00FD C3            CLR     C
00FE E500    R     MOV     A,timecounthalfsec+01H
0100 9F            SUBB    A,R7
0101 E500    R     MOV     A,timecounthalfsec
0103 9E            SUBB    A,R6
0104 5003          JNC     ?C0157
0106 8B00    R     MOV     dutycycle,R3
0108 22            RET     
0109         ?C0157:
                                           ; SOURCE LINE # 520
0109 AE00    R     MOV     R6,totaltime
010B AF00    R     MOV     R7,totaltime+01H
010D 7C00          MOV     R4,#00H
010F 7D60          MOV     R5,#060H
0111 1100    E     ACALL   ?C?IMUL
0113 C3            CLR     C
0114 E500    R     MOV     A,timecounthalfsec+01H
0116 9F            SUBB    A,R7
0117 E500    R     MOV     A,timecounthalfsec
0119 9E            SUBB    A,R6
011A 5003          JNC     ?C0159
011C 8A00    R     MOV     dutycycle,R2
011E 22            RET     
011F         ?C0159:
                                           ; SOURCE LINE # 521
011F 8B00    R     MOV     dutycycle,R3
                                           ; SOURCE LINE # 522
                                           ; SOURCE LINE # 523
0121         ?C0161:
0121 22            RET     
             ; FUNCTION GetDutycycle (END)

             ; FUNCTION testroutine (BEGIN)
                                           ; SOURCE LINE # 525
                                           ; SOURCE LINE # 526
                                           ; SOURCE LINE # 527
0000 E4            CLR     A
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 28  

0001 F500    R     MOV     counter,A
                                           ; SOURCE LINE # 528
0003 7590FF        MOV     LDs,#0FFH
                                           ; SOURCE LINE # 529
0006 C200    R     CLR     modepressedflag
0008 C200    R     CLR     startstoppressedflag
000A         ?C0162:
                                           ; SOURCE LINE # 530
                                           ; SOURCE LINE # 531
                                           ; SOURCE LINE # 532
000A 300022  R     JNB     startstoppressedflag,?C0164
                                           ; SOURCE LINE # 533
                                           ; SOURCE LINE # 534
000D E4            CLR     A
000E F500    R     MOV     counter,A
0010         ?C0165:
                                           ; SOURCE LINE # 535
                                           ; SOURCE LINE # 536
0010 7F20          MOV     R7,#020H
0012 7E4E          MOV     R6,#04EH
0014 1100    R     ACALL   _delay
0016 7400    R     MOV     A,#segmentarray
0018 2500    R     ADD     A,counter
001A F8            MOV     R0,A
001B E6            MOV     A,@R0
001C F590          MOV     LDs,A
                                           ; SOURCE LINE # 537
001E B2B7          CPL     LEDs_mode
                                           ; SOURCE LINE # 538
0020 0500    R     INC     counter
0022 C3            CLR     C
0023 E500    R     MOV     A,counter
0025 6480          XRL     A,#080H
0027 9489          SUBB    A,#089H
0029 40E5          JC      ?C0165
002B         ?C0166:
                                           ; SOURCE LINE # 539
002B B2B7          CPL     LEDs_mode
                                           ; SOURCE LINE # 540
002D C200    R     CLR     startstoppressedflag
                                           ; SOURCE LINE # 541
002F         ?C0164:
                                           ; SOURCE LINE # 544
002F 3000D8  R     JNB     modepressedflag,?C0162
                                           ; SOURCE LINE # 545
                                           ; SOURCE LINE # 546
0032 E4            CLR     A
0033 F500    R     MOV     counter,A
0035         ?C0169:
                                           ; SOURCE LINE # 547
                                           ; SOURCE LINE # 548
0035 7F20          MOV     R7,#020H
0037 7E4E          MOV     R6,#04EH
0039 1100    R     ACALL   _delay
003B 7400    R     MOV     A,#testarray
003D 2500    R     ADD     A,counter
003F F8            MOV     R0,A
0040 E6            MOV     A,@R0
0041 F590          MOV     LDs,A
                                           ; SOURCE LINE # 549
0043 7F20          MOV     R7,#020H
0045 7E4E          MOV     R6,#04EH
0047 1100    R     ACALL   _delay
0049 7590FF        MOV     LDs,#0FFH
                                           ; SOURCE LINE # 550
004C 0500    R     INC     counter
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 29  

004E C3            CLR     C
004F E500    R     MOV     A,counter
0051 6480          XRL     A,#080H
0053 948A          SUBB    A,#08AH
0055 40DE          JC      ?C0169
0057         ?C0170:
                                           ; SOURCE LINE # 551
0057 E4            CLR     A
0058 F500    R     MOV     counter,A
005A         ?C0172:
                                           ; SOURCE LINE # 552
                                           ; SOURCE LINE # 553
005A 7F20          MOV     R7,#020H
005C 7E4E          MOV     R6,#04EH
005E 1100    R     ACALL   _delay
0060 7400    R     MOV     A,#versionarray
0062 2500    R     ADD     A,counter
0064 F8            MOV     R0,A
0065 E6            MOV     A,@R0
0066 FF            MOV     R7,A
0067 C200    R     CLR     ?_display?BIT
0069 1100    R     ACALL   _display
                                           ; SOURCE LINE # 554
006B 7F20          MOV     R7,#020H
006D 7E4E          MOV     R6,#04EH
006F 1100    R     ACALL   _delay
0071 7590FF        MOV     LDs,#0FFH
                                           ; SOURCE LINE # 555
0074 0500    R     INC     counter
0076 C3            CLR     C
0077 E500    R     MOV     A,counter
0079 6480          XRL     A,#080H
007B 9483          SUBB    A,#083H
007D 40DB          JC      ?C0172
007F         ?C0173:
                                           ; SOURCE LINE # 556
007F C200    R     CLR     modepressedflag
0081 C200    R     CLR     uppressedflag
0083 C200    R     CLR     downpressedflag
0085 C200    R     CLR     startstoppressedflag
                                           ; SOURCE LINE # 557
                                           ; SOURCE LINE # 558
                                           ; SOURCE LINE # 559
                                           ; SOURCE LINE # 560
0087         ?C0175:
0087 22            RET     
             ; FUNCTION testroutine (END)

             ; FUNCTION _delay (BEGIN)
;---- Variable 'dl' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 562
                                           ; SOURCE LINE # 563
                                           ; SOURCE LINE # 565
;---- Variable 'n' assigned to Register 'R4/R5' ----
0000 E4            CLR     A
0001 FD            MOV     R5,A
0002 FC            MOV     R4,A
0003         ?C0176:
0003 C3            CLR     C
0004 ED            MOV     A,R5
0005 9F            SUBB    A,R7
0006 EC            MOV     A,R4
0007 9E            SUBB    A,R6
0008 5007          JNC     ?C0179
000A 0D            INC     R5
000B BD0001        CJNE    R5,#00H,?C0198
C51 COMPILER V5.10,  SPIER1                                                                21/01/00  10:49:25  PAGE 30  

000E 0C            INC     R4
000F         ?C0198:
000F 80F2          SJMP    ?C0176
                                           ; SOURCE LINE # 566
0011         ?C0179:
0011 22            RET     
             ; FUNCTION _delay (END)



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1597    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     67       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =     12       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)
