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

📄 li_jyq.lst

📁 这段程序是步进电机的细分驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
     18E EFCF      LDI	R28,0xFF
     18F E1D0      LDI	R29,0x10
     190 BFCD      OUT	0x3D,R28
     191 BFDE      OUT	0x3E,R29
     192 54C0      SUBI	R28,0x40
     193 40D0      SBCI	R29,0
     194 EA0A      LDI	R16,0xAA
     195 8308      STD	Y+0,R16
     196 2400      CLR	R0
     197 E4EE      LDI	R30,0x4E
     198 E0F3      LDI	R31,3
     199 E013      LDI	R17,3
     19A 3FE2      CPI	R30,0xF2
     19B 07F1      CPC	R31,R17
     19C F011      BEQ	0x019F
     19D 9201      ST	R0,Z+
     19E CFFB      RJMP	0x019A
     19F 8300      STD	Z+0,R16
     1A0 ECEE      LDI	R30,0xCE
     1A1 E0F0      LDI	R31,0
     1A2 E0A0      LDI	R26,0
     1A3 E0B1      LDI	R27,1
     1A4 E013      LDI	R17,3
     1A5 31EC      CPI	R30,0x1C
     1A6 07F1      CPC	R31,R17
     1A7 F021      BEQ	0x01AC
     1A8 95C8      LPM
     1A9 9631      ADIW	R30,1
     1AA 920D      ST	R0,X+
     1AB CFF9      RJMP	0x01A5
     1AC 940E 15DE CALL	_main
_exit:
     1AE CFFF      RJMP	_exit
FILE: D:\LZY归档\最新进样器文件\最新带锁进样器程序\调试程序1.c
(0001) //****************************************************************************
(0002) //功能描述:引导程序 
(0003) //文件名称:AutoBootLoad.c
(0004) //更新时间:2007年03月02日
(0005) //微控制器:ATmega128
(0006) //外部时钟:12MHz
(0007) //编译版本:ICCAVR Version 6.25A Built May 15 2002 8:20:03
(0008) //特别说明:本程序使用于自动进样器改进版控制电路中,完成引导在线自动更新程序用;
(0009) //****************************************************************************
(0010) 
(0011) #include <iom128v.h>
(0012) #include <STDIO.H>
(0013) #include <macros.h>
(0014) #include <eeprom.h>
(0015) #include "ZDJY.h"
(0016) 
(0017) //void MainSend(void)
(0018) 
(0019) void port_init(void)               //端口初始化
(0020) {
(0021)  	 PORTA = 0xFF;
_port_init:
     1AF EF8F      LDI	R24,0xFF
     1B0 BB8B      OUT	0x1B,R24
(0022)  	 DDRA  = 0xFF;
     1B1 BB8A      OUT	0x1A,R24
(0023)  	 PORTB = 0xFF;
     1B2 BB88      OUT	0x18,R24
(0024)  	 DDRB  = 0xFF;
     1B3 BB87      OUT	0x17,R24
(0025)  	 PORTC = 0xFF;
     1B4 BB85      OUT	0x15,R24
(0026)  	 DDRC  = 0xFF;
     1B5 BB84      OUT	0x14,R24
(0027)  	 PORTD = 0xFF;
     1B6 BB82      OUT	0x12,R24
(0028)  	 DDRD  = 0x00;
     1B7 2422      CLR	R2
     1B8 BA21      OUT	0x11,R2
(0029)  	 PORTE = 0xFF;
     1B9 B983      OUT	0x03,R24
(0030)  	 DDRE  = 0xFF;
     1BA B982      OUT	0x02,R24
(0031)      PORTF = 0xFB;
     1BB EF8B      LDI	R24,0xFB
     1BC 9380 0062 STS	0x0062,R24
(0032)  	 DDRF  = 0xFF;
     1BE EF8F      LDI	R24,0xFF
     1BF 9380 0061 STS	0x0061,R24
(0033)  	 PORTG = 0x1F;
     1C1 E18F      LDI	R24,0x1F
     1C2 9380 0065 STS	0x0065,R24
(0034)  	 DDRG  = 0x1F;
     1C4 9380 0064 STS	0x0064,R24
     1C6 9508      RET
(0035) }
(0036) 
(0037) 
(0038) void init_devices(void)                         //寄存器处始化        
(0039) {
(0040)  	 //stop errant interrupts until set up
(0041)  	 CLI(); //disable all interrupts
_init_devices:
     1C7 94F8      BCLR	7
(0042)  	 XDIV  = 0x00; //xtal divider
     1C8 2422      CLR	R2
     1C9 BE2C      OUT	0x3C,R2
(0043)  	 XMCRA = 0x00; //external memory
     1CA 9220 006D STS	0x006D,R2
(0044)  	 port_init();
     1CC DFE2      RCALL	_port_init
(0045) 
(0046)  	 MCUCR = 0x00;
     1CD 2422      CLR	R2
     1CE BE25      OUT	0x35,R2
(0047)  	 EICRA = 0x00; //extended ext ints
     1CF 9220 006A STS	0x006A,R2
(0048)  	 EICRB = 0x00; //extended ext ints
     1D1 BE2A      OUT	0x3A,R2
(0049)  	 EIMSK = 0x00;
     1D2 BE29      OUT	0x39,R2
(0050)  	 TIMSK = 0x00; //timer interrupt sources
     1D3 BE27      OUT	0x37,R2
(0051)  	 ETIMSK = 0x00; //extended timer interrupt sources
     1D4 9220 007D STS	0x007D,R2
(0052) 	// PORTC = 0x00;
(0053)      MCUCR|= 0x80;
     1D6 B785      IN	R24,0x35
     1D7 6880      ORI	R24,0x80
     1D8 BF85      OUT	0x35,R24
(0054)      //SFIOR = 0X00;
(0055)      XMCRA = 0x00; 
     1D9 9220 006D STS	0x006D,R2
(0056)  	 SEI(); //re-enable interrupts
     1DB 9478      BSET	7
     1DC 9508      RET
_InitMotor:
  STRB_HIG             --> R20
  STRB_LOW             --> R14
  DATA_HIG             --> R10
  CLOK_HIG             --> R22
  CLOK_LOW             --> Y,+1
  DATA_LOW             --> Y,+0
  Port                 --> R16
     1DD 940E 1741 CALL	push_xgsetF0FC
     1DF 9722      SBIW	R28,2
(0057)  	 //all peripherals are now initialised
(0058) }
(0059) 
(0060) 
(0061) unsigned char InitMotor(unsigned char Port)       //步进电机初始化
(0062) {
(0063) 	unsigned char STRB_LOW,CLOK_LOW,DATA_LOW;
(0064) 	unsigned char STRB_HIG,CLOK_HIG,DATA_HIG;
(0065) 		
(0066) 	if((Port>=0x01)&&(Port<=0x04))
     1E0 3001      CPI	R16,1
     1E1 F408      BCC	0x01E3
     1E2 C16A      RJMP	0x034D
     1E3 E084      LDI	R24,4
     1E4 1780      CP	R24,R16
     1E5 F408      BCC	0x01E7
     1E6 C166      RJMP	0x034D
(0067) 	{		
(0068) 		switch(Port)
     1E7 2EC0      MOV	R12,R16
     1E8 24DD      CLR	R13
     1E9 01C6      MOVW	R24,R12
     1EA 3081      CPI	R24,1
     1EB E0E0      LDI	R30,0
     1EC 079E      CPC	R25,R30
     1ED F069      BEQ	0x01FB
     1EE 3082      CPI	R24,2
     1EF E0E0      LDI	R30,0
     1F0 079E      CPC	R25,R30
     1F1 F091      BEQ	0x0204
     1F2 3083      CPI	R24,3
     1F3 E0E0      LDI	R30,0
     1F4 079E      CPC	R25,R30
     1F5 F0B9      BEQ	0x020D
     1F6 3084      CPI	R24,4
     1F7 E0E0      LDI	R30,0
     1F8 079E      CPC	R25,R30
     1F9 F0E1      BEQ	0x0216
     1FA C023      RJMP	0x021E
(0069) 		{
(0070) 		    case 0x01:
(0071) 			    STRB_LOW = 0x00;
     1FB 24EE      CLR	R14
(0072) 				STRB_HIG = 0x10;
     1FC E140      LDI	R20,0x10
(0073) 				CLOK_LOW = 0x00;
     1FD 2400      CLR	R0
     1FE 8209      STD	Y+1,R0
(0074) 				CLOK_HIG = 0x01;
     1FF E061      LDI	R22,1
(0075) 				DATA_LOW = 0x00;
     200 8208      STD	Y+0,R0
(0076) 				DATA_HIG = 0x10;
     201 E180      LDI	R24,0x10
     202 2EA8      MOV	R10,R24
(0077) 			    break;
     203 C01A      RJMP	0x021E
(0078) 			case 0x02:
(0079) 			    STRB_LOW = 0x00;
     204 24EE      CLR	R14
(0080) 				STRB_HIG = 0x20;
     205 E240      LDI	R20,0x20
(0081) 				CLOK_LOW = 0x00;
     206 2400      CLR	R0
     207 8209      STD	Y+1,R0
(0082) 				CLOK_HIG = 0x02;
     208 E062      LDI	R22,2
(0083) 				DATA_LOW = 0x00;
     209 8208      STD	Y+0,R0
(0084) 				DATA_HIG = 0x20;
     20A E280      LDI	R24,0x20
     20B 2EA8      MOV	R10,R24
(0085) 			    break;
     20C C011      RJMP	0x021E
(0086) 			case 0x03:
(0087) 			    STRB_LOW = 0x00;
     20D 24EE      CLR	R14
(0088) 				STRB_HIG = 0x40;
     20E E440      LDI	R20,0x40
(0089) 				CLOK_LOW = 0x00;
     20F 2400      CLR	R0
     210 8209      STD	Y+1,R0
(0090) 				CLOK_HIG = 0x04;
     211 E064      LDI	R22,4
(0091) 				DATA_LOW = 0x00;
     212 8208      STD	Y+0,R0
(0092) 				DATA_HIG = 0x40;
     213 E480      LDI	R24,0x40
     214 2EA8      MOV	R10,R24
(0093) 			    break;
     215 C008      RJMP	0x021E
(0094) 			case 0x04:
(0095) 			    STRB_LOW = 0x00;
     216 24EE      CLR	R14
(0096) 				STRB_HIG = 0x80;
     217 E840      LDI	R20,0x80
(0097) 				CLOK_LOW = 0x00;
     218 2400      CLR	R0
     219 8209      STD	Y+1,R0
(0098) 				CLOK_HIG = 0x08;
     21A E068      LDI	R22,0x8
(0099) 				DATA_LOW = 0x00;
     21B 8208      STD	Y+0,R0
(0100) 				DATA_HIG = 0x80;
     21C E880      LDI	R24,0x80
     21D 2EA8      MOV	R10,R24
(0101) 			    break;
(0102) 		}
(0103) 	 
(0104) 		PORTB=CLOK_LOW;
     21E 8009      LDD	R0,Y+1
     21F BA08      OUT	0x18,R0
(0105) 		PORTB=CLOK_LOW;
     220 BA08      OUT	0x18,R0
(0106) 		PORTE=STRB_LOW;
     221 B8E3      OUT	0x03,R14
(0107) 		PORTE=STRB_LOW;
     222 B8E3      OUT	0x03,R14
(0108) 	 
(0109) 	    PORTB=DATA_HIG;  //D18		0:处于低功耗状态,输出被禁止,1:正常工作状态			
     223 BAA8      OUT	0x18,R10
(0110) 		PORTB=DATA_HIG;
     224 BAA8      OUT	0x18,R10
(0111) 		PORTB=DATA_HIG|CLOK_LOW;
     225 2C2A      MOV	R2,R10
     226 2820      OR	R2,R0
     227 BA28      OUT	0x18,R2
(0112) 		PORTB=DATA_HIG|CLOK_LOW;
     228 2C2A      MOV	R2,R10
     229 2820      OR	R2,R0
     22A BA28      OUT	0x18,R2
(0113) 		PORTB=DATA_HIG|CLOK_HIG;
     22B 2C2A      MOV	R2,R10
     22C 2A26      OR	R2,R22
     22D BA28      OUT	0x18,R2
(0114) 		PORTB=DATA_HIG|CLOK_HIG;
     22E 2C2A      MOV	R2,R10
     22F 2A26      OR	R2,R22
     230 BA28      OUT	0x18,R2
(0115) 	 
(0116) 	    PORTB=DATA_LOW; //D17		11:测试状态,00:正常工作
     231 8008      LDD	R0,Y+0
     232 BA08      OUT	0x18,R0
(0117) 		PORTB=DATA_LOW;
     233 BA08      OUT	0x18,R0
(0118) 		PORTB=DATA_LOW|CLOK_LOW;
     234 2C20      MOV	R2,R0
     235 8009      LDD	R0,Y+1
     236 2820      OR	R2,R0
     237 BA28      OUT	0x18,R2
(0119) 		PORTB=DATA_LOW|CLOK_LOW;
     238 8028      LDD	R2,Y+0
     239 2820      OR	R2,R0
     23A BA28      OUT	0x18,R2
(0120) 		PORTB=DATA_LOW|CLOK_HIG;
     23B 8028      LDD	R2,Y+0
     23C 2A26      OR	R2,R22
     23D BA28      OUT	0x18,R2
(0121) 		PORTB=DATA_LOW|CLOK_HIG;
     23E 8028      LDD	R2,Y+0
     23F 2A26      OR	R2,R22
     240 BA28      OUT	0x18,R2
(0122) 	     
(0123) 	    PORTB=DATA_LOW; //D16
     241 8008      LDD	R0,Y+0
     242 BA08      OUT	0x18,R0
(0124) 		PORTB=DATA_LOW;
     243 BA08      OUT	0x18,R0
(0125) 		PORTB=DATA_LOW|CLOK_LOW;
     244 2C20      MOV	R2,R0
     245 8009      LDD	R0,Y+1
     246 2820      OR	R2,R0
     247 BA28      OUT	0x18,R2
(0126) 		PORTB=DATA_LOW|CLOK_LOW;
     248 8028      LDD	R2,Y+0
     249 2820      OR	R2,R0
     24A BA28      OUT	0x18,R2
(0127) 		PORTB=DATA_LOW|CLOK_HIG;
     24B 8028      LDD	R2,Y+0
     24C 2A26      OR	R2,R22
     24D BA28      OUT	0x18,R2
(0128) 		PORTB=DATA_LOW|CLOK_HIG;
     24E 8028      LDD	R2,Y+0
     24F 2A26      OR	R2,R22
     250 BA28      OUT	0x18,R2
(0129) 	    
(0130) 	    PORTB=DATA_LOW; //D15		00:主动模式,01:被动模式,10:禁止模式,11:下桥臂模式
     251 8008      LDD	R0,Y+0
     252 BA08      OUT	0x18,R0
(0131) 		PORTB=DATA_LOW;
     253 BA08      OUT	0x18,R0
(0132) 		PORTB=DATA_LOW|CLOK_LOW;
     254 2C20      MOV	R2,R0
     255 8009      LDD	R0,Y+1
     256 2820      OR	R2,R0
     257 BA28      OUT	0x18,R2
(0133) 		PORTB=DATA_LOW|CLOK_LOW;
     258 8028      LDD	R2,Y+0
     259 2820      OR	R2,R0
     25A BA28      OUT	0x18,R2
(0134) 		PORTB=DATA_LOW|CLOK_HIG;
     25B 8028      LDD	R2,Y+0
     25C 2A26      OR	R2,R22
     25D BA28      OUT	0x18,R2
(0135) 		PORTB=DATA_LOW|CLOK_HIG;
     25E 8028      LDD	R2,Y+0
     25F 2A26      OR	R2,R22
     260 BA28      OUT	0x18,R2
(0136) 	     
(0137) 	    PORTB=DATA_LOW; //D14    
     261 8008      LDD	R0,Y+0
     262 BA08      OUT	0x18,R0
(0138) 		PORTB=DATA_LOW;
     263 BA08      OUT	0x18,R0
(0139) 		PORTB=DATA_LOW|CLOK_LOW;
     264 2C20      MOV	R2,R0
     265 8009      LDD	R0,Y+1
     266 2820      OR	R2,R0
     267 BA28      OUT	0x18,R2
(0140) 		PORTB=DATA_LOW|CLOK_LOW;
     268 8028      LDD	R2,Y+0
     269 2820      OR	R2,R0
     26A BA28      OUT	0x18,R2
(0141) 		PORTB=DATA_LOW|CLOK_HIG;
     26B 8028      LDD	R2,Y+0
     26C 2A26      OR	R2,R22
     26D BA28      OUT	0x18,R2
(0142) 		PORTB=DATA_LOW|CLOK_HIG;
     26E 8028      LDD	R2,Y+0
     26F 2A26      OR	R2,R22
     270 BA28      OUT	0x18,R2
(0143) 	 
(0144) 	    PORTB=DATA_LOW; //D13		00:内部4MHZ晶振,01:外部时钟,10:外部时钟1/2,11:外部时钟1/4		
     271 8008      LDD	R0,Y+0
     272 BA08      OUT	0x18,R0
(0145) 		PORTB=DATA_LOW;	
     273 BA08      OUT	0x18,R0
(0146) 		PORTB=DATA_LOW|CLOK_LOW;
     274 2C20      MOV	R2,R0
     275 8009      LDD	R0,Y+1
     276 2820      OR	R2,R0
     277 BA28      OUT	0x18,R2
(0147) 		PORTB=DATA_LOW|CLOK_LOW;
     278 8028      LDD	R2,Y+0
     279 2820      OR	R2,R0
     27A BA28      OUT	0x18,R2
(0148) 		PORTB=DATA_LOW|CLOK_HIG;
     27B 8028      LDD	R2,Y+0
     27C 2A26      OR	R2,R22
     27D BA28      OUT	0x18,R2
(0149) 		PORTB=DATA_LOW|CLOK_HIG;
     27E 8028      LDD	R2,Y+0
     27F 2A26      OR	R2,R22
     280 BA28      OUT	0x18,R2
(0150) 	 
(0151) 	    PORTB=DATA_LOW; //D12
     281 8008      LDD	R0,Y+0
     282 BA08      OUT	0x18,R0
(0152) 		PORTB=DATA_LOW;
     283 BA08      OUT	0x18,R0
(0153) 		PORTB=DATA_LOW|CLOK_LOW;
     284 2C20      MOV	R2,R0
     285 8009      LDD	R0,Y+1
     286 2820      OR	R2,R0
     287 BA28      OUT	0x18,R2
(0154) 		PORTB=DATA_LOW|CLOK_LOW;
     288 8028      LDD	R2,Y+0
     289 2820      OR	R2,R0
     28A BA28      OUT	0x18,R2
(0155) 		PORTB=DATA_LOW|CLOK_HIG;
     28B 8028      LDD	R2,Y+0
     28C 2A26      OR	R2,R22
     28D BA28      OUT	0x18,R2
(0156) 		PORTB=DATA_LOW|CLOK_HIG;
     28E 8028      LDD	R2,Y+0
     28F 2A26      OR	R2,R22
     290 BA28      OUT	0x18,R2

⌨️ 快捷键说明

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