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

📄 main.src

📁 数控系统的模拟系统,用SSTC51仿真单片机,仿真数控机床切割,能执行数控机床代码.
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	SETB 	X_M
?C0008:
;      
			; SOURCE LINE # 43
; }		  
			; SOURCE LINE # 44
; 
			; SOURCE LINE # 45
	MOV  	R6,F
	MOV  	R7,F+01H
	MOV  	R4,#00H
	MOV  	R5,#064H
	LCALL	?C?IMUL
?C0010:
; void service_t0(void) interrupt TF0_VECTOR using 2
			; SOURCE LINE # 46
	MOV  	A,R7
	DEC  	R7
	MOV  	R4,AR6
	JNZ  	?C0389
	DEC  	R6
?C0389:
	ORL  	A,R4
	JNZ  	?C0010
?C0011:
; 	{
			; SOURCE LINE # 47
	CLR  	X_M
; 
			; SOURCE LINE # 48
	CLR  	A
	MOV  	R6,A
	MOV  	R7,A
?C0012:
;     TH0=(65536-ir_time)/256;
			; SOURCE LINE # 49
	MOV  	A,R7
	DEC  	R7
	MOV  	R4,AR6
	JNZ  	?C0390
	DEC  	R6
?C0390:
	ORL  	A,R4
	JNZ  	?C0012
?C0013:
; 	TL0=(65536-ir_time)%256;
			; SOURCE LINE # 50
	SETB 	X_M
;     ir_signtime++;
			; SOURCE LINE # 51
	MOV  	A,R3
	DEC  	R3
	JNZ  	?C0391
	DEC  	R2
?C0391:
; 	if (ir_signtime>250) {ir_signtime=0; TR0=0;ir_start_flag=0;ir_rpt1=ir_rpt2=0;
			; SOURCE LINE # 52
	MOV  	A,R3
	ORL  	A,R2
	JNZ  	?C0008
; 	ir_data[2]=ir_data[3]=0xff;	 //清除数据.
; 	} 
			; SOURCE LINE # 54
?C0014:
	RET  	
; END OF x_zm

;     //如果接收到单次的触发脉冲,如干扰或红外信号的结束,关闭定时器,并把红外引导标记清除,把连发标记也清除
; 	}
; 

	RSEG  ?PR?_weizhi?MAIN
_weizhi:
	USING	0
			; SOURCE LINE # 57
;---- Variable 'XOY?246' assigned to Register 'R2/R3' ----
;---- Variable 'y2?245' assigned to Register 'R4/R5' ----
;---- Variable 'x2?244' assigned to Register 'R6/R7' ----
; void service_ex0(void)  interrupt IE0_VECTOR using 3
			; SOURCE LINE # 58
; {
; 	EA=0 ; //中断关闭
			; SOURCE LINE # 60
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#00H
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0015
	SETB 	C
	MOV  	A,R5
	SUBB 	A,#00H
	MOV  	A,R4
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0015
;    TH0=(65536-ir_time)/256;
			; SOURCE LINE # 61
	MOV  	R2,#00H
	MOV  	R3,#01H
?C0015:
; 	TL0=(65536-ir_time)%256;
			; SOURCE LINE # 62
	CLR  	C
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JNC  	?C0016
	MOV  	A,R5
	SUBB 	A,#00H
	MOV  	A,R4
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0016
; 
			; SOURCE LINE # 63
	MOV  	R2,#00H
	MOV  	R3,#02H
?C0016:
;  if(!ir_start_flag&&ir_signtime>20)         //如果没收到引导脉冲,进行引导脉冲CHECK.
			; SOURCE LINE # 64
	CLR  	C
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JNC  	?C0017
	CLR  	C
	MOV  	A,R4
	XRL  	A,#080H
	SUBB 	A,#080H
	JNC  	?C0017
;      {
			; SOURCE LINE # 65
	MOV  	R2,#00H
	MOV  	R3,#03H
?C0017:
; 	  ir_sign_count=0;         //脉冲记数
			; SOURCE LINE # 66
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#00H
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0018
	MOV  	A,R4
	XRL  	A,#080H
	SUBB 	A,#080H
	JNC  	?C0018
; 	  ir_start_flag=1;         //ir_start_flag 引导信号标记。
			; SOURCE LINE # 67
	MOV  	R2,#00H
	MOV  	R3,#04H
?C0018:
;      }
			; SOURCE LINE # 68
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#00H
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0019
	MOV  	A,R5
	ORL  	A,R4
	JNZ  	?C0019
	MOV  	R2,A
	MOV  	R3,#05H
?C0019:
; 
			; SOURCE LINE # 69
	MOV  	A,R7
	ORL  	A,R6
	JNZ  	?C0020
	SETB 	C
	MOV  	A,R5
	SUBB 	A,#00H
	MOV  	A,R4
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0020
	MOV  	R2,#00H
	MOV  	R3,#06H
?C0020:
;   if(ir_start_flag)
			; SOURCE LINE # 70
	CLR  	C
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JNC  	?C0021
	MOV  	A,R5
	ORL  	A,R4
	JNZ  	?C0021
	MOV  	R2,A
	MOV  	R3,#07H
?C0021:
;     {
			; SOURCE LINE # 71
	MOV  	A,R7
	ORL  	A,R6
	JNZ  	?C0022
	CLR  	C
	MOV  	A,R4
	XRL  	A,#080H
	SUBB 	A,#080H
	JNC  	?C0022
	MOV  	R2,#00H
	MOV  	R3,#08H
?C0022:
;         if(ir_signtime>0&&ir_signtime<10) //符合真正数据的脉冲
			; SOURCE LINE # 72
	MOV  	R7,AR3
	MOV  	R6,AR2
; 	     {
			; SOURCE LINE # 73
?C0023:
	RET  	
; END OF _weizhi

; 		  
; 		  ir_temp>>=1; 

	RSEG  ?PR?xoy1?MAIN
xoy1:
	USING	0
			; SOURCE LINE # 75
; 		  
			; SOURCE LINE # 76
; 		  if(ir_signtime>3)	  ir_temp|=0x80; //如果时间>3是1
			; SOURCE LINE # 77
	SETB 	X_F
;          
			; SOURCE LINE # 78
	SETB 	Y_F
?C0024:
; 		  ir_sign_count++;        //红外脉冲+1
			; SOURCE LINE # 79
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0028
; 		  
			; SOURCE LINE # 80
	CLR  	C
	MOV  	A,Fm1
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0026
	LCALL	L?0467
	SJMP 	?C0027
?C0026:
; 	     switch (ir_sign_count) 
			; SOURCE LINE # 81
	LCALL	L?0469
?C0027:
; 		  {
			; SOURCE LINE # 82
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0024
	DEC  	n
?C0392:
;         case 8:
			; SOURCE LINE # 83
	SJMP 	?C0024
; 		  ir_data[0]=ir_temp;             //设备码
			; SOURCE LINE # 84
?C0028:
	RET  	
; END OF xoy1

; 		  break;
; 		  case 16:

	RSEG  ?PR?xoy2?MAIN
xoy2:
	USING	0
			; SOURCE LINE # 86
;         ir_data[1]=ir_temp;
			; SOURCE LINE # 87
; 		  break;
			; SOURCE LINE # 88
	CLR  	X_F
; 		  case  24:
			; SOURCE LINE # 89
	SETB 	Y_F
?C0029:
; 		  ir_data[2]=ir_temp;             //数据码
			; SOURCE LINE # 90
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0033
; 		  break;
			; SOURCE LINE # 91
	CLR  	C
	MOV  	A,Fm1
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0031
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0393
	DEC  	n
?C0393:
	LCALL	L?0467
	SJMP 	?C0029
?C0031:
; 		  case  32:
			; SOURCE LINE # 92
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0394
	DEC  	n
?C0394:
	LCALL	L?0469
;  		  ir_data[3]=ir_temp;
			; SOURCE LINE # 93
	SJMP 	?C0029
; 
			; SOURCE LINE # 94
?C0033:
	RET  	
; END OF xoy2

; 		   if (ir_data[0]==~ir_data[1]&&ir_data[2]==~ir_data[3])
; 		   {

	RSEG  ?PR?xoy3?MAIN
xoy3:
	USING	0
			; SOURCE LINE # 96
; 		  ir_flag=1;                       //有键按下.
			; SOURCE LINE # 97
	CLR  	X_F
; 		  SBUF=ir_data[2];
			; SOURCE LINE # 98
	CLR  	Y_F
?C0034:
; 		  
			; SOURCE LINE # 99
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0038
; 	              while(!TI){;}
			; SOURCE LINE # 100
	CLR  	C
	MOV  	A,Fm1
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0036
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0395
	DEC  	n
?C0395:
	LCALL	L?0468
	SJMP 	?C0034
?C0036:
; 	                TI=0;
			; SOURCE LINE # 101
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0396
	DEC  	n
?C0396:
	LCALL	L?0470
; 		
			; SOURCE LINE # 102
	SJMP 	?C0034
;         }
			; SOURCE LINE # 103
?C0038:
	RET  	
; END OF xoy3

; 		
; 		

	RSEG  ?PR?xoy4?MAIN
xoy4:
	USING	0
			; SOURCE LINE # 105
; 		  break;
			; SOURCE LINE # 106
; 		     }  
			; SOURCE LINE # 107
	SETB 	X_F
;         
			; SOURCE LINE # 108
	CLR  	Y_F
?C0039:
;   		  }
			; SOURCE LINE # 109
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0043
;   		  
			; SOURCE LINE # 110
	CLR  	C
	MOV  	A,Fm1
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?C0041
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0397
	DEC  	n
?C0397:
	LCALL	L?0468
	SJMP 	?C0039
?C0041:
;        if(ir_signtime>0X40) {   
			; SOURCE LINE # 111
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0398
	DEC  	n
?C0398:
	LCALL	L?0470
; 		                 if (ir_rpt1>10) { ir_rpt2++;if(ir_rpt2==2) {ir_rpt2=0;ir_flag=1;}  }       
			; SOURCE LINE # 112
	SJMP 	?C0039
; 							  else ir_rpt1++ ;  
			; SOURCE LINE # 113
?C0043:
	RET  	
; END OF xoy4

; 							   }                            //连发码的处理:接收到连发码,淹死20个码,然后每5个码发送一次键按下信号
; 	}
;           ir_signtime=0;     //计数器归0

	RSEG  ?PR?xoy5?MAIN
xoy5:
	USING	0
			; SOURCE LINE # 116
;               EA=1;
			; SOURCE LINE # 117
	SETB 	X_F
?C0044:
;         TR0=1;   //开始计时
			; SOURCE LINE # 118
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0046
;    
			; SOURCE LINE # 119
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0399
	DEC  	n
?C0399:
	LCALL	x_zm
	SJMP 	?C0044
; }
			; SOURCE LINE # 120
?C0046:
	RET  	
; END OF xoy5

; 
; void TandC_Tnit(void)

	RSEG  ?PR?xoy6?MAIN
xoy6:
	USING	0
			; SOURCE LINE # 122
;  {
			; SOURCE LINE # 123
	SETB 	Y_F
?C0047:
;  EA=1;  //总控
			; SOURCE LINE # 124
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0049
; ES=1;   //串行中断允许
			; SOURCE LINE # 125
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0400
	DEC  	n
?C0400:
	LCALL	y_zm
	SJMP 	?C0047
; ET1=0; //定时器0
			; SOURCE LINE # 126
?C0049:
	RET  	
; END OF xoy6

; ET0=1; //定时器1,波特发生
; EX0=1; //外部0中断

	RSEG  ?PR?xoy7?MAIN
xoy7:
	USING	0
			; SOURCE LINE # 128
; IT0=1; //下降沿触发
			; SOURCE LINE # 129
	CLR  	X_F
?C0050:
;  
			; SOURCE LINE # 130
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0052
; SCON=0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr 
			; SOURCE LINE # 131
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0401
	DEC  	n
?C0401:
	LCALL	x_zm
	SJMP 	?C0050
; TMOD=0x21; //TMOD: timer 1, mode 2, 8-bit reload ,time0 mode1;
			; SOURCE LINE # 132
?C0052:
	RET  	
; END OF xoy7

; PCON=0x80; //SMOD=1; 
; TH1= 0xFD; //Baud:19200  fosc=11.0592MHz 		

	RSEG  ?PR?xoy8?MAIN
xoy8:
	USING	0
			; SOURCE LINE # 134
; TH0=(65536-ir_time)/256;
			; SOURCE LINE # 135
	CLR  	Y_F
?C0053:
; TL0=(65536-ir_time)%256;
			; SOURCE LINE # 136
	MOV  	A,n+01H
	ORL  	A,n
	JZ   	?C0055
; TR1=1;          // timer 1 run 
			; SOURCE LINE # 137
	MOV  	A,n+01H
	DEC  	n+01H
	JNZ  	?C0402
	DEC  	n
?C0402:
	LCALL	y_zm
	SJMP 	?C0053
;  }
			; SOURCE LINE # 138
?C0055:
	RET  	
; END OF xoy8

; 	 
; void main(void)

	RSEG  ?PR?_z_chabu?MAIN
_z_chabu:
	USING	0
			; SOURCE LINE # 140
	MOV  	x2?1149,R2
	MOV  	x2?1149+01H,R3
;---- Variable 'y1?1148' assigned to Register 'R4/R5' ----
;---- Variable 'x1?1147' assigned to Register 'R6/R7' ----
; {
; LCMInit();
			; SOURCE LINE # 142
; TandC_Tnit();
			; SOURCE LINE # 143
	CLR  	A
	MOV  	Fm1,A
	MOV  	Fm1+01H,A
; s=&buf;
			; SOURCE LINE # 144
	CLR  	C
	MOV  	A,x2?1149+01H
	SUBB 	A,R7
	MOV  	Xe+01H,A
	MOV  	A,x2?1149
	SUBB 	A,R6
	MOV  	Xe,A
; TAI_BI=1;
			; SOURCE LINE # 145
	CLR  	C
	MOV  	A,y2?1150+01H
	SUBB 	A,R5
	MOV  	Ye+01H,A
	MOV  	A,y2?1150
	SUBB 	A,R4
	MOV  	Ye,A
; if(P0^1==0)	Lcd_print("Communicating To PC");
			; SOURCE LINE # 146
	MOV  	R4,Xe
	MOV  	R5,Xe+01H
	MOV  	A,R4
	LCALL	?C?FCASTI
	LCALL	_fabs
	LCALL	?C?CASTF
	MOV  	Xe,R6
	MOV  	Xe+01H,R7
;   Pref_x=0x85;
			; SOURCE LINE # 147
	MOV  	R4,Ye
	MOV  	R5,Ye+01H
	MOV  	A,R4
	LCALL	?C?FCASTI
	LCALL	_fabs
	LCALL	?C?CASTF
	MOV  	Ye,R6
	MOV  	Ye+01H,R7
;   Pref_y=0x45;
			; SOURCE LINE # 148
	MOV  	A,Xe+01H
	ADD  	A,Ye+01H
	MOV  	n+01H,A
	MOV  	A,Xe
	ADDC 	A,Ye
	MOV  	n,A
; 
			; SOURCE LINE # 149
	MOV  	R5,y2?1150+01H
	MOV  	R4,y2?1150
	MOV  	R7,x2?1149+01H
	MOV  	R6,x2?1149
	LCALL	_weizhi
;---- Variable 'XOY?1151' assigned to Register 'R6/R7' ----
;   SaveXYToNVRAM();
			; SOURCE LINE # 150
	MOV  	A,R6
	JNZ  	?C0065
	MOV  	A,R7
	DEC  	A
	CJNE 	A,#08H,?C0403
?C0403:
	JNC  	?C0065
	MOV  	DPTR,#?C0404
	MOV  	B,#03H
	MUL  	AB
	XCH  	A,DPH
	ADD  	A,B
	XCH  	A,DPH
	JMP  	@A+DPTR
?C0404:
	LJMP 	?C0057
	LJMP 	?C0058
	LJMP 	?C0059
	LJMP 	?C0060
	LJMP 	?C0061
	LJMP 	?C0062
	LJMP 	?C0063
	LJMP 	?C0064
;    Pref_x=0X05;
			; SOURCE LINE # 151
?C0057:
	LJMP 	xoy1
;   Pref_y=0;
			; SOURCE LINE # 152
?C0058:
	LJMP 	xoy2
;    ReadXYFromNVRAM();
			; SOURCE LINE # 153
?C0059:
	LJMP 	xoy3
;    	SBUF=Pref_x;
			; SOURCE LINE # 154
?C0060:
	LJMP 	xoy4
;    while(!TI){;}
			; SOURCE LINE # 155
?C0061:
	LJMP 	xoy5
; 	   TI=0;
			; SOURCE LINE # 156
?C0062:
	LJMP 	xoy6
;    
			; SOURCE LINE # 157
?C0063:
	LJMP 	xoy7
; while(1)	
			; SOURCE LINE # 158
?C0064:
	LCALL	xoy8
; {  
			; SOURCE LINE # 159
;   Lcd_print("the system of CN");
			; SOURCE LINE # 160
?C0065:
	RET  	
; END OF _z_chabu


	RSEG  ?PR?ManualOperation?MAIN
ManualOperation:
	USING	0
			; SOURCE LINE # 7
			; SOURCE LINE # 8
			; SOURCE LINE # 9
	MOV  	R5,#01H
	MOV  	R4,#00H
	MOV  	R7,#01H
	LCALL	_WriteCommandLCM
			; SOURCE LINE # 10
	SETB 	TAI_BI
			; SOURCE LINE # 11
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_0)
	MOV  	R1,#LOW (?SC_0)
	LCALL	_Lcd_print
			; SOURCE LINE # 12
			; SOURCE LINE # 13
?C0068:
			; SOURCE LINE # 14

⌨️ 快捷键说明

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