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

📄 main.lst

📁 前两年在一家模型公司开发的
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0433 9220010E  STS	rxd_flag,R2
    0435 C002      RJMP	0x0438
(0459) 	
(0460) 	while(1)
(0461) 	{	
(0462) 		Gun_set();		
    0436 DCE4      RCALL	_Gun_set
(0463) 		Setup();	
    0437 DE0E      RCALL	_Setup
    0438 CFFD      RJMP	0x0436
    0439 9508      RET
FILE: E:\TWINTI~1\adc.c
(0001) 
(0002) /********************************************************************************/
(0003) //		
(0004) // 		builder : 2007-04-10
(0005) // 		Target  : ATMEAG 48V
(0006) // 		Crystal : 内部 8.00 MHz
(0007) //
(0008) //		ADC 转换模块
(0009) 		
(0010) /********************************************************************************/
(0011) 
(0012) #include 	<iom48v.h>
(0013) #include 	<macros.h>
(0014) 
(0015) #define		uchar	unsigned char
(0016) #define		uint	unsigned int
(0017) 
(0018) #define 	CH0		0x40
(0019) #define		CH1		0x41
(0020) #define		CH2		0x42
(0021) #define 	CH3     0x43
(0022) #define 	CH4		0x44
(0023) #define		CH5		0x45
(0024) #define		CH6		0x46
(0025) #define 	CH7     0x47
(0026) 
(0027) 
(0028) void adc_int(void)
(0029) {
(0030) 	 ADMUX	= 0x40;		//set adc power avcc and the ref is Avref
_adc_int:
    043A E480      LDI	R24,0x40
    043B 9380007C  STS	0x7C,R24
(0031)  	 ADCSRA	= 0xC2; 	//enable adc and the div parame is 8	 
    043D EC82      LDI	R24,0xC2
    043E 9380007A  STS	0x7A,R24
    0440 9508      RET
_adc_colect:
  adh                  --> R20
  ad_add               --> R22
  temp1                --> R12
  i                    --> R10
  temp                 --> R14
  chanal               --> R16
    0441 D0DA      RCALL	push_gset5
(0032) }
(0033) 
(0034) 
(0035) /*---------------------------------------------------------------
(0036)    			ADC 
(0037) ----------------------------------------------------------------*/
(0038) 
(0039) uint adc_colect(uchar chanal)
(0040) {
(0041)  	uchar i;
(0042) 	uint  ad_add;
(0043) 	uint  temp,temp1;
(0044) 	uint  adh;
(0045) 	
(0046) 	if(chanal==0)  		ADMUX = CH0;
    0442 2300      TST	R16
    0443 F421      BNE	0x0448
    0444 E480      LDI	R24,0x40
    0445 9380007C  STS	0x7C,R24
    0447 C029      RJMP	0x0471
(0047) 	else if(chanal==1)	ADMUX = CH1;
    0448 3001      CPI	R16,1
    0449 F421      BNE	0x044E
    044A E481      LDI	R24,0x41
    044B 9380007C  STS	0x7C,R24
    044D C023      RJMP	0x0471
(0048) 	else if(chanal==2)	ADMUX = CH2;
    044E 3002      CPI	R16,2
    044F F421      BNE	0x0454
    0450 E482      LDI	R24,0x42
    0451 9380007C  STS	0x7C,R24
    0453 C01D      RJMP	0x0471
(0049) 	else if(chanal==3)	ADMUX = CH3;
    0454 3003      CPI	R16,3
    0455 F421      BNE	0x045A
    0456 E483      LDI	R24,0x43
    0457 9380007C  STS	0x7C,R24
    0459 C017      RJMP	0x0471
(0050) 	else if(chanal==4)	ADMUX = CH4;
    045A 3004      CPI	R16,4
    045B F421      BNE	0x0460
    045C E484      LDI	R24,0x44
    045D 9380007C  STS	0x7C,R24
    045F C011      RJMP	0x0471
(0051) 	else if(chanal==5)	ADMUX = CH5;
    0460 3005      CPI	R16,5
    0461 F421      BNE	0x0466
    0462 E485      LDI	R24,0x45
    0463 9380007C  STS	0x7C,R24
    0465 C00B      RJMP	0x0471
(0052) 	else if(chanal==6)	ADMUX = CH6;
    0466 3006      CPI	R16,6
    0467 F421      BNE	0x046C
    0468 E486      LDI	R24,0x46
    0469 9380007C  STS	0x7C,R24
    046B C005      RJMP	0x0471
(0053) 	else if(chanal==7)	ADMUX = CH7;
    046C 3007      CPI	R16,7
    046D F419      BNE	0x0471
    046E E487      LDI	R24,0x47
    046F 9380007C  STS	0x7C,R24
(0054) 	
(0055) 	ad_add = 0;
    0471 2766      CLR	R22
    0472 2777      CLR	R23
(0056) 	
(0057) 	for(i=0;i<8;i++)
    0473 24AA      CLR	R10
    0474 C022      RJMP	0x0497
(0058) 	{
(0059)  		ADCSRA = ADCSRA|(1<<ADSC);			   //start the adc
    0475 9180007A  LDS	R24,0x7A
    0477 6480      ORI	R24,0x40
    0478 9380007A  STS	0x7A,R24
(0060) 		while(ADCSRA&(1<<ADSC));			   //wait for the adc finish
    047A 9020007A  LDS	R2,0x7A
    047C FC26      SBRC	R2,6
    047D CFFC      RJMP	0x047A
(0061)  		
(0062)  		ADCSRA = ADCSRA|(1<<ADSC);			   //start the adc
    047E 9180007A  LDS	R24,0x7A
    0480 6480      ORI	R24,0x40
    0481 9380007A  STS	0x7A,R24
(0063) 		while(ADCSRA&(1<<ADSC));			   //wait for the adc finish
    0483 9020007A  LDS	R2,0x7A
    0485 FC26      SBRC	R2,6
    0486 CFFC      RJMP	0x0483
(0064) 		
(0065) 		temp1 = ADCL;
    0487 90C00078  LDS	R12,0x78
    0489 24DD      CLR	R13
(0066) 		temp  = (ADCH&0x03)<<8;
    048A 91800079  LDS	R24,0x79
    048C 2799      CLR	R25
    048D 7083      ANDI	R24,3
    048E 7090      ANDI	R25,0
    048F 017C      MOVW	R14,R24
    0490 2CFE      MOV	R15,R14
    0491 24EE      CLR	R14
(0067) 		temp   += temp1;
    0492 0CEC      ADD	R14,R12
    0493 1CFD      ADC	R15,R13
(0068) 		ad_add += temp;                                                                      
    0494 0D6E      ADD	R22,R14
    0495 1D7F      ADC	R23,R15
    0496 94A3      INC	R10
    0497 2D8A      MOV	R24,R10
    0498 3088      CPI	R24,0x8
    0499 F2D8      BCS	0x0475
(0069) 	}
(0070) 	adh = ad_add>>3;
    049A 01AB      MOVW	R20,R22
    049B 9556      LSR	R21
    049C 9547      ROR	R20
    049D 9556      LSR	R21
    049E 9547      ROR	R20
    049F 9556      LSR	R21
    04A0 9547      ROR	R20
(0071) 	return(adh);
    04A1 018A      MOVW	R16,R20
    04A2 D077      RCALL	pop_gset5
    04A3 9508      RET
FILE: E:\TWINTI~1\eeprom.c
(0001) 
(0002) //#include <avr/io.h>
(0003) //#include <avr/delay.h>
(0004) //#include <avr/signal.h>
(0005) //#include <avr/interrupt.h>
(0006) 
(0007) #include 	<iom48v.h>
(0008) #include 	<macros.h>
(0009) 
(0010) void init_eeprom(void)
(0011) {
(0012)  	 EECR = 0x07;
_init_eeprom:
    04A4 E087      LDI	R24,7
    04A5 BB8F      OUT	0x1F,R24
    04A6 9508      RET
(0013) }
(0014) 
(0015) void EEPROM_write(unsigned char Address, unsigned char Datas)
(0016) {
(0017) 	while(EECR & (1<<EEWE));// 等待上一次写操作结束 
_EEPROM_write:
  Datas                --> R18
  Address              --> R16
    04A7 99F9      SBIC	0x1F,1
    04A8 CFFE      RJMP	_EEPROM_write
(0018) 	
(0019) 	EEARL= Address;			// 设置地址和数据寄存器 
    04A9 BD01      OUT	0x21,R16
(0020) 	EEDR = Datas;
    04AA BD20      OUT	0x20,R18
(0021) 	EECR |= (1<<EEMWE);		// 置位EEMWE
    04AB 9AFA      SBI	0x1F,2
(0022) 	EECR |= (1<<EEWE);		// 置位EEWE 以启动写操作E
    04AC 9AF9      SBI	0x1F,1
    04AD 9508      RET
(0023) }
(0024) 
(0025) 
(0026) 
(0027) unsigned char EEPROM_read(unsigned char uiAddress)
(0028) {
(0029) 	while(EECR&(1<<EEWE));	//等待上一次写操作结束
_EEPROM_read:
  uiAddress            --> R16
    04AE 99F9      SBIC	0x1F,1
    04AF CFFE      RJMP	_EEPROM_read
(0030) 	EEARL = uiAddress;		// 设置地址寄存器
    04B0 BD01      OUT	0x21,R16
(0031) 	EECR |= (1<<EERE);		// 设置EERE 以启动读操作
    04B1 9AF8      SBI	0x1F,0
(0032) 	return EEDR;			// 自数据寄存器返回数据
    04B2 B500      IN	R16,0x20
    04B3 9508      RET
FILE: E:\TWINTI~1\time2.c
(0001) /********************************************************************************/
(0002) //		
(0003) // 		builder : 2007-04-10
(0004) // 		Target  : ATMEAG 48V
(0005) // 		Crystal : 内部 8.00 MHz
(0006) //
(0007) //		PWM 模块
(0008) 		
(0009) /********************************************************************************/
(0010) 
(0011) 
(0012) #include 	<iom48v.h>
(0013) #include 	<macros.h>
(0014) 
(0015) #define		uchar	unsigned char
(0016) #define		uint	unsigned int
(0017) 	
(0018) #define		CLR_REV1	PORTD &= ~(1<<PD6)
(0019) #define		SET_REV1	PORTD |=  (1<<PD6)
(0020) 
(0021) #define		CLR_JUST1	PORTB &= ~(1<<PB4)
(0022) #define		SET_JUST1	PORTB |=  (1<<PB4)
(0023) 
(0024) 
(0025) 
(0026) //TIMER0 initialize - prescale:8
(0027) // desired value: 1Hz
(0028) // actual value: Out of range
(0029) extern void timer2_init(void)
(0030) {
(0031)  	TCCR2B  = 0x00; //stop
_timer2_init:
    04B4 2422      CLR	R2
    04B5 922000B1  STS	0xB1,R2
(0032)  	ASSR   	= 0x00; //set async mode
    04B7 922000B6  STS	0xB6,R2
(0033)  	TCNT2  	= 0x01; //setup
    04B9 E081      LDI	R24,1
    04BA 938000B2  STS	0xB2,R24
(0034)  	TCCR2A 	= 0xA1; 
    04BC EA81      LDI	R24,0xA1
    04BD 938000B0  STS	0xB0,R24
(0035)  	OCR2B 	= 0x00;
    04BF 922000B4  STS	0xB4,R2
(0036) 	TCCR2B 	= 0x02;
    04C1 E082      LDI	R24,2
    04C2 938000B1  STS	0xB1,R24
    04C4 9508      RET
(0037) }
(0038) 
(0039) /*---------------------------------------------------------------
(0040)    			PWM 占空比设置 
(0041) ----------------------------------------------------------------*/
(0042) 
(0043) extern void Pwm_set(uchar pwm,uchar rev)
(0044) {
(0045) 	if(rev==2)
_Pwm_set:
  rev                  --> R18
  pwm                  --> R16
    04C5 3022      CPI	R18,2
    04C6 F441      BNE	0x04CF
(0046) 	{
(0047) 		OCR2A 	= 0;
    04C7 2422      CLR	R2
    04C8 922000B3  STS	0xB3,R2
(0048) 		OCR2B 	= pwm;
    04CA 930000B4  STS	0xB4,R16
(0049) 		CLR_REV1;
    04CC 985E      CBI	0x0B,6
(0050) 		SET_JUST1;
    04CD 9A2C      SBI	0x05,4
(0051) 	}
    04CE C01A      RJMP	0x04E9
(0052) 	else if(rev==1)
    04CF 3021      CPI	R18,1
    04D0 F441      BNE	0x04D9
(0053) 	{
(0054) 		OCR2A 	= pwm;
    04D1 930000B3  STS	0xB3,R16
(0055) 		OCR2B 	= 0;
    04D3 2422      CLR	R2
    04D4 922000B4  STS	0xB4,R2
(0056) 		SET_REV1;
    04D6 9A5E      SBI	0x0B,6
(0057) 		CLR_JUST1;
    04D7 982C      CBI	0x05,4
(0058) 	}
    04D8 C010      RJMP	0x04E9
(0059) 	else if(rev==3)
    04D9 3023      CPI	R18,3
    04DA F439      BNE	0x04E2
(0060) 	{
(0061) 		OCR2A 	= pwm;
    04DB 930000B3  STS	0xB3,R16
(0062) 		OCR2B 	= pwm;
    04DD 930000B4  STS	0xB4,R16
(0063) 		CLR_REV1;
    04DF 985E      CBI	0x0B,6
(0064) 		CLR_JUST1;
    04E0 982C      CBI	0x05,4
(0065) 	}
    04E1 C007      RJMP	0x04E9
(0066) 	else 
(0067) 	{
(0068) 		OCR2A 	= 0;
    04E2 2422      CLR	R2
    04E3 922000B3  STS	0xB3,R2
(0069) 		OCR2B 	= 0;
    04E5 922000B4  STS	0xB4,R2
(0070) 		CLR_REV1;
    04E7 985E      CBI	0x0B,6
(0071) 		CLR_JUST1;
    04E8 982C      CBI	0x05,4
(0072) 	}
FILE: <library>
    04E9 9508      RET
mod16u:
    04EA 9468      BSET	6
    04EB C001      RJMP	xdiv16u
div16u:
    04EC 94E8      BCLR	6
xdiv16u:
    04ED 92EA      ST	R14,-Y
    04EE 92FA      ST	R15,-Y
    04EF 938A      ST	R24,-Y
    04F0 24EE      CLR	R14
    04F1 24FF      CLR	R15
    04F2 E180      LDI	R24,0x10
    04F3 0F00      LSL	R16
    04F4 1F11      ROL	R17
    04F5 1CEE      ROL	R14
    04F6 1CFF      ROL	R15
    04F7 16E2      CP	R14,R18
    04F8 06F3      CPC	R15,R19
    04F9 F018      BCS	0x04FD
    04FA 1AE2      SUB	R14,R18
    04FB 0AF3      SBC	R15,R19
    04FC 9503      INC	R16
    04FD 958A      DEC	R24
    04FE F7A1      BNE	0x04F3
    04FF F416      BRTC	0x0502
    0500 2D0E      MOV	R16,R14
    0501 2D1F      MOV	R17,R15
    0502 9189      LD	R24,Y+
    0503 90F9      LD	R15,Y+
    0504 90E9      LD	R14,Y+
    0505 9508      RET
empy16s:
    0506 920A      ST	R0,-Y
    0507 921A      ST	R1,-Y
    0508 938A      ST	R24,-Y
    0509 939A      ST	R25,-Y
    050A 9F02      MUL	R16,R18
    050B 01C0      MOVW	R24,R0
    050C 9F12      MUL	R17,R18
    050D 0D90      ADD	R25,R0
    050E 9F03      MUL	R16,R19
    050F 0D90      ADD	R25,R0
    0510 018C      MOVW	R16,R24
    0511 9199      LD	R25,Y+
    0512 9189      LD	R24,Y+
    0513 9019      LD	R1,Y+
    0514 9009      LD	R0,Y+
    0515 9508      RET
pop_gset2:
    0516 E0E2      LDI	R30,2
    0517 C010      RJMP	pop
pop_gset3:
    0518 E0E4      LDI	R30,4
    0519 C00E      RJMP	pop
pop_gset5:
    051A 27EE      CLR	R30
    051B C00C      RJMP	pop
push_gset5:
    051C 92FA      ST	R15,-Y
    051D 92EA      ST	R14,-Y
push_gset4:
    051E 92DA      ST	R13,-Y
    051F 92CA      ST	R12,-Y
push_gset3:
    0520 92BA      ST	R11,-Y
    0521 92AA      ST	R10,-Y
push_gset2:
    0522 937A      ST	R23,-Y
    0523 936A      ST	R22,-Y
push_gset1:
    0524 935A      ST	R21,-Y
    0525 934A      ST	R20,-Y
    0526 9508      RET
pop_gset1:
    0527 E0E1      LDI	R30,1
pop:
    0528 9149      LD	R20,Y+
    0529 9159      LD	R21,Y+
    052A FDE0      SBRC	R30,0
    052B 9508      RET
    052C 9169      LD	R22,Y+
    052D 9179      LD	R23,Y+
    052E FDE1      SBRC	R30,1
    052F 9508      RET
    0530 90A9      LD	R10,Y+
    0531 90B9      LD	R11,Y+
    0532 FDE2      SBRC	R30,2
    0533 9508      RET
    0534 90C9      LD	R12,Y+
    0535 90D9      LD	R13,Y+
    0536 FDE3      SBRC	R30,3
    0537 9508      RET
    0538 90E9      LD	R14,Y+
    0539 90F9      LD	R15,Y+
    053A 9508      RET

⌨️ 快捷键说明

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