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

📄 main.src

📁 波形发生器 波形发生器
💻 SRC
📖 第 1 页 / 共 3 页
字号:
; {
			; SOURCE LINE # 244
;   unsigned int Pre;
;   if( (input>0 && input<21) || input==0)
			; SOURCE LINE # 246
	MOV  	A,R3
	SETB 	C
	SUBB 	A,#00H
	JC   	?C0057
	MOV  	A,R3
	SUBB 	A,#015H
	JC   	?C0056
?C0057:
	MOV  	A,R3
	JNZ  	?C0055
?C0056:
;   {
			; SOURCE LINE # 247
;     Pre=0;
			; SOURCE LINE # 248
	CLR  	A
	MOV  	R4,A
	MOV  	R5,A
;   }
			; SOURCE LINE # 249
?C0055:
;   if(input>20 && input<91)
			; SOURCE LINE # 250
	MOV  	A,R3
	SETB 	C
	SUBB 	A,#014H
	JC   	?C0058
	MOV  	A,R3
	SUBB 	A,#05BH
	JNC  	?C0058
;   {
			; SOURCE LINE # 251
;     Pre=2*input+20;
			; SOURCE LINE # 252
	MOV  	A,R3
	MOV  	B,#02H
	MUL  	AB
	ADD  	A,#014H
	MOV  	R5,A
	CLR  	A
	ADDC 	A,B
	MOV  	R4,A
;   }
			; SOURCE LINE # 253
?C0058:
;   if(input>90 && input<140)
			; SOURCE LINE # 254
	MOV  	A,R3
	SETB 	C
	SUBB 	A,#05AH
	JC   	?C0059
	MOV  	A,R3
	SUBB 	A,#08CH
	JNC  	?C0059
;   {
			; SOURCE LINE # 255
;     Pre=(int) (200/49*input+(400-139*200/49));
			; SOURCE LINE # 256
	MOV  	A,R3
	MOV  	B,#04H
	MUL  	AB
	ADD  	A,#059H
	MOV  	R7,A
	MOV  	A,B
	ADDC 	A,#0FFH
	MOV  	R4,A
	MOV  	R5,AR7
;   }
			; SOURCE LINE # 257
?C0059:
;   if(input>139 && input<180)
			; SOURCE LINE # 258
	MOV  	A,R3
	SETB 	C
	SUBB 	A,#08BH
	JC   	?C0060
	MOV  	A,R3
	SUBB 	A,#0B4H
	JNC  	?C0060
;   {
			; SOURCE LINE # 259
;     Pre=(int) (5*input-295);
			; SOURCE LINE # 260
	MOV  	A,R3
	MOV  	B,#05H
	MUL  	AB
	ADD  	A,#0D9H
	MOV  	R5,A
	MOV  	A,B
	ADDC 	A,#0FEH
	MOV  	R4,A
;   }
			; SOURCE LINE # 261
?C0060:
;   if(input>179 && input<209)
			; SOURCE LINE # 262
	MOV  	A,R3
	SETB 	C
	SUBB 	A,#0B3H
	JC   	?C0061
	MOV  	A,R3
	SUBB 	A,#0D1H
	JNC  	?C0061
;   {
			; SOURCE LINE # 263
;     Pre=(int) (200/29*input+(600-179*200/29));
			; SOURCE LINE # 264
	MOV  	A,R3
	MOV  	B,#06H
	MUL  	AB
	ADD  	A,#059H
	MOV  	R5,A
	MOV  	A,B
	ADDC 	A,#06H
	MOV  	R4,A
;   }
			; SOURCE LINE # 265
?C0061:
;   if(input>208 && input<234)
			; SOURCE LINE # 266
	MOV  	A,R3
	SETB 	C
	SUBB 	A,#0D0H
	JC   	?C0062
	MOV  	A,R3
	SUBB 	A,#0EAH
	JNC  	?C0062
;   {
			; SOURCE LINE # 267
;     Pre=(int) (8*input-864);
			; SOURCE LINE # 268
	MOV  	A,R3
	MOV  	B,#08H
	MUL  	AB
	ADD  	A,#0A0H
	MOV  	R5,A
	MOV  	A,B
	ADDC 	A,#0FCH
	MOV  	R4,A
;   }
			; SOURCE LINE # 269
?C0062:
;   if(input>233 && input<256)
			; SOURCE LINE # 270
	MOV  	A,R3
	SETB 	C
	SUBB 	A,#0E9H
	JC   	?C0063
	MOV  	A,#080H
	SUBB 	A,#081H
	JNC  	?C0063
;   {
			; SOURCE LINE # 271
;     Pre=(int) (200/22*input+(1000-233*200/22));
			; SOURCE LINE # 272
	MOV  	A,R3
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#044H
	MOV  	R5,A
	MOV  	A,B
	ADDC 	A,#07H
	MOV  	R4,A
;   }
			; SOURCE LINE # 273
?C0063:
;   return Pre;
			; SOURCE LINE # 274
	MOV  	R7,AR5
	MOV  	R6,AR4
; }
			; SOURCE LINE # 275
?C0064:
	RET  	
; END OF _Calculate_Pre

CSEG	AT	00023H
	LJMP	INT_UART_Tx_Rx

; void INT_UART_Tx_Rx() interrupt 4 using 3// serious  interrupt

	RSEG  ?PR?INT_UART_Tx_Rx?MAIN
	USING	3
INT_UART_Tx_Rx:
			; SOURCE LINE # 276
; {
; }
			; SOURCE LINE # 278
	RETI 	
; END OF INT_UART_Tx_Rx

; void UART_Start()//serious  interrupt  initial

	RSEG  ?PR?UART_Start?MAIN
UART_Start:
			; SOURCE LINE # 279
; {
			; SOURCE LINE # 280
;   	TR1 = 0;		//First before start the Timer we should shut it down. (TCON)
			; SOURCE LINE # 281
	CLR  	TR1
;    //	TCON = 0X40;      //open Timer1
; 	TMOD = 0x20;	//Mode 2: 8-bit auto-reload Timer.(TImer  1)
			; SOURCE LINE # 283
	MOV  	TMOD,#020H
; 	TH1  = 0xf4;	//Equals to 169D
			; SOURCE LINE # 284
	MOV  	TH1,#0F4H
; 	TL1  = 0xf4;
			; SOURCE LINE # 285
	MOV  	TL1,#0F4H
; 	SCON = 0x50;	//[Serial Control Register], Mode 1, 8-bit UART, Variable, Receiver enabled.
			; SOURCE LINE # 286
	MOV  	SCON,#050H
; 	PCON = PCON | 0x80;	//[Power Configuration Register], select double baud rate in mode 2
			; SOURCE LINE # 287
	ORL  	PCON,#080H
; 	TR1  = 1;		//Start the Timer 1
			; SOURCE LINE # 288
	SETB 	TR1
; 
;     RI=0;//Must be cleared by software.
			; SOURCE LINE # 290
	CLR  	RI
;     TI=0;
			; SOURCE LINE # 291
	CLR  	TI
; 	EA = 1;//enable all interrupts
			; SOURCE LINE # 292
	SETB 	EA
; 	ES = 1;//1=Enable Serial port interrupt
			; SOURCE LINE # 293
	SETB 	ES
; }
			; SOURCE LINE # 294
	RET  	
; END OF UART_Start

; 
; void initial_timer0(void )         //定时器0的初始化,作为计数器///////////reconfiguture

	RSEG  ?PR?initial_timer0?MAIN
initial_timer0:
			; SOURCE LINE # 296
;  {
			; SOURCE LINE # 297
;     IE =IE | 0x82;//enable all interrupt .  enable timer 0    (0x92)
			; SOURCE LINE # 298
	ORL  	IE,#082H
;     IP = 0x02; //let timer 0 high priority
			; SOURCE LINE # 299
	MOV  	IP,#02H
;     TMOD =TMOD | 0x21;//timer 1 auto-reloaded to produce baru;timer 0  as  timer
			; SOURCE LINE # 300
	ORL  	TMOD,#021H
;     TH0=0x00;
			; SOURCE LINE # 301
	CLR  	A
	MOV  	TH0,A
;     TL0=0x00;
			; SOURCE LINE # 302
	MOV  	TL0,A
;     TCON =TCON | 0x50;// start timer 1 and timer 0
			; SOURCE LINE # 303
	ORL  	TCON,#050H
;  }
			; SOURCE LINE # 304
	RET  	
; END OF initial_timer0

;  void initial_timer2(void )   //initial the timer2 interrupt

	RSEG  ?PR?initial_timer2?MAIN
initial_timer2:
			; SOURCE LINE # 305
;                               //定时器2的初始化  作为定时器
;  {
			; SOURCE LINE # 307
;     IE =IE | 0xa2;//enable all interrupt , and enable timer2
			; SOURCE LINE # 308
	ORL  	IE,#0A2H
;    // IP = IP |0x20; //let timer 2 high priority
;     TH2=0;
			; SOURCE LINE # 310
	CLR  	A
	MOV  	TH2,A
;     TL2=0; //initial  value
			; SOURCE LINE # 311
	MOV  	TL2,A
;     T2CON =T2CON |0x04;// timer 2  as  timer
			; SOURCE LINE # 312
	ORL  	T2CON,#04H
;     TR2=1;       //开启定时器
			; SOURCE LINE # 313
	SETB 	TR2
;  }
			; SOURCE LINE # 314
	RET  	
; END OF initial_timer2

CSEG	AT	0002BH
	LJMP	INT_TIMER2_overflow

; 
;  void INT_TIMER2_overflow() interrupt 5

	RSEG  ?PR?INT_TIMER2_overflow?MAIN
	USING	0
INT_TIMER2_overflow:
	PUSH 	ACC
			; SOURCE LINE # 316
;                                 //定时器2的溢出中断处理函数,作为时间计时用
;  {
;   
;   Speed_Count++;//for test speed
			; SOURCE LINE # 320
	INC  	Speed_Count+01H
	MOV  	A,Speed_Count+01H
	JNZ  	?C0073
	INC  	Speed_Count
?C0073:
;   Capture_Count++;
			; SOURCE LINE # 321
	INC  	Capture_Count+01H
	MOV  	A,Capture_Count+01H
	JNZ  	?C0074
	INC  	Capture_Count
?C0074:
;   Dispaly_Count++;
			; SOURCE LINE # 322
	INC  	Dispaly_Count+01H
	MOV  	A,Dispaly_Count+01H
	JNZ  	?C0075
	INC  	Dispaly_Count
?C0075:
;   Alarm_Count++;
			; SOURCE LINE # 323
	INC  	Alarm_Count+01H
	MOV  	A,Alarm_Count+01H
	JNZ  	?C0076
	INC  	Alarm_Count
?C0076:
; 
;   TF2=0;     //must be cleared by soft
			; SOURCE LINE # 325
	CLR  	TF2
;  }
			; SOURCE LINE # 326
	POP  	ACC
	RETI 	
; END OF INT_TIMER2_overflow

; void main()

	RSEG  ?PR?main?MAIN
main:
	USING	0
			; SOURCE LINE # 327
; {
			; SOURCE LINE # 328
;  /* int i;
; 
;   unsigned char Display_Type=1;
;   init();
;   
;   //init test 
;   
;   for( i=0;i<4;i++)
;   {
; 	Tem_Oil[i]=Calculate_Tem ( Get_Value(1) );
; 	Pre_Oil[i]=Calculate_Pre (Get_Value(2) );
; 	Tem_Water[i]=Calculate_Tem ( Get_Value(3));
;   } 
;   Tem_Oil[4]=(int)(Tem_Oil[0]+Tem_Oil[1]+Tem_Oil[2]+Tem_Oil[3])/4;
;   Pre_Oil[4]=(int)(Pre_Oil[0]+Pre_Oil[1]+Pre_Oil[2]+Pre_Oil[3])/4;
;   Tem_Water[4]=(int)(Tem_Water[0]+Tem_Water[1]+Tem_Water[2]+Tem_Water[3])/4;
; 
; 
;   //enter cycle
;   while(1)
;   {
;     if(Speed_Count==100)//for speed test
;     {
; 	  Speed=(TH0*256+TL0)*Speed_Count/(1000*M);
; 
; 	}
; 
; 	if(Capture_Count==250)//capture one time
; 	{
; 	  for( i=0;i<4;i++)
;       {
; 	    Tem_Oil[i]=Calculate_Tem ( Get_Value(1) );
; 	    Pre_Oil[i]=Calculate_Pre (Get_Value(2) );
; 	    Tem_Water[i]=Calculate_Tem ( Get_Value(3));
;       } 
;       Tem_Oil[4]=(int)(Tem_Oil[0]+Tem_Oil[1]+Tem_Oil[2]+Tem_Oil[3])/4;
;       Pre_Oil[4]=(int)(Pre_Oil[0]+Pre_Oil[1]+Pre_Oil[2]+Pre_Oil[3])/4;
;       Tem_Water[4]=(int)(Tem_Water[0]+Tem_Water[1]+Tem_Water[2]+Tem_Water[3])/4;
; 
; 	}
; 
; 	if(Dispaly_Count==1000)
; 	{
; 	  switch(Display_Type)
; 	  {
; 
; 	    case 1://dispaly pressure of oil 
;           Display_Acord_Byte(Pre_Oil[4] );
; 		  break;
; 		case 2://dispaly tem of oil 
;           Display_Acord_Byte(Tem_Oil[4] );
; 		  break;
; 		case 3://dispaly tem of water
;           Display_Acord_Byte(Tem_Water[4] );
; 		  break;
; 		case 4: //display speed of motor
;           Display_Acord_Byte( Speed );
; 		  break;
; 		default:
; 
; 		  break;
; 	  }
; 	  Display_Type++;
; 	  if(Display_Type>4)
; 	    Display_Type=1;
; 	  
; 	}
;     
;     
;    
;   }
; */
; unsigned char Byte_Try;
			; SOURCE LINE # 401
; //while(1)
; {
;   P2=0;
			; SOURCE LINE # 404
	CLR  	A
	MOV  	P2,A
;   Byte_Try=Display_Lookup_Table(10);
			; SOURCE LINE # 405
	MOV  	R7,#0AH
	LCALL	_Display_Lookup_Table
;---- Variable 'Byte_Try?1256' assigned to Register 'R7' ----
;   P0=Byte_Try;
			; SOURCE LINE # 406
	MOV  	P0,R7
;   P2_3=1;
			; SOURCE LINE # 407
	SETB 	P2_3
;   P2_3=0;
			; SOURCE LINE # 408
	CLR  	P2_3
; 
;  
;   Byte_Try=Display_Lookup_Table(8);
			; SOURCE LINE # 411
	MOV  	R7,#08H
	LCALL	_Display_Lookup_Table
;   P0=Byte_Try;
			; SOURCE LINE # 412
	MOV  	P0,R7
;   P2_2=1;
			; SOURCE LINE # 413
	SETB 	P2_2
;   P2_2=0;
			; SOURCE LINE # 414
	CLR  	P2_2
; 
; 
;   Byte_Try=Display_Lookup_Table(11);
			; SOURCE LINE # 417
	MOV  	R7,#0BH
	LCALL	_Display_Lookup_Table
;   P0=Byte_Try;
			; SOURCE LINE # 418
	MOV  	P0,R7
;   P2_1=1;
			; SOURCE LINE # 419
	SETB 	P2_1
;   P2_1=0;
			; SOURCE LINE # 420
	CLR  	P2_1
; 
;  
;   Byte_Try=Display_Lookup_Table(5);
			; SOURCE LINE # 423
	MOV  	R7,#05H
	LCALL	_Display_Lookup_Table
;   P0=Byte_Try;
			; SOURCE LINE # 424
	MOV  	P0,R7
;   P2_0=1;
			; SOURCE LINE # 425
	SETB 	P2_0
;   P2_0=0;
			; SOURCE LINE # 426
	CLR  	P2_0
; 
;   
; }
			; SOURCE LINE # 429
;      
; }
			; SOURCE LINE # 431
	RET  	
; END OF main

	END

⌨️ 快捷键说明

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