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

📄 li_jyq.lst

📁 这段程序是步进电机的细分驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0157) 	     
(0158) 	    PORTB=DATA_LOW; //D11		D11、D10、D9、D8
     291 8008      LDD	R0,Y+0
     292 BA08      OUT	0x18,R0
(0159) 		PORTB=DATA_LOW;
     293 BA08      OUT	0x18,R0
(0160) 		PORTB=DATA_LOW|CLOK_LOW;
     294 2C20      MOV	R2,R0
     295 8009      LDD	R0,Y+1
     296 2820      OR	R2,R0
     297 BA28      OUT	0x18,R2
(0161) 		PORTB=DATA_LOW|CLOK_LOW;
     298 8028      LDD	R2,Y+0
     299 2820      OR	R2,R0
     29A BA28      OUT	0x18,R2
(0162) 		PORTB=DATA_LOW|CLOK_HIG;
     29B 8028      LDD	R2,Y+0
     29C 2A26      OR	R2,R22
     29D BA28      OUT	0x18,R2
(0163) 		PORTB=DATA_LOW|CLOK_HIG;
     29E 8028      LDD	R2,Y+0
     29F 2A26      OR	R2,R22
     2A0 BA28      OUT	0x18,R2
(0164) 	  
(0165) 		
(0166) 	    PORTB=DATA_HIG; //D10
     2A1 BAA8      OUT	0x18,R10
(0167) 		PORTB=DATA_HIG;
     2A2 BAA8      OUT	0x18,R10
(0168) 		PORTB=DATA_HIG|CLOK_LOW;
     2A3 2C2A      MOV	R2,R10
     2A4 2820      OR	R2,R0
     2A5 BA28      OUT	0x18,R2
(0169) 		PORTB=DATA_HIG|CLOK_LOW;
     2A6 2C2A      MOV	R2,R10
     2A7 2820      OR	R2,R0
     2A8 BA28      OUT	0x18,R2
(0170) 		PORTB=DATA_HIG|CLOK_HIG;
     2A9 2C2A      MOV	R2,R10
     2AA 2A26      OR	R2,R22
     2AB BA28      OUT	0x18,R2
(0171) 		PORTB=DATA_HIG|CLOK_HIG;
     2AC 2C2A      MOV	R2,R10
     2AD 2A26      OR	R2,R22
     2AE BA28      OUT	0x18,R2
(0172) 	 
(0173) 	    PORTB=DATA_LOW; //D9
     2AF 8008      LDD	R0,Y+0
     2B0 BA08      OUT	0x18,R0
(0174) 		PORTB=DATA_LOW;
     2B1 BA08      OUT	0x18,R0
(0175) 		PORTB=DATA_LOW|CLOK_LOW;
     2B2 2C20      MOV	R2,R0
     2B3 8009      LDD	R0,Y+1
     2B4 2820      OR	R2,R0
     2B5 BA28      OUT	0x18,R2
(0176) 		PORTB=DATA_LOW|CLOK_LOW;
     2B6 8028      LDD	R2,Y+0
     2B7 2820      OR	R2,R0
     2B8 BA28      OUT	0x18,R2
(0177) 		PORTB=DATA_LOW|CLOK_HIG;
     2B9 8028      LDD	R2,Y+0
     2BA 2A26      OR	R2,R22
     2BB BA28      OUT	0x18,R2
(0178) 		PORTB=DATA_LOW|CLOK_HIG;
     2BC 8028      LDD	R2,Y+0
     2BD 2A26      OR	R2,R22
     2BE BA28      OUT	0x18,R2
(0179) 	 
(0180) 	    PORTB=DATA_LOW; //D8
     2BF 8008      LDD	R0,Y+0
     2C0 BA08      OUT	0x18,R0
(0181) 		PORTB=DATA_LOW;
     2C1 BA08      OUT	0x18,R0
(0182) 		PORTB=DATA_LOW|CLOK_LOW;
     2C2 2C20      MOV	R2,R0
     2C3 8009      LDD	R0,Y+1
     2C4 2820      OR	R2,R0
     2C5 BA28      OUT	0x18,R2
(0183) 		PORTB=DATA_LOW|CLOK_LOW;
     2C6 8028      LDD	R2,Y+0
     2C7 2820      OR	R2,R0
     2C8 BA28      OUT	0x18,R2
(0184) 		PORTB=DATA_LOW|CLOK_HIG;
     2C9 8028      LDD	R2,Y+0
     2CA 2A26      OR	R2,R22
     2CB BA28      OUT	0x18,R2
(0185) 		PORTB=DATA_LOW|CLOK_HIG;
     2CC 8028      LDD	R2,Y+0
     2CD 2A26      OR	R2,R22
     2CE BA28      OUT	0x18,R2
(0186) 	 
(0187) 	    PORTB=DATA_LOW; //D7      D7、D6、D5、D4
     2CF 8008      LDD	R0,Y+0
     2D0 BA08      OUT	0x18,R0
(0188) 		PORTB=DATA_LOW;
     2D1 BA08      OUT	0x18,R0
(0189) 		PORTB=DATA_LOW|CLOK_LOW;
     2D2 2C20      MOV	R2,R0
     2D3 8009      LDD	R0,Y+1
     2D4 2820      OR	R2,R0
     2D5 BA28      OUT	0x18,R2
(0190) 		PORTB=DATA_LOW|CLOK_LOW;
     2D6 8028      LDD	R2,Y+0
     2D7 2820      OR	R2,R0
     2D8 BA28      OUT	0x18,R2
(0191) 		PORTB=DATA_LOW|CLOK_HIG;
     2D9 8028      LDD	R2,Y+0
     2DA 2A26      OR	R2,R22
     2DB BA28      OUT	0x18,R2
(0192) 		PORTB=DATA_LOW|CLOK_HIG;
     2DC 8028      LDD	R2,Y+0
     2DD 2A26      OR	R2,R22
     2DE BA28      OUT	0x18,R2
(0193) 	   
(0194) 	    PORTB=DATA_LOW; //D6
     2DF 8008      LDD	R0,Y+0
     2E0 BA08      OUT	0x18,R0
(0195) 		PORTB=DATA_LOW;
     2E1 BA08      OUT	0x18,R0
(0196) 		PORTB=DATA_LOW|CLOK_LOW;
     2E2 2C20      MOV	R2,R0
     2E3 8009      LDD	R0,Y+1
     2E4 2820      OR	R2,R0
     2E5 BA28      OUT	0x18,R2
(0197) 		PORTB=DATA_LOW|CLOK_LOW;
     2E6 8028      LDD	R2,Y+0
     2E7 2820      OR	R2,R0
     2E8 BA28      OUT	0x18,R2
(0198) 		PORTB=DATA_LOW|CLOK_HIG;
     2E9 8028      LDD	R2,Y+0
     2EA 2A26      OR	R2,R22
     2EB BA28      OUT	0x18,R2
(0199) 		PORTB=DATA_LOW|CLOK_HIG;	
     2EC 8028      LDD	R2,Y+0
     2ED 2A26      OR	R2,R22
     2EE BA28      OUT	0x18,R2
(0200) 	    
(0201) 	    PORTB=DATA_HIG; //D5 
     2EF BAA8      OUT	0x18,R10
(0202) 		PORTB=DATA_HIG;
     2F0 BAA8      OUT	0x18,R10
(0203) 		PORTB=DATA_HIG|CLOK_LOW;
     2F1 2C2A      MOV	R2,R10
     2F2 2820      OR	R2,R0
     2F3 BA28      OUT	0x18,R2
(0204) 		PORTB=DATA_HIG|CLOK_LOW;
     2F4 2C2A      MOV	R2,R10
     2F5 2820      OR	R2,R0
     2F6 BA28      OUT	0x18,R2
(0205) 		PORTB=DATA_HIG|CLOK_HIG;
     2F7 2C2A      MOV	R2,R10
     2F8 2A26      OR	R2,R22
     2F9 BA28      OUT	0x18,R2
(0206) 		PORTB=DATA_HIG|CLOK_HIG;
     2FA 2C2A      MOV	R2,R10
     2FB 2A26      OR	R2,R22
     2FC BA28      OUT	0x18,R2
(0207) 	 
(0208) 	    PORTB=DATA_LOW; //D4
     2FD 8008      LDD	R0,Y+0
     2FE BA08      OUT	0x18,R0
(0209) 		PORTB=DATA_LOW;
     2FF BA08      OUT	0x18,R0
(0210) 		PORTB=DATA_LOW|CLOK_LOW;
     300 2C20      MOV	R2,R0
     301 8009      LDD	R0,Y+1
     302 2820      OR	R2,R0
     303 BA28      OUT	0x18,R2
(0211) 		PORTB=DATA_LOW|CLOK_LOW;
     304 8028      LDD	R2,Y+0
     305 2820      OR	R2,R0
     306 BA28      OUT	0x18,R2
(0212) 		PORTB=DATA_LOW|CLOK_HIG;
     307 8028      LDD	R2,Y+0
     308 2A26      OR	R2,R22
     309 BA28      OUT	0x18,R2
(0213) 		PORTB=DATA_LOW|CLOK_HIG;
     30A 8028      LDD	R2,Y+0
     30B 2A26      OR	R2,R22
     30C BA28      OUT	0x18,R2
(0214) 	
(0215) 	    PORTB=DATA_LOW; //D3
     30D 8008      LDD	R0,Y+0
     30E BA08      OUT	0x18,R0
(0216) 		PORTB=DATA_LOW;
     30F BA08      OUT	0x18,R0
(0217) 		PORTB=DATA_LOW|CLOK_LOW;
     310 2C20      MOV	R2,R0
     311 8009      LDD	R0,Y+1
     312 2820      OR	R2,R0
     313 BA28      OUT	0x18,R2
(0218) 		PORTB=DATA_LOW|CLOK_LOW;
     314 8028      LDD	R2,Y+0
     315 2820      OR	R2,R0
     316 BA28      OUT	0x18,R2
(0219) 		PORTB=DATA_LOW|CLOK_HIG;
     317 8028      LDD	R2,Y+0
     318 2A26      OR	R2,R22
     319 BA28      OUT	0x18,R2
(0220) 		PORTB=DATA_LOW|CLOK_HIG;
     31A 8028      LDD	R2,Y+0
     31B 2A26      OR	R2,R22
     31C BA28      OUT	0x18,R2
(0221) 	
(0222) 	    PORTB=DATA_HIG; //D2 		00:死区时间为4/fosc,01:死区时间为6/fosc ,10:死区时间为8/fosc,11:死区时间为12/fosc
     31D BAA8      OUT	0x18,R10
(0223) 	    PORTB=DATA_HIG;
     31E BAA8      OUT	0x18,R10
(0224) 		PORTB=DATA_HIG|CLOK_LOW;
     31F 2C2A      MOV	R2,R10
     320 2820      OR	R2,R0
     321 BA28      OUT	0x18,R2
(0225) 		PORTB=DATA_HIG|CLOK_LOW;
     322 2C2A      MOV	R2,R10
     323 2820      OR	R2,R0
     324 BA28      OUT	0x18,R2
(0226) 		PORTB=DATA_HIG|CLOK_HIG;
     325 2C2A      MOV	R2,R10
     326 2A26      OR	R2,R22
     327 BA28      OUT	0x18,R2
(0227) 		PORTB=DATA_HIG|CLOK_HIG;
     328 2C2A      MOV	R2,R10
     329 2A26      OR	R2,R22
     32A BA28      OUT	0x18,R2
(0228) 	
(0229) 	    PORTB=DATA_LOW; //D1
     32B 8008      LDD	R0,Y+0
     32C BA08      OUT	0x18,R0
(0230) 		PORTB=DATA_LOW;
     32D BA08      OUT	0x18,R0
(0231) 		PORTB=DATA_LOW|CLOK_LOW;
     32E 2C20      MOV	R2,R0
     32F 8009      LDD	R0,Y+1
     330 2820      OR	R2,R0
     331 BA28      OUT	0x18,R2
(0232) 		PORTB=DATA_LOW|CLOK_LOW;
     332 8028      LDD	R2,Y+0
     333 2820      OR	R2,R0
     334 BA28      OUT	0x18,R2
(0233) 		PORTB=DATA_LOW|CLOK_HIG;
     335 8028      LDD	R2,Y+0
     336 2A26      OR	R2,R22
     337 BA28      OUT	0x18,R2
(0234) 		PORTB=DATA_LOW|CLOK_HIG;
     338 8028      LDD	R2,Y+0
     339 2A26      OR	R2,R22
     33A BA28      OUT	0x18,R2
(0235) 	
(0236) 	    PORTB=DATA_HIG; //D0		数据模式
     33B BAA8      OUT	0x18,R10
(0237) 		PORTB=DATA_HIG;
     33C BAA8      OUT	0x18,R10
(0238) 		PORTB=DATA_HIG|CLOK_LOW;
     33D 2C2A      MOV	R2,R10
     33E 2820      OR	R2,R0
     33F BA28      OUT	0x18,R2
(0239) 		PORTB=DATA_HIG|CLOK_LOW;
     340 2C2A      MOV	R2,R10
     341 2820      OR	R2,R0
     342 BA28      OUT	0x18,R2
(0240) 		PORTB=DATA_HIG|CLOK_HIG;
     343 2C2A      MOV	R2,R10
     344 2A26      OR	R2,R22
     345 BA28      OUT	0x18,R2
(0241) 		PORTB=DATA_HIG|CLOK_HIG; 
     346 2C2A      MOV	R2,R10
     347 2A26      OR	R2,R22
     348 BA28      OUT	0x18,R2
(0242) 		    
(0243) 	    PORTE=STRB_HIG;	 
     349 B943      OUT	0x03,R20
(0244) 	    PORTE=STRB_HIG;
     34A B943      OUT	0x03,R20
(0245) 		
(0246) 		return 0x01;
     34B E001      LDI	R16,1
     34C C001      RJMP	0x034E
(0247) 	}
(0248) 	else{
(0249) 		return 0x00;
     34D 2700      CLR	R16
     34E 9622      ADIW	R28,2
     34F 940C 1736 JMP	pop_xgsetF0FC
_OutputMotor:
  CLOK_LOW             --> Y,+1
  STRB_LOW             --> Y,+0
  STRB_HIG             --> R20
  DATA_HIG             --> R12
  CLOK_HIG             --> R22
  DATA_LOW             --> R10
  Bridge2DAC           --> Y,+16
  Bridge1DAC           --> Y,+14
  Port                 --> Y,+12
     351 940E 1715 CALL	push_arg4
     353 940E 1741 CALL	push_xgsetF0FC
     355 9722      SBIW	R28,2
(0250) 	}
(0251) }
(0252) //步进电机转动函数
(0253) unsigned char OutputMotor(unsigned char Port,unsigned char Bridge1DAC,unsigned char Bridge2DAC)
(0254) {
(0255) 	unsigned char STRB_LOW,CLOK_LOW,DATA_LOW;
(0256) 	unsigned char STRB_HIG,CLOK_HIG,DATA_HIG;
(0257) 	
(0258) 	if((Port>=0x01)&&(Port<=0x04))     //四个电机端口设置
     356 858C      LDD	R24,Y+12
     357 3081      CPI	R24,1
     358 F408      BCC	0x035A
     359 C10A      RJMP	0x0464
     35A E084      LDI	R24,4
     35B 840C      LDD	R0,Y+12
     35C 1580      CP	R24,R0
     35D F408      BCC	0x035F
     35E C105      RJMP	0x0464
(0259) 	{		
(0260) 		switch(Port)
     35F 2CE0      MOV	R14,R0
     360 24FF      CLR	R15
     361 01C7      MOVW	R24,R14
     362 3081      CPI	R24,1
     363 E0E0      LDI	R30,0
     364 079E      CPC	R25,R30
     365 F069      BEQ	0x0373
     366 3082      CPI	R24,2
     367 E0E0      LDI	R30,0
     368 079E      CPC	R25,R30
     369 F091      BEQ	0x037C
     36A 3083      CPI	R24,3
     36B E0E0      LDI	R30,0
     36C 079E      CPC	R25,R30
     36D F0B9      BEQ	0x0385
     36E 3084      CPI	R24,4
     36F E0E0      LDI	R30,0
     370 079E      CPC	R25,R30
     371 F0E1      BEQ	0x038E
     372 C023      RJMP	0x0396
(0261) 		{
(0262) 		    case 0x01:
(0263) 			    STRB_LOW = 0x00;
     373 2400      CLR	R0
     374 8208      STD	Y+0,R0
(0264) 				STRB_HIG = 0x10;
     375 E140      LDI	R20,0x10
(0265) 				CLOK_LOW = 0x00;
     376 8209      STD	Y+1,R0
(0266) 				CLOK_HIG = 0x01;
     377 E061      LDI	R22,1
(0267) 				DATA_LOW = 0x00;
     378 24AA      CLR	R10
(0268) 				DATA_HIG = 0x10;
     379 E180      LDI	R24,0x10
     37A 2EC8      MOV	R12,R24
(0269) 			    break;
     37B C01A      RJMP	0x0396
(0270) 			case 0x02:
(0271) 			    STRB_LOW = 0x00;
     37C 2400      CLR	R0
     37D 8208      STD	Y+0,R0
(0272) 				STRB_HIG = 0x20;
     37E E240      LDI	R20,0x20
(0273) 				CLOK_LOW = 0x00;
     37F 8209      STD	Y+1,R0
(0274) 				CLOK_HIG = 0x02;
     380 E062      LDI	R22,2
(0275) 				DATA_LOW = 0x00;
     381 24AA      CLR	R10
(0276) 				DATA_HIG = 0x20;
     382 E280      LDI	R24,0x20
     383 2EC8      MOV	R12,R24
(0277) 			    break;
     384 C011      RJMP	0x0396
(0278) 			case 0x03:
(0279) 			    STRB_LOW = 0x00;
     385 2400      CLR	R0
     386 8208      STD	Y+0,R0
(0280) 				STRB_HIG = 0x40;
     387 E440      LDI	R20,0x40
(0281) 				CLOK_LOW = 0x00;
     388 8209      STD	Y+1,R0
(0282) 				CLOK_HIG = 0x04;
     389 E064      LDI	R22,4
(0283) 				DATA_LOW = 0x00;
     38A 24AA      CLR	R10
(0284) 				DATA_HIG = 0x40;
     38B E480      LDI	R24,0x40
     38C 2EC8      MOV	R12,R24
(0285) 			    break;
     38D C008      RJMP	0x0396
(0286) 			case 0x04:
(0287) 			    STRB_LOW = 0x00;
     38E 2400      CLR	R0
     38F 8208      STD	Y+0,R0
(0288) 				STRB_HIG = 0x80;
     390 E840      LDI	R20,0x80
(0289) 				CLOK_LOW = 0x00;
     391 8209      STD	Y+1,R0
(0290) 				CLOK_HIG = 0x08;
     392 E068      LDI	R22,0x8
(0291) 				DATA_LOW = 0x00;
     393 24AA      CLR	R10
(0292) 				DATA_HIG = 0x80;
     394 E880      LDI	R24,0x80
     395 2EC8      MOV	R12,R24
(0293) 			    break;
(0294) 		}
(0295) 	 
(0296) 		PORTB=CLOK_LOW;
     396 8009      LDD	R0,Y+1
     397 BA08      OUT	0x18,R0
(0297) 		PORTE=STRB_LOW;
     398 8008      LDD	R0,Y+0
     399 B803      OUT	0x03,R0
(0298) 
(0299) 	    if((Port==1)||(Port==4))         //升降臂,进样泵电机电流0。5A
     39A 858C      LDD	R24,Y+12
     39B 3081      CPI	R24,1
     39C F011      BEQ	0x039F
     39D 3084      CPI	R24,4

⌨️ 快捷键说明

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