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

📄 ww_rass.lst

📁 国内某测温系统信号处理处理板的代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
    01BC E200      LDI	R16,0x20
    01BD E11C      LDI	R17,0x1C
    01BE D1DC      RCALL	div16u
    01BF 93100075  STS	test_freq+1,R17
    01C1 93000074  STS	test_freq,R16
(0091)  				dert_freq=(test_freq>seed)?(test_freq-seed):(seed-test_freq);
    01C3 90200072  LDS	R2,seed
    01C5 90300073  LDS	R3,seed+1
    01C7 0128      MOVW	R4,R16
    01C8 1620      CP	R2,R16
    01C9 0631      CPC	R3,R17
    01CA F420      BCC	0x01CF
    01CB 01B2      MOVW	R22,R4
    01CC 1962      SUB	R22,R2
    01CD 0973      SBC	R23,R3
    01CE C00A      RJMP	0x01D9
    01CF 90200074  LDS	R2,test_freq
    01D1 90300075  LDS	R3,test_freq+1
    01D3 91600072  LDS	R22,seed
    01D5 91700073  LDS	R23,seed+1
    01D7 1962      SUB	R22,R2
    01D8 0973      SBC	R23,R3
    01D9 01AB      MOVW	R20,R22
(0092)  				if(dert_freq<50)
    01DA 3362      CPI	R22,0x32
    01DB E0E0      LDI	R30,0
    01DC 077E      CPC	R23,R30
    01DD F420      BCC	0x01E2
(0093)  					rass2dp=0;
    01DE 2422      CLR	R2
    01DF 92200063  STS	rass2dp,R2
    01E1 C003      RJMP	0x01E5
(0094)  				else
(0095)  					rass2dp=1;
    01E2 E081      LDI	R24,1
    01E3 93800063  STS	rass2dp,R24
(0096)  			 } 
(0097)  	}		
    01E5 9624      ADIW	R28,4
    01E6 D1DE      RCALL	pop_gset2
    01E7 9029      LD	R2,Y+
    01E8 BE2F      OUT	0x3F,R2
    01E9 91F9      LD	R31,Y+
    01EA 91E9      LD	R30,Y+
    01EB 9199      LD	R25,Y+
    01EC 9189      LD	R24,Y+
    01ED 9139      LD	R19,Y+
    01EE 9129      LD	R18,Y+
    01EF 9119      LD	R17,Y+
    01F0 9109      LD	R16,Y+
    01F1 9059      LD	R5,Y+
    01F2 9049      LD	R4,Y+
    01F3 9039      LD	R3,Y+
    01F4 9029      LD	R2,Y+
    01F5 9518      RETI
FILE: E:\任务\RASS\rass_soft\main.c
(0001) #include "config.h"
(0002) 
(0003) unsigned char dp2rass[5];
(0004) unsigned int test_freq;
(0005) unsigned char rass2dp=1;
(0006) unsigned int seed;
(0007) unsigned char rxed_flag=0;//接收完数据为1
(0008) unsigned char dp2rass[5];
(0009) unsigned char work_state;
(0010) unsigned char work_mode;
(0011) unsigned char work_grade;
(0012) unsigned char Ns;//频率点的个数
(0013) unsigned int Fh,Fl;
(0014) unsigned char TCNT1_L;
(0015) unsigned char TCNT1_H;
(0016) unsigned int D15_0;//为2315控制字
(0017) unsigned char timer1;
(0018) 
(0019) 
(0020) 
(0021) void main(void)
(0022) {
(0023) 	//unsigned int rand;
(0024) 	//unsigned int first,second;
(0025) 	//unsigned char x,y;
(0026) 	//unsigned int num,mod1=0;
(0027) 	unsigned int j=1;
_main:
  j                    --> R20
    01F6 E041      LDI	R20,1
    01F7 E050      LDI	R21,0
(0028) 	
(0029)  	CLI(); //stop errant interrupts until set up
    01F8 94F8      BCLR	7
(0030)  	port_init();
    01F9 DEE1      RCALL	_port_init
(0031)  	timer1_init();
    01FA DEF2      RCALL	_timer1_init
(0032)  	uart0_init();
    01FB DF01      RCALL	_uart0_init
(0033)  		
(0034) 	MCUCR = 0x00;
    01FC 2422      CLR	R2
    01FD BE25      OUT	0x35,R2
(0035) 	EMCUCR = 0x00;
    01FE BE26      OUT	0x36,R2
(0036) 	GICR = 0x00;
    01FF BE2B      OUT	0x3B,R2
(0037)  	TIMSK = 0x80;
    0200 E880      LDI	R24,0x80
    0201 BF89      OUT	0x39,R24
(0038) 	SEI(); //re-enable interrupts
    0202 9478      BSET	7
(0039)  	//all peripherals are now initialized
(0040) 		  
(0041) 	do
(0042) 		{
(0043) 			if(rxed_flag==1)      //如果刚刚接收完dp的数据,则
    0203 91800064  LDS	R24,rxed_flag
    0205 3081      CPI	R24,1
    0206 F009      BEQ	0x0208
    0207 C05C      RJMP	0x0264
(0044) 				{
(0045) 					if(!(dp2rass[0]&0x01))//判断是命令还是数据请求
    0208 90200076  LDS	R2,dp2rass
    020A FC20      SBRC	R2,0
    020B C004      RJMP	0x0210
(0046) 						UDR=rass2dp;   //为0时是dp请求rass的状态信息,	                        
    020C 90200063  LDS	R2,rass2dp
    020E B82C      OUT	0x0C,R2
    020F C051      RJMP	0x0261
(0047) 		      else             //为1时是dp发送给rass的命令 
(0048) 		      	{
(0049) 		      		work_state=(dp2rass[0]&0x02)>>1; 
    0210 91800076  LDS	R24,dp2rass
    0212 7082      ANDI	R24,2
    0213 9586      LSR	R24
    0214 93800071  STS	work_state,R24
(0050)  		  				if(work_state==0)      //如果是关闭工作命令,则
    0216 2388      TST	R24
    0217 F481      BNE	0x0228
(0051)  		  					{
(0052)  		  						ACSR = ACSR & 0xF7;  //关闭时间、比较中断
    0218 B188      IN	R24,0x08
    0219 7F87      ANDI	R24,0xF7
    021A B988      OUT	0x08,R24
(0053)  		  						TCCR1B = 0x00;       
    021B 2422      CLR	R2
    021C BC2E      OUT	0x2E,R2
(0054)  		  						ml2035(0,1);          //关闭2305,1666
    021D E021      LDI	R18,1
    021E E030      LDI	R19,0
    021F 2700      CLR	R16
    0220 2711      CLR	R17
    0221 D06A      RCALL	_ml2035
(0055)  		  						ds1666(128,0);
    0222 2722      CLR	R18
    0223 2733      CLR	R19
    0224 E800      LDI	R16,0x80
    0225 E010      LDI	R17,0
    0226 D081      RCALL	_ds1666
(0056)  		  					}
    0227 C039      RJMP	0x0261
(0057)  		  				else                  //如果是开始工作指令的话
(0058)  		  					{
(0059)  		  						TCCR1B = 0x05;       //start Timer1,comparator
    0228 E085      LDI	R24,5
    0229 BD8E      OUT	0x2E,R24
(0060)  		  						comparator_init();
    022A DEDD      RCALL	_comparator_init
(0061)  		  						data_process();
    022B D0A1      RCALL	_data_process
(0062)  		  						seed=TCNT1L;
    022C B42C      IN	R2,0x2C
    022D 2433      CLR	R3
    022E 92300073  STS	seed+1,R3
    0230 92200072  STS	seed,R2
(0063)  		  						ds1666(128,0);
    0232 2722      CLR	R18
    0233 2733      CLR	R19
    0234 E800      LDI	R16,0x80
    0235 E010      LDI	R17,0
    0236 D071      RCALL	_ds1666
(0064)  		  						switch(work_grade)
    0237 9160006F  LDS	R22,work_grade
    0239 2777      CLR	R23
    023A 3060      CPI	R22,0
    023B 0767      CPC	R22,R23
    023C F069      BEQ	0x024A
    023D 3061      CPI	R22,1
    023E E0E0      LDI	R30,0
    023F 077E      CPC	R23,R30
    0240 F079      BEQ	0x0250
    0241 3062      CPI	R22,2
    0242 E0E0      LDI	R30,0
    0243 077E      CPC	R23,R30
    0244 F089      BEQ	0x0256
    0245 3063      CPI	R22,3
    0246 E0E0      LDI	R30,0
    0247 077E      CPC	R23,R30
    0248 F099      BEQ	0x025C
    0249 C017      RJMP	0x0261
(0065) 										{
(0066) 											case 0: ds1666(128,1);break;
    024A E021      LDI	R18,1
    024B E030      LDI	R19,0
    024C E800      LDI	R16,0x80
    024D E010      LDI	R17,0
    024E D059      RCALL	_ds1666
    024F C011      RJMP	0x0261
(0067) 											case 1: ds1666(119,1);break;
    0250 E021      LDI	R18,1
    0251 E030      LDI	R19,0
    0252 E707      LDI	R16,0x77
    0253 E010      LDI	R17,0
    0254 D053      RCALL	_ds1666
    0255 C00B      RJMP	0x0261
(0068) 											case 2: ds1666(110,1);break;
    0256 E021      LDI	R18,1
    0257 E030      LDI	R19,0
    0258 E60E      LDI	R16,0x6E
    0259 E010      LDI	R17,0
    025A D04D      RCALL	_ds1666
    025B C005      RJMP	0x0261
(0069) 											case 3: 
(0070) 											defaulf:ds1666(96,1);
    025C E021      LDI	R18,1
    025D E030      LDI	R19,0
    025E E600      LDI	R16,0x60
    025F E010      LDI	R17,0
    0260 D047      RCALL	_ds1666
(0071) 										}
(0072) 								}
(0073) 							}
(0074) 						rxed_flag=0;
    0261 2422      CLR	R2
    0262 92200064  STS	rxed_flag,R2
(0075) 					}
(0076) 					
(0077) 				if(timer1==1)    //计数溢出中断后改变频率
    0264 91800065  LDS	R24,timer1
    0266 3081      CPI	R24,1
    0267 F511      BNE	0x028A
(0078) 					{
(0079) 						if(work_mode==0)   //random mode
    0268 90200070  LDS	R2,work_mode
    026A 2022      TST	R2
    026B F451      BNE	0x0276
(0080) 							D15_0=rand(seed);
    026C 91000072  LDS	R16,seed
    026E 91100073  LDS	R17,seed+1
    0270 D0DA      RCALL	_rand
    0271 93100067  STS	D15_0+1,R17
    0273 93000066  STS	D15_0,R16
    0275 C011      RJMP	0x0287
(0081) 						else
(0082) 							{
(0083) 								D15_0=line(j++);
    0276 011A      MOVW	R2,R20
    0277 5F4F      SUBI	R20,0xFF
    0278 4F5F      SBCI	R21,0xFF
    0279 0181      MOVW	R16,R2
    027A D0F0      RCALL	_line
    027B 93100067  STS	D15_0+1,R17
    027D 93000066  STS	D15_0,R16
(0084) 								if(j>Ns)
    027F 9020006E  LDS	R2,Ns
    0281 2433      CLR	R3
    0282 1624      CP	R2,R20
    0283 0635      CPC	R3,R21
    0284 F410      BCC	0x0287
(0085) 									j=1;									
    0285 E041      LDI	R20,1
    0286 E050      LDI	R21,0
(0086) 							}
(0087) 						timer1=0;
    0287 2422      CLR	R2
    0288 92200065  STS	timer1,R2
(0088) 					}
(0089) 	 }							
(0090) 	while(1);	
    028A CF78      RJMP	0x0203
    028B 9508      RET
_ml2035:
  i                    --> R20
  mod                  --> R18
  data                 --> R16
    028C D142      RCALL	push_gset1
FILE: E:\任务\RASS\rass_soft\sine_resister.C
(0001) #include "config.h"
(0002) 
(0003) void ml2035(unsigned int data,unsigned mod)
(0004) {
(0005) 	unsigned char i;
(0006) 	//CLI();
(0007) 	PORTA &= ~(1<<sck);
    028D 98D8      CBI	0x1B,0
(0008) 	PORTA &= ~(1<<lati);
    028E 98DA      CBI	0x1B,2
(0009) 	asm("NOP");
    028F 0000      NOP
(0010)  for (i=0;i<15;i++)
    0290 2744      CLR	R20
    0291 C00B      RJMP	0x029D
(0011)  {
(0012)  	if (data & 1)
    0292 FF00      SBRS	R16,0
    0293 C002      RJMP	0x0296
(0013)  		PORTA |= 1<<sid;
    0294 9AD9      SBI	0x1B,1
    0295 C001      RJMP	0x0297
(0014)  	 else
(0015)  	 	PORTA &= ~(1<<sid);
    0296 98D9      CBI	0x1B,1
(0016)  	PORTA |= 1<<sck;
    0297 9AD8      SBI	0x1B,0
(0017)  	asm("NOP");
    0298 0000      NOP
(0018)  	PORTA &= ~(1<<sck);
    0299 98D8      CBI	0x1B,0
(0019)  	data>>=1;
    029A 9516      LSR	R17
    029B 9507      ROR	R16
    029C 9543      INC	R20
    029D 304F      CPI	R20,0xF
    029E F398      BCS	0x0292
(0020)  }
(0021)   	PORTA |= 1<<sck;
    029F 9AD8      SBI	0x1B,0
(0022)  	PORTA |= 1<<lati;
    02A0 9ADA      SBI	0x1B,2
(0023)  	PORTA &= ~(1<<sck);
    02A1 98D8      CBI	0x1B,0
(0024)  if(mod)
    02A2 3020      CPI	R18,0
    02A3 0723      CPC	R18,R19
    02A4 F009      BEQ	0x02A6
(0025)  	PORTA &= ~(1<<lati);
    02A5 98DA      CBI	0x1B,2
    02A6 D12B      RCALL	pop_gset1
    02A7 9508      RET
_ds1666:
  j                    --> R20
  mod1                 --> R20
  num                  --> R22
    02A8 D124      RCALL	push_gset2
    02A9 01A9      MOVW	R20,R18
    02AA 01B8      MOVW	R22,R16
(0026) }                                               
(0027)       
(0028) 	  
(0029) 	  
(0030) 	  
(0031) void ds1666(unsigned int num,unsigned int mod1)
(0032) {
(0033) 	unsigned int j;
(0034) 	CLI();
    02AB 94F8      BCLR	7
(0035) 	PORTC &=~(1<<cs);
    02AC 98AB      CBI	0x15,3
(0036) 	if(mod1==0)
    02AD 3040      CPI	R20,0
    02AE 0745      CPC	R20,R21
    02AF F411      BNE	0x02B2
(0037) 		PORTC &=~(1<<ud);
    02B0 98AD      CBI	0x15,5
    02B1 C001      RJMP	0x02B3
(0038) 	else
(0039) 		PORTC |=1<<ud;
    02B2 9AAD      SBI	0x15,5
(0040) 	for (j=0;j<num;j++)
    02B3 2744      CLR	R20
    02B4 2755      CLR	R21
    02B5 C008      RJMP	0x02BE
(0041) 	{
(0042) 		PORTC |=1<<inc;
    02B6 9AAC      SBI	0x15,4
(0043) 		delay_us(1);
    02B7 E001      LDI	R16,1
    02B8 D00D      RCALL	_delay_us
(0044) 		PORTC &=~(1<<inc);
    02B9 98AC      CBI	0x15,4
(0045) 		delay_us(1);
    02BA E001      LDI	R16,1
    02BB D00A      RCALL	_delay_us
    02BC 5F4F      SUBI	R20,0xFF
    02BD 4F5F      SBCI	R21,0xFF
    02BE 1746      CP	R20,R22
    02BF 0757      CPC	R21,R23
    02C0 F3A8      BCS	0x02B6
(0046) 	}
(0047) 	PORTC |=1<<cs;
    02C1 9AAB      SBI	0x15,3
(0048) 	PORTC |=1<<inc;
    02C2 9AAC      SBI	0x15,4
(0049) 	SEI();
    02C3 9478      BSET	7
    02C4 D100      RCALL	pop_gset2
    02C5 9508      RET
FILE: E:\任务\RASS\rass_soft\data_process.c
(0001) #include "config.h"
(0002) 
(0003) extern unsigned char dp2rass[5];
(0004) extern unsigned char work_mode;

⌨️ 快捷键说明

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