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

📄 ww_rass.lst

📁 国内某测温系统信号处理处理板的代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0005) extern unsigned char work_grade;
(0006) extern unsigned char Ns;//频率点的个数
(0007) extern unsigned int Fh,Fl;
(0008) extern unsigned int seed;
(0009) extern unsigned char TCNT1_L;
(0010) extern unsigned char TCNT1_H;
(0011) extern unsigned int D15_0;//为2315控制字
(0012) 
(0013) const unsigned int Freq_scale[]={	2020,2026,2032,2037,2043,2049,2054,2060,2065,2071,2077,2082,
(0014) 																	2088,2093,2099,2104,2110,2115,2121,2126,2132,2137,2143,2148,
(0015) 																	2153,2159,2164,2169,2175,2180,2185,2191,2196,2201,2207,2212,
(0016) 																	2217,2222,2228,2233,2238,2243,2248,2253,2259,2264,2269,2274,
(0017) 																	2279,2284,2289,2294,2299,2304,2309,2314,2319,2324,2329,2334,
(0018) 																	2339,2344,2349,2354,2359,2364,2369,2374,2379,2383,2388,2393,
(0019) 																	2398,2403,2408,2412,2417,2422,2427,2432,2436,2441,2446,2451,
(0020) 																	2455,2460,2465,2469,2474,2479,2483,2488,2493,2497,2502,2507,
(0021) 																	2511,2516,2520,2525,2530,2534,2539,2543,2548,2552,2557,2562,
(0022) 																	2566,2571,2575,2580,2584,2589,2593,2598,2602,2606,2611,2615,
(0023) 																	2620,2624,2629,2633,2637,2642,2646,2651,2655,2659,2664,2668,
(0024) 																	2672,2677,2681,2685,2690,2694,2698,2703,2707,2711,2715,2720,
(0025) 																	2724,2728,2732,2737,2741,2745,2749,2753,2758,2762,2766,2770,
(0026) 																	2774,2779,2783,2787,2791,2795,2799,2804,2808,2812,2816
(0027) 																};
(0028) 
(0029) void delay_us(unsigned char us)
(0030) {
(0031) 	do{
(0032) 	 asm("nop\n nop\n");
_delay_us:
  us                   --> R16
    02C6 0000      NOP
    02C7 0000      NOP
(0033) 	 us--;
    02C8 950A      DEC	R16
(0034) 	}while(us>0);
    02C9 2422      CLR	R2
    02CA 1620      CP	R2,R16
    02CB F3D0      BCS	0x02C6
    02CC 9508      RET
_data_process:
  T                    --> R20
  work_T               --> R20
  work_Ns              --> R20
  time_count           --> R20
  work_Ts              --> R20
    02CD D101      RCALL	push_gset1
(0035) }
(0036) 
(0037) 
(0038) void data_process(void)      
(0039) {
(0040) 	unsigned int work_T,work_Ns,work_Ts,T;
(0041) 	unsigned int time_count;
(0042) 	
(0043) 	work_mode=(dp2rass[0]&0x04)>>2;  
    02CE 91800076  LDS	R24,dp2rass
    02D0 7084      ANDI	R24,4
    02D1 9586      LSR	R24
    02D2 9586      LSR	R24
    02D3 93800070  STS	work_mode,R24
(0044) 	work_grade=(dp2rass[0]&0x18)>>3;
    02D5 91800076  LDS	R24,dp2rass
    02D7 7188      ANDI	R24,0x18
    02D8 9586      LSR	R24
    02D9 9586      LSR	R24
    02DA 9586      LSR	R24
    02DB 9380006F  STS	work_grade,R24
(0045) 	
(0046) 	work_Ts=dp2rass[2]>>1;
    02DD 91400078  LDS	R20,dp2rass+2
    02DF 2755      CLR	R21
    02E0 9555      ASR	R21
    02E1 9547      ROR	R20
(0047) 	Fl=Freq_scale[work_Ts];       //低频
    02E2 E002      LDI	R16,2
    02E3 E010      LDI	R17,0
    02E4 019A      MOVW	R18,R20
    02E5 D0CF      RCALL	empy16s
    02E6 01F8      MOVW	R30,R16
    02E7 E282      LDI	R24,0x22
    02E8 E090      LDI	R25,0
    02E9 0FE8      ADD	R30,R24
    02EA 1FF9      ADC	R31,R25
    02EB 9005      LPM	R0,Z+
    02EC 9014      LPM	R1,0(Z)
    02ED 01F0      MOVW	R30,R0
    02EE 93F0006B  STS	Fl+1,R31
    02F0 93E0006A  STS	Fl,R30
(0048) 	Fh=Freq_scale[work_Ts+40];    //高频
    02F2 019A      MOVW	R18,R20
    02F3 5D28      SUBI	R18,0xD8
    02F4 4F3F      SBCI	R19,0xFF
    02F5 E002      LDI	R16,2
    02F6 E010      LDI	R17,0
    02F7 D0BD      RCALL	empy16s
    02F8 01F8      MOVW	R30,R16
    02F9 E282      LDI	R24,0x22
    02FA E090      LDI	R25,0
    02FB 0FE8      ADD	R30,R24
    02FC 1FF9      ADC	R31,R25
    02FD 9005      LPM	R0,Z+
    02FE 9014      LPM	R1,0(Z)
    02FF 01F0      MOVW	R30,R0
    0300 93F0006D  STS	Fh+1,R31
    0302 93E0006C  STS	Fh,R30
(0049) 	
(0050) 	work_Ns=(dp2rass[0]&0xe0)>>5;
    0304 E025      LDI	R18,5
    0305 E030      LDI	R19,0
    0306 91000076  LDS	R16,dp2rass
    0308 2711      CLR	R17
    0309 7E00      ANDI	R16,0xE0
    030A 7010      ANDI	R17,0
    030B D086      RCALL	asr16
    030C 01A8      MOVW	R20,R16
(0051) 	if(work_Ns==7)
    030D 3007      CPI	R16,7
    030E E0E0      LDI	R30,0
    030F 071E      CPC	R17,R30
    0310 F469      BNE	0x031E
(0052) 		Ns=Fh-Fl;           //为7的时候采用全部频率点
    0311 9020006A  LDS	R2,Fl
    0313 9030006B  LDS	R3,Fl+1
    0315 9040006C  LDS	R4,Fh
    0317 9050006D  LDS	R5,Fh+1
    0319 1842      SUB	R4,R2
    031A 0853      SBC	R5,R3
    031B 9240006E  STS	Ns,R4
    031D C008      RJMP	0x0326
(0053) 	else
(0054) 		Ns=24*(work_Ns+1);
    031E 019A      MOVW	R18,R20
    031F 5F2F      SUBI	R18,0xFF
    0320 4F3F      SBCI	R19,0xFF
    0321 E108      LDI	R16,0x18
    0322 E010      LDI	R17,0
    0323 D091      RCALL	empy16s
    0324 9300006E  STS	Ns,R16
(0055) 		
(0056) 	work_T=(dp2rass[1]&0x1e)>>1;
    0326 91400077  LDS	R20,dp2rass+1
    0328 2755      CLR	R21
    0329 714E      ANDI	R20,0x1E
    032A 7050      ANDI	R21,0
    032B 9555      ASR	R21
    032C 9547      ROR	R20
(0057) 	T=(work_T+1)*Ns;  //循环周期为这么多毫秒
    032D 9120006E  LDS	R18,Ns
    032F 2733      CLR	R19
    0330 018A      MOVW	R16,R20
    0331 5F0F      SUBI	R16,0xFF
    0332 4F1F      SBCI	R17,0xFF
    0333 D081      RCALL	empy16s
    0334 01A8      MOVW	R20,R16
(0058) 	                  //1024分频情况下,每毫秒7.2计数周期
(0059) 	time_count=65535-(T*72)/10;
    0335 E408      LDI	R16,0x48
    0336 E010      LDI	R17,0
    0337 019A      MOVW	R18,R20
    0338 D07C      RCALL	empy16s
    0339 E02A      LDI	R18,0xA
    033A E030      LDI	R19,0
    033B D05F      RCALL	div16u
    033C EF4F      LDI	R20,0xFF
    033D EF5F      LDI	R21,0xFF
    033E 1B40      SUB	R20,R16
    033F 0B51      SBC	R21,R17
(0060) 	TCNT1_L=time_count&0xff;
    0340 01CA      MOVW	R24,R20
    0341 7090      ANDI	R25,0
    0342 93800069  STS	TCNT1_L,R24
(0061) 	TCNT1_H=time_count>>8;	
    0344 011A      MOVW	R2,R20
    0345 2C23      MOV	R2,R3
    0346 2433      CLR	R3
    0347 92200068  STS	TCNT1_H,R2
    0349 D088      RCALL	pop_gset1
    034A 9508      RET
_rand:
  rand_num             --> R20
  randseed             --> R20
    034B D083      RCALL	push_gset1
    034C 01A8      MOVW	R20,R16
(0062) }
(0063) 
(0064) 
(0065) 
(0066) unsigned int rand(unsigned int randseed)
(0067) {
(0068) 	unsigned int rand_num;
(0069) 	rand_num= (randseed * rand_x + rand_y) % 251 + Fl; //求出来的是那个随机的频率
    034D E601      LDI	R16,0x61
    034E E010      LDI	R17,0
    034F 019A      MOVW	R18,R20
    0350 D064      RCALL	empy16s
    0351 5F09      SUBI	R16,0xF9
    0352 4F1F      SBCI	R17,0xFF
    0353 EF2B      LDI	R18,0xFB
    0354 E030      LDI	R19,0
    0355 D043      RCALL	mod16u
    0356 01A8      MOVW	R20,R16
    0357 9020006A  LDS	R2,Fl
    0359 9030006B  LDS	R3,Fl+1
    035B 0D42      ADD	R20,R2
    035C 1D53      ADC	R21,R3
(0070) 	seed = rand_num;
    035D 93500073  STS	seed+1,R21
    035F 93400072  STS	seed,R20
(0071) 	D15_0=rand_num;            //把这个频率换算成为控制字
    0361 93500067  STS	D15_0+1,R21
    0363 93400066  STS	D15_0,R20
(0072) 	return D15_0;
    0365 91000066  LDS	R16,D15_0
    0367 91100067  LDS	R17,D15_0+1
    0369 D068      RCALL	pop_gset1
    036A 9508      RET
_line:
  i                    --> R20
    036B D063      RCALL	push_gset1
    036C 01A8      MOVW	R20,R16
(0073) }
(0074) 
(0075) 
(0076) //线性递增函数采用先放大再缩小的办法产生频率
(0077) unsigned int line(unsigned int i)   
(0078) {
(0079) 	seed=(Fh-Fl)*i/Ns+Fl;
    036D 9020006A  LDS	R2,Fl
    036F 9030006B  LDS	R3,Fl+1
    0371 9100006C  LDS	R16,Fh
    0373 9110006D  LDS	R17,Fh+1
    0375 1902      SUB	R16,R2
    0376 0913      SBC	R17,R3
    0377 019A      MOVW	R18,R20
    0378 D03C      RCALL	empy16s
    0379 9120006E  LDS	R18,Ns
    037B 2733      CLR	R19
    037C D01E      RCALL	div16u
    037D 0118      MOVW	R2,R16
    037E 9040006A  LDS	R4,Fl
    0380 9050006B  LDS	R5,Fl+1
    0382 0C24      ADD	R2,R4
    0383 1C35      ADC	R3,R5
    0384 92300073  STS	seed+1,R3
    0386 92200072  STS	seed,R2
(0080) 	D15_0=seed;
    0388 92300067  STS	D15_0+1,R3
    038A 92200066  STS	D15_0,R2
(0081) 	return D15_0;
FILE: <library>
    038C 91000066  LDS	R16,D15_0
    038E 91100067  LDS	R17,D15_0+1
    0390 D041      RCALL	pop_gset1
    0391 9508      RET
asr16:
    0392 2322      TST	R18
    0393 F021      BEQ	0x0398
    0394 9515      ASR	R17
    0395 9507      ROR	R16
    0396 952A      DEC	R18
    0397 CFFA      RJMP	asr16
    0398 9508      RET
mod16u:
    0399 9468      BSET	6
    039A C001      RJMP	xdiv16u
div16u:
    039B 94E8      BCLR	6
xdiv16u:
    039C 92EA      ST	R14,-Y
    039D 92FA      ST	R15,-Y
    039E 938A      ST	R24,-Y
    039F 24EE      CLR	R14
    03A0 24FF      CLR	R15
    03A1 E180      LDI	R24,0x10
    03A2 0F00      LSL	R16
    03A3 1F11      ROL	R17
    03A4 1CEE      ROL	R14
    03A5 1CFF      ROL	R15
    03A6 16E2      CP	R14,R18
    03A7 06F3      CPC	R15,R19
    03A8 F018      BCS	0x03AC
    03A9 1AE2      SUB	R14,R18
    03AA 0AF3      SBC	R15,R19
    03AB 9503      INC	R16
    03AC 958A      DEC	R24
    03AD F7A1      BNE	0x03A2
    03AE F416      BRTC	0x03B1
    03AF 2D0E      MOV	R16,R14
    03B0 2D1F      MOV	R17,R15
    03B1 9189      LD	R24,Y+
    03B2 90F9      LD	R15,Y+
    03B3 90E9      LD	R14,Y+
    03B4 9508      RET
empy16s:
    03B5 920A      ST	R0,-Y
    03B6 921A      ST	R1,-Y
    03B7 938A      ST	R24,-Y
    03B8 939A      ST	R25,-Y
    03B9 9F02      MUL	R16,R18
    03BA 01C0      MOVW	R24,R0
    03BB 9F12      MUL	R17,R18
    03BC 0D90      ADD	R25,R0
    03BD 9F03      MUL	R16,R19
    03BE 0D90      ADD	R25,R0
    03BF 018C      MOVW	R16,R24
    03C0 9199      LD	R25,Y+
    03C1 9189      LD	R24,Y+
    03C2 9019      LD	R1,Y+
    03C3 9009      LD	R0,Y+
    03C4 9508      RET
pop_gset2:
    03C5 E0E2      LDI	R30,2
    03C6 C00C      RJMP	pop
push_gset5:
    03C7 92FA      ST	R15,-Y
    03C8 92EA      ST	R14,-Y
push_gset4:
    03C9 92DA      ST	R13,-Y
    03CA 92CA      ST	R12,-Y
push_gset3:
    03CB 92BA      ST	R11,-Y
    03CC 92AA      ST	R10,-Y
push_gset2:
    03CD 937A      ST	R23,-Y
    03CE 936A      ST	R22,-Y
push_gset1:
    03CF 935A      ST	R21,-Y
    03D0 934A      ST	R20,-Y
    03D1 9508      RET
pop_gset1:
    03D2 E0E1      LDI	R30,1
pop:
    03D3 9149      LD	R20,Y+
    03D4 9159      LD	R21,Y+
    03D5 FDE0      SBRC	R30,0
    03D6 9508      RET
    03D7 9169      LD	R22,Y+
    03D8 9179      LD	R23,Y+
    03D9 FDE1      SBRC	R30,1
    03DA 9508      RET
    03DB 90A9      LD	R10,Y+
    03DC 90B9      LD	R11,Y+
    03DD FDE2      SBRC	R30,2
    03DE 9508      RET
    03DF 90C9      LD	R12,Y+
    03E0 90D9      LD	R13,Y+
    03E1 FDE3      SBRC	R30,3
    03E2 9508      RET
    03E3 90E9      LD	R14,Y+
    03E4 90F9      LD	R15,Y+
    03E5 9508      RET
push_lset:
    03E6 93FA      ST	R31,-Y
    03E7 93EA      ST	R30,-Y
    03E8 93BA      ST	R27,-Y
    03E9 93AA      ST	R26,-Y
    03EA 939A      ST	R25,-Y
    03EB 938A      ST	R24,-Y
    03EC 933A      ST	R19,-Y
    03ED 932A      ST	R18,-Y
    03EE 931A      ST	R17,-Y
    03EF 930A      ST	R16,-Y
    03F0 929A      ST	R9,-Y
    03F1 928A      ST	R8,-Y
    03F2 927A      ST	R7,-Y
    03F3 926A      ST	R6,-Y
    03F4 925A      ST	R5,-Y
    03F5 924A      ST	R4,-Y
    03F6 923A      ST	R3,-Y
    03F7 922A      ST	R2,-Y
    03F8 921A      ST	R1,-Y
    03F9 920A      ST	R0,-Y
    03FA B60F      IN	R0,0x3F
    03FB 920A      ST	R0,-Y
    03FC 9508      RET
pop_lset:
    03FD 9009      LD	R0,Y+
    03FE BE0F      OUT	0x3F,R0
    03FF 9009      LD	R0,Y+
    0400 9019      LD	R1,Y+
    0401 9029      LD	R2,Y+
    0402 9039      LD	R3,Y+
    0403 9049      LD	R4,Y+
    0404 9059      LD	R5,Y+
    0405 9069      LD	R6,Y+
    0406 9079      LD	R7,Y+
    0407 9089      LD	R8,Y+
    0408 9099      LD	R9,Y+
    0409 9109      LD	R16,Y+
    040A 9119      LD	R17,Y+
    040B 9129      LD	R18,Y+
    040C 9139      LD	R19,Y+
    040D 9189      LD	R24,Y+
    040E 9199      LD	R25,Y+
    040F 91A9      LD	R26,Y+
    0410 91B9      LD	R27,Y+
    0411 91E9      LD	R30,Y+
    0412 91F9      LD	R31,Y+
    0413 9508      RET

⌨️ 快捷键说明

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