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

📄 li_jyq.lst

📁 这段程序是步进电机的细分驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
     39E F429      BNE	0x03A4
(0300) 	   {
(0301) 		PORTB=DATA_HIG;      //D18  	电流范围选择方式 0:VDAC/8Rs  1:VDAC/4Rs
     39F BAC8      OUT	0x18,R12
(0302) 		PORTB=DATA_HIG|CLOK_HIG; 
     3A0 2C2C      MOV	R2,R12
     3A1 2A26      OR	R2,R22
     3A2 BA28      OUT	0x18,R2
(0303) 	   }
     3A3 C004      RJMP	0x03A8
(0304) 	   else                              //进样盘,旋转臂电机电流0。25A
(0305) 	   {
(0306) 		PORTB=DATA_LOW;      //D18  	电流范围选择方式 0:VDAC/8Rs  1:VDAC/4Rs
     3A4 BAA8      OUT	0x18,R10
(0307) 		PORTB=DATA_LOW|CLOK_HIG; 
     3A5 2C2A      MOV	R2,R10
     3A6 2A26      OR	R2,R22
     3A7 BA28      OUT	0x18,R2
(0308) 	   }
(0309) 	    PORTB=DATA_LOW;     //D17 	参考电压方式 0:内部2V参考电压 1:外部参考电压
     3A8 BAA8      OUT	0x18,R10
(0310) 		PORTB=DATA_LOW|CLOK_HIG; 
     3A9 2C2A      MOV	R2,R10
     3AA 2A26      OR	R2,R22
     3AB BA28      OUT	0x18,R2
(0311) 	
(0312) 	    PORTB=DATA_LOW;   	//D16  	H桥2衰减模式 0:混合衰减模式 1:慢衰减模式//
     3AC BAA8      OUT	0x18,R10
(0313) 		PORTB=DATA_LOW|CLOK_HIG;	 
     3AD 2C2A      MOV	R2,R10
     3AE 2A26      OR	R2,R22
     3AF BA28      OUT	0x18,R2
(0314) 	
(0315) 	    PORTB=DATA_LOW;   	//D15 	H桥1衰减模式 0:混合衰减模式 1:慢衰减模式//
     3B0 BAA8      OUT	0x18,R10
(0316) 		PORTB=DATA_LOW|CLOK_HIG;	 	
     3B1 2C2A      MOV	R2,R10
     3B2 2A26      OR	R2,R22
     3B3 BA28      OUT	0x18,R2
(0317) 		
(0318)  	    if(Bridge2DAC&0x80) //D14	绕组2电流方向 0:OUT2B->OUT2A	 0:OUT2A->OUT2B 	
     3B4 8808      LDD	R0,Y+16
     3B5 FE07      SBRS	R0,7
     3B6 C005      RJMP	0x03BC
(0319) 	    {
(0320) 	       PORTB=DATA_HIG;
     3B7 BAC8      OUT	0x18,R12
(0321) 	       PORTB=DATA_HIG|CLOK_HIG;
     3B8 2C2C      MOV	R2,R12
     3B9 2A26      OR	R2,R22
     3BA BA28      OUT	0x18,R2
(0322) 	    }
     3BB C004      RJMP	0x03C0
(0323) 	    else{
(0324) 	       PORTB=DATA_LOW;
     3BC BAA8      OUT	0x18,R10
(0325) 	       PORTB=DATA_LOW|CLOK_HIG;
     3BD 2C2A      MOV	R2,R10
     3BE 2A26      OR	R2,R22
     3BF BA28      OUT	0x18,R2
(0326) 	    }	 	
(0327) 	
(0328)  	    if(Bridge2DAC&0x40) //D13	绕组1电流方向 0:OUT1B->OUT1A	 0:OUT1A->OUT1B
     3C0 8808      LDD	R0,Y+16
     3C1 FE06      SBRS	R0,6
     3C2 C005      RJMP	0x03C8
(0329) 	    {
(0330) 	       PORTB=DATA_HIG;
     3C3 BAC8      OUT	0x18,R12
(0331) 	       PORTB=DATA_HIG|CLOK_HIG;
     3C4 2C2C      MOV	R2,R12
     3C5 2A26      OR	R2,R22
     3C6 BA28      OUT	0x18,R2
(0332) 	    }
     3C7 C004      RJMP	0x03CC
(0333) 	    else{
(0334) 	       PORTB=DATA_LOW;
     3C8 BAA8      OUT	0x18,R10
(0335) 	       PORTB=DATA_LOW|CLOK_HIG;
     3C9 2C2A      MOV	R2,R10
     3CA 2A26      OR	R2,R22
     3CB BA28      OUT	0x18,R2
(0336) 	    }	 	
(0337) 		
(0338)  	    if(Bridge2DAC&0x20)           //D12   绕组2电流数据最高位   (六位 0-64)
     3CC 8808      LDD	R0,Y+16
     3CD FE05      SBRS	R0,5
     3CE C005      RJMP	0x03D4
(0339) 	    {
(0340) 	       PORTB=DATA_HIG;
     3CF BAC8      OUT	0x18,R12
(0341) 	       PORTB=DATA_HIG|CLOK_HIG;
     3D0 2C2C      MOV	R2,R12
     3D1 2A26      OR	R2,R22
     3D2 BA28      OUT	0x18,R2
(0342) 	    }
     3D3 C004      RJMP	0x03D8
(0343) 	    else{
(0344) 	       PORTB=DATA_LOW;
     3D4 BAA8      OUT	0x18,R10
(0345) 	       PORTB=DATA_LOW|CLOK_HIG;
     3D5 2C2A      MOV	R2,R10
     3D6 2A26      OR	R2,R22
     3D7 BA28      OUT	0x18,R2
(0346) 	    }  	
(0347) 		
(0348)  	    if(Bridge2DAC&0x10)           //D11   绕组2电流数据第五位      
     3D8 8808      LDD	R0,Y+16
     3D9 FE04      SBRS	R0,4
     3DA C005      RJMP	0x03E0
(0349) 	    {
(0350) 	       PORTB=DATA_HIG;
     3DB BAC8      OUT	0x18,R12
(0351) 	       PORTB=DATA_HIG|CLOK_HIG;
     3DC 2C2C      MOV	R2,R12
     3DD 2A26      OR	R2,R22
     3DE BA28      OUT	0x18,R2
(0352) 	    }
     3DF C004      RJMP	0x03E4
(0353) 	    else{
(0354) 	       PORTB=DATA_LOW;
     3E0 BAA8      OUT	0x18,R10
(0355) 	       PORTB=DATA_LOW|CLOK_HIG;
     3E1 2C2A      MOV	R2,R10
     3E2 2A26      OR	R2,R22
     3E3 BA28      OUT	0x18,R2
(0356) 	    }  	
(0357) 		
(0358)  	    if(Bridge2DAC&0x08)             //D10   绕组2电流数据第四位 
     3E4 8808      LDD	R0,Y+16
     3E5 FE03      SBRS	R0,3
     3E6 C005      RJMP	0x03EC
(0359) 	    {
(0360) 	       PORTB=DATA_HIG;
     3E7 BAC8      OUT	0x18,R12
(0361) 	       PORTB=DATA_HIG|CLOK_HIG;
     3E8 2C2C      MOV	R2,R12
     3E9 2A26      OR	R2,R22
     3EA BA28      OUT	0x18,R2
(0362) 	    }
     3EB C004      RJMP	0x03F0
(0363) 	    else{
(0364) 	       PORTB=DATA_LOW;
     3EC BAA8      OUT	0x18,R10
(0365) 	       PORTB=DATA_LOW|CLOK_HIG;
     3ED 2C2A      MOV	R2,R10
     3EE 2A26      OR	R2,R22
     3EF BA28      OUT	0x18,R2
(0366) 	    } 	
(0367) 		
(0368)  	    if(Bridge2DAC&0x04)               //D9   绕组2电流数据第三位 
     3F0 8808      LDD	R0,Y+16
     3F1 FE02      SBRS	R0,2
     3F2 C005      RJMP	0x03F8
(0369) 	    {
(0370) 	       PORTB=DATA_HIG;
     3F3 BAC8      OUT	0x18,R12
(0371) 	       PORTB=DATA_HIG|CLOK_HIG;
     3F4 2C2C      MOV	R2,R12
     3F5 2A26      OR	R2,R22
     3F6 BA28      OUT	0x18,R2
(0372) 	    }
     3F7 C004      RJMP	0x03FC
(0373) 	    else{
(0374) 	       PORTB=DATA_LOW;
     3F8 BAA8      OUT	0x18,R10
(0375) 	       PORTB=DATA_LOW|CLOK_HIG;
     3F9 2C2A      MOV	R2,R10
     3FA 2A26      OR	R2,R22
     3FB BA28      OUT	0x18,R2
(0376) 	    }	
(0377) 		
(0378)  	    if(Bridge2DAC&0x02)                 //D8   绕组2电流数据第二位 
     3FC 8808      LDD	R0,Y+16
     3FD FE01      SBRS	R0,1
     3FE C005      RJMP	0x0404
(0379) 	    {
(0380) 	       PORTB=DATA_HIG;
     3FF BAC8      OUT	0x18,R12
(0381) 	       PORTB=DATA_HIG|CLOK_HIG;
     400 2C2C      MOV	R2,R12
     401 2A26      OR	R2,R22
     402 BA28      OUT	0x18,R2
(0382) 	    }
     403 C004      RJMP	0x0408
(0383) 	    else{
(0384) 	       PORTB=DATA_LOW;
     404 BAA8      OUT	0x18,R10
(0385) 	       PORTB=DATA_LOW|CLOK_HIG;
     405 2C2A      MOV	R2,R10
     406 2A26      OR	R2,R22
     407 BA28      OUT	0x18,R2
(0386) 	    }	
(0387) 		
(0388)  	    if(Bridge2DAC&0x01)                  //D7   绕组2电流数据最低位 
     408 8808      LDD	R0,Y+16
     409 FE00      SBRS	R0,0
     40A C005      RJMP	0x0410
(0389) 	    {
(0390) 	       PORTB=DATA_HIG;
     40B BAC8      OUT	0x18,R12
(0391) 	       PORTB=DATA_HIG|CLOK_HIG;
     40C 2C2C      MOV	R2,R12
     40D 2A26      OR	R2,R22
     40E BA28      OUT	0x18,R2
(0392) 	    }
     40F C004      RJMP	0x0414
(0393) 	    else{
(0394) 	       PORTB=DATA_LOW;
     410 BAA8      OUT	0x18,R10
(0395) 	       PORTB=DATA_LOW|CLOK_HIG;
     411 2C2A      MOV	R2,R10
     412 2A26      OR	R2,R22
     413 BA28      OUT	0x18,R2
(0396) 	    }	
(0397) 	 	
(0398)  	    if(Bridge1DAC&0x20)                  //D6   绕组1电流数据最高位(0-64)                
     414 840E      LDD	R0,Y+14
     415 FE05      SBRS	R0,5
     416 C005      RJMP	0x041C
(0399) 	    {
(0400) 	       PORTB=DATA_HIG;
     417 BAC8      OUT	0x18,R12
(0401) 	       PORTB=DATA_HIG|CLOK_HIG;
     418 2C2C      MOV	R2,R12
     419 2A26      OR	R2,R22
     41A BA28      OUT	0x18,R2
(0402) 	    }
     41B C004      RJMP	0x0420
(0403) 	    else{
(0404) 	       PORTB=DATA_LOW;
     41C BAA8      OUT	0x18,R10
(0405) 	       PORTB=DATA_LOW|CLOK_HIG;
     41D 2C2A      MOV	R2,R10
     41E 2A26      OR	R2,R22
     41F BA28      OUT	0x18,R2
(0406) 	    } 	
(0407) 		
(0408)  	    if(Bridge1DAC&0x10)                 //D5   绕组1电流数据第5位 
     420 840E      LDD	R0,Y+14
     421 FE04      SBRS	R0,4
     422 C005      RJMP	0x0428
(0409) 	    {
(0410) 	       PORTB=DATA_HIG;
     423 BAC8      OUT	0x18,R12
(0411) 	       PORTB=DATA_HIG|CLOK_HIG;
     424 2C2C      MOV	R2,R12
     425 2A26      OR	R2,R22
     426 BA28      OUT	0x18,R2
(0412) 	    }
     427 C004      RJMP	0x042C
(0413) 	    else{
(0414) 	       PORTB=DATA_LOW;
     428 BAA8      OUT	0x18,R10
(0415) 	       PORTB=DATA_LOW|CLOK_HIG;
     429 2C2A      MOV	R2,R10
     42A 2A26      OR	R2,R22
     42B BA28      OUT	0x18,R2
(0416) 	    }
(0417) 		
(0418)  	    if(Bridge1DAC&0x08)                   //D4   绕组1电流数据第4位 
     42C 840E      LDD	R0,Y+14
     42D FE03      SBRS	R0,3
     42E C005      RJMP	0x0434
(0419) 	    {
(0420) 	       PORTB=DATA_HIG;
     42F BAC8      OUT	0x18,R12
(0421) 	       PORTB=DATA_HIG|CLOK_HIG;
     430 2C2C      MOV	R2,R12
     431 2A26      OR	R2,R22
     432 BA28      OUT	0x18,R2
(0422) 	    }
     433 C004      RJMP	0x0438
(0423) 	    else{
(0424) 	       PORTB=DATA_LOW;
     434 BAA8      OUT	0x18,R10
(0425) 	       PORTB=DATA_LOW|CLOK_HIG;
     435 2C2A      MOV	R2,R10
     436 2A26      OR	R2,R22
     437 BA28      OUT	0x18,R2
(0426) 	    } 
(0427) 		
(0428)  	    if(Bridge1DAC&0x04)                   //D3   绕组1电流数据第3位 
     438 840E      LDD	R0,Y+14
     439 FE02      SBRS	R0,2
     43A C005      RJMP	0x0440
(0429) 	    {
(0430) 	       PORTB=DATA_HIG;
     43B BAC8      OUT	0x18,R12
(0431) 	       PORTB=DATA_HIG|CLOK_HIG;
     43C 2C2C      MOV	R2,R12
     43D 2A26      OR	R2,R22
     43E BA28      OUT	0x18,R2
(0432) 	    }
     43F C004      RJMP	0x0444
(0433) 	    else{
(0434) 	       PORTB=DATA_LOW;
     440 BAA8      OUT	0x18,R10
(0435) 	       PORTB=DATA_LOW|CLOK_HIG;
     441 2C2A      MOV	R2,R10
     442 2A26      OR	R2,R22
     443 BA28      OUT	0x18,R2
(0436) 	    } 
(0437) 		
(0438)  	    if(Bridge1DAC&0x02)                   //D2   绕组1电流数据第2位 
     444 840E      LDD	R0,Y+14
     445 FE01      SBRS	R0,1
     446 C005      RJMP	0x044C
(0439) 	    {
(0440) 	       PORTB=DATA_HIG;
     447 BAC8      OUT	0x18,R12
(0441) 	       PORTB=DATA_HIG|CLOK_HIG;
     448 2C2C      MOV	R2,R12
     449 2A26      OR	R2,R22
     44A BA28      OUT	0x18,R2
(0442) 	    }
     44B C004      RJMP	0x0450
(0443) 	    else{
(0444) 	       PORTB=DATA_LOW;
     44C BAA8      OUT	0x18,R10
(0445) 	       PORTB=DATA_LOW|CLOK_HIG;
     44D 2C2A      MOV	R2,R10
     44E 2A26      OR	R2,R22
     44F BA28      OUT	0x18,R2
(0446) 	    } 	
(0447) 	
(0448) 	    if(Bridge1DAC&0x01)                   //D1   绕组1电流数据最低位 
     450 840E      LDD	R0,Y+14
     451 FE00      SBRS	R0,0
     452 C005      RJMP	0x0458
(0449) 	    {
(0450) 	       PORTB=DATA_HIG;
     453 BAC8      OUT	0x18,R12
(0451) 	       PORTB=DATA_HIG|CLOK_HIG;
     454 2C2C      MOV	R2,R12
     455 2A26      OR	R2,R22
     456 BA28      OUT	0x18,R2
(0452) 	    }
     457 C004      RJMP	0x045C
(0453) 	    else{
(0454) 	       PORTB=DATA_LOW;
     458 BAA8      OUT	0x18,R10
(0455) 	       PORTB=DATA_LOW|CLOK_HIG;
     459 2C2A      MOV	R2,R10
     45A 2A26      OR	R2,R22
     45B BA28      OUT	0x18,R2
(0456) 	    }	 	
(0457) 
(0458) 	    PORTB=DATA_LOW;                       //D0	数据模式
     45C BAA8      OUT	0x18,R10
(0459) 		PORTB=DATA_LOW|CLOK_HIG; 	 		
     45D 2C2A      MOV	R2,R10
     45E 2A26      OR	R2,R22
     45F BA28      OUT	0x18,R2
(0460) 		
(0461) 	    PORTE=STRB_HIG;	 
     460 B943      OUT	0x03,R20
(0462) 	    PORTE=STRB_HIG;
     461 B943      OUT	0x03,R20
(0463) 		
(0464) 		return 0x01;
     462 E001      LDI	R16,1
     463 C001      RJMP	0x0465
(0465) 	}
(0466) 	else{
(0467) 		return 0x00;
     464 2700      CLR	R16
     465 9622      ADIW	R28,2
     466 940E 1736 CALL	pop_xgsetF0FC
     468 9624      ADIW	R28,4
     469 9508      RET
(0468) 	}
(0469) 	
(0470) }
(0471) 
(0472) //输出数据
(0473) void outportb(uint Addr, uchar Data)
(0474) {
(0475)    if(Addr==D12_DATA)
_outportb:
  Data                 --> R18
  Addr                 --> R16
     46A 3000      CPI	R16,0
     46B 0701      CPC	R16,R17
     46C F419      BNE	0x0470
(0476)    {
(0477)        USB_DATA = Data;   
     46D 9320 F000 STS	0xF000,R18
(0478)    }
     46F C006      RJMP	0x0476
(0479)    else if(Addr==D12_COMMAND)
     470 3001      CPI	R16,1
     471 E0E0      LDI	R30,0
     472 071E      CPC	R17,R30
     473 F411      BNE	0x0476
(0480)    {
(0481)        USB_COMMAND = Data; 
     474 9320 F001 STS	0xF001,R18
(0482)    }
     476 9508      RET
_inportb:
  Data                 --> R10
  Addr                 --> R16
     477 92AA      ST	R10,-Y
(0483) }
(0484) 
(0485) //输入数据
(0486) uchar inportb(uint Addr)
(0487) {
(0488)    unsigned char Data;
(0489)    
(0490)    if(Addr==D12_DATA)
     478 3000      CPI	R16,0
     479 0701      CPC	R16,R17
     47A F419      BNE	0x047E
(0491)    {
(0492)       Data = USB_DATA;   
     47B 90A0 F000 LDS	R10,0xF000
(0493)    }

⌨️ 快捷键说明

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