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

📄 data_process.s

📁 国内某测温系统信号处理处理板的代码
💻 S
字号:
	.module data_process.c
	.area vector(rom, abs)
	.org 12
	rjmp _timer1_ovf_isr
	.org 18
	rjmp _uart0_rx_isr
	.org 22
	rjmp _uart0_tx_isr
	.org 24
	rjmp _ana_comp_isr
	.area lit(rom, con, rel)
_Freq_scale::
	.word 2020
	.word 2026
	.word 2032
	.word 2037
	.word 2043
	.word 2049
	.word 2054
	.word 2060
	.word 2065
	.word 2071
	.word 2077
	.word 2082
	.word 2088
	.word 2093
	.word 2099
	.word 2104
	.word 2110
	.word 2115
	.word 2121
	.word 2126
	.word 2132
	.word 2137
	.word 2143
	.word 2148
	.word 2153
	.word 2159
	.word 2164
	.word 2169
	.word 2175
	.word 2180
	.word 2185
	.word 2191
	.word 2196
	.word 2201
	.word 2207
	.word 2212
	.word 2217
	.word 2222
	.word 2228
	.word 2233
	.word 2238
	.word 2243
	.word 2248
	.word 2253
	.word 2259
	.word 2264
	.word 2269
	.word 2274
	.word 2279
	.word 2284
	.word 2289
	.word 2294
	.word 2299
	.word 2304
	.word 2309
	.word 2314
	.word 2319
	.word 2324
	.word 2329
	.word 2334
	.word 2339
	.word 2344
	.word 2349
	.word 2354
	.word 2359
	.word 2364
	.word 2369
	.word 2374
	.word 2379
	.word 2383
	.word 2388
	.word 2393
	.word 2398
	.word 2403
	.word 2408
	.word 2412
	.word 2417
	.word 2422
	.word 2427
	.word 2432
	.word 2436
	.word 2441
	.word 2446
	.word 2451
	.word 2455
	.word 2460
	.word 2465
	.word 2469
	.word 2474
	.word 2479
	.word 2483
	.word 2488
	.word 2493
	.word 2497
	.word 2502
	.word 2507
	.word 2511
	.word 2516
	.word 2520
	.word 2525
	.word 2530
	.word 2534
	.word 2539
	.word 2543
	.word 2548
	.word 2552
	.word 2557
	.word 2562
	.word 2566
	.word 2571
	.word 2575
	.word 2580
	.word 2584
	.word 2589
	.word 2593
	.word 2598
	.word 2602
	.word 2606
	.word 2611
	.word 2615
	.word 2620
	.word 2624
	.word 2629
	.word 2633
	.word 2637
	.word 2642
	.word 2646
	.word 2651
	.word 2655
	.word 2659
	.word 2664
	.word 2668
	.word 2672
	.word 2677
	.word 2681
	.word 2685
	.word 2690
	.word 2694
	.word 2698
	.word 2703
	.word 2707
	.word 2711
	.word 2715
	.word 2720
	.word 2724
	.word 2728
	.word 2732
	.word 2737
	.word 2741
	.word 2745
	.word 2749
	.word 2753
	.word 2758
	.word 2762
	.word 2766
	.word 2770
	.word 2774
	.word 2779
	.word 2783
	.word 2787
	.word 2791
	.word 2795
	.word 2799
	.word 2804
	.word 2808
	.word 2812
	.word 2816
	.dbfile E:\任务\RASS\rass_soft\data_process.c
	.dbsym e Freq_scale _Freq_scale A[334:167]ki
	.area text(rom, con, rel)
	.dbfile E:\任务\RASS\rass_soft\data_process.c
	.dbfunc e delay_us _delay_us fV
;             us -> R16
	.even
_delay_us::
	.dbline -1
	.dbline 30
; #include "config.h"
; 
; extern unsigned char dp2rass[5];
; extern unsigned char work_mode;
; extern unsigned char work_grade;
; extern unsigned char Ns;//频率点的个数
; extern unsigned int Fh,Fl;
; extern unsigned int seed;
; extern unsigned char TCNT1_L;
; extern unsigned char TCNT1_H;
; extern unsigned int D15_0;//为2315控制字
; 
; const unsigned int Freq_scale[]={	2020,2026,2032,2037,2043,2049,2054,2060,2065,2071,2077,2082,
; 																	2088,2093,2099,2104,2110,2115,2121,2126,2132,2137,2143,2148,
; 																	2153,2159,2164,2169,2175,2180,2185,2191,2196,2201,2207,2212,
; 																	2217,2222,2228,2233,2238,2243,2248,2253,2259,2264,2269,2274,
; 																	2279,2284,2289,2294,2299,2304,2309,2314,2319,2324,2329,2334,
; 																	2339,2344,2349,2354,2359,2364,2369,2374,2379,2383,2388,2393,
; 																	2398,2403,2408,2412,2417,2422,2427,2432,2436,2441,2446,2451,
; 																	2455,2460,2465,2469,2474,2479,2483,2488,2493,2497,2502,2507,
; 																	2511,2516,2520,2525,2530,2534,2539,2543,2548,2552,2557,2562,
; 																	2566,2571,2575,2580,2584,2589,2593,2598,2602,2606,2611,2615,
; 																	2620,2624,2629,2633,2637,2642,2646,2651,2655,2659,2664,2668,
; 																	2672,2677,2681,2685,2690,2694,2698,2703,2707,2711,2715,2720,
; 																	2724,2728,2732,2737,2741,2745,2749,2753,2758,2762,2766,2770,
; 																	2774,2779,2783,2787,2791,2795,2799,2804,2808,2812,2816
; 																};
; 
; void delay_us(unsigned char us)
; {
L2:
	.dbline 31
; 	do{
	.dbline 32
; 	 asm("nop\n nop\n");
	nop
	 nop
	
	.dbline 33
; 	 us--;
	dec R16
	.dbline 34
L3:
	.dbline 34
; 	}while(us>0);
	clr R2
	cp R2,R16
	brlo L2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r us 16 c
	.dbend
	.dbfunc e data_process _data_process fV
;              T -> R20,R21
;         work_T -> R20,R21
;        work_Ns -> R20,R21
;     time_count -> R20,R21
;        work_Ts -> R20,R21
	.even
_data_process::
	rcall push_gset1
	.dbline -1
	.dbline 39
; }
; 
; 
; void data_process(void)      
; {
	.dbline 43
; 	unsigned int work_T,work_Ns,work_Ts,T;
; 	unsigned int time_count;
; 	
; 	work_mode=(dp2rass[0]&0x04)>>2;  
	lds R24,_dp2rass
	andi R24,4
	lsr R24
	lsr R24
	sts _work_mode,R24
	.dbline 44
; 	work_grade=(dp2rass[0]&0x18)>>3;
	lds R24,_dp2rass
	andi R24,24
	lsr R24
	lsr R24
	lsr R24
	sts _work_grade,R24
	.dbline 46
; 	
; 	work_Ts=dp2rass[2]>>1;
	lds R20,_dp2rass+2
	clr R21
	asr R21
	ror R20
	.dbline 47
; 	Fl=Freq_scale[work_Ts];       //低频
	ldi R16,2
	ldi R17,0
	movw R18,R20
	rcall empy16s
	movw R30,R16
	ldi R24,<_Freq_scale
	ldi R25,>_Freq_scale
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	sts _Fl+1,R31
	sts _Fl,R30
	.dbline 48
; 	Fh=Freq_scale[work_Ts+40];    //高频
	movw R18,R20
	subi R18,216  ; offset = 40
	sbci R19,255
	ldi R16,2
	ldi R17,0
	rcall empy16s
	movw R30,R16
	ldi R24,<_Freq_scale
	ldi R25,>_Freq_scale
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	sts _Fh+1,R31
	sts _Fh,R30
	.dbline 50
; 	
; 	work_Ns=(dp2rass[0]&0xe0)>>5;
	ldi R18,5
	ldi R19,0
	lds R16,_dp2rass
	clr R17
	andi R16,224
	andi R17,0
	rcall asr16
	movw R20,R16
	.dbline 51
; 	if(work_Ns==7)
	cpi R16,7
	ldi R30,0
	cpc R17,R30
	brne L7
	.dbline 52
; 		Ns=Fh-Fl;           //为7的时候采用全部频率点
	lds R2,_Fl
	lds R3,_Fl+1
	lds R4,_Fh
	lds R5,_Fh+1
	sub R4,R2
	sbc R5,R3
	sts _Ns,R4
	rjmp L8
L7:
	.dbline 54
; 	else
; 		Ns=24*(work_Ns+1);
	movw R18,R20
	subi R18,255  ; offset = 1
	sbci R19,255
	ldi R16,24
	ldi R17,0
	rcall empy16s
	sts _Ns,R16
L8:
	.dbline 56
; 		
; 	work_T=(dp2rass[1]&0x1e)>>1;
	lds R20,_dp2rass+1
	clr R21
	andi R20,30
	andi R21,0
	asr R21
	ror R20
	.dbline 57
; 	T=(work_T+1)*Ns;  //循环周期为这么多毫秒
	lds R18,_Ns
	clr R19
	movw R16,R20
	subi R16,255  ; offset = 1
	sbci R17,255
	rcall empy16s
	movw R20,R16
	.dbline 59
; 	                  //1024分频情况下,每毫秒7.2计数周期
; 	time_count=65535-(T*72)/10;
	ldi R16,72
	ldi R17,0
	movw R18,R20
	rcall empy16s
	ldi R18,10
	ldi R19,0
	rcall div16u
	ldi R20,65535
	ldi R21,255
	sub R20,R16
	sbc R21,R17
	.dbline 60
; 	TCNT1_L=time_count&0xff;
	movw R24,R20
	andi R25,0
	sts _TCNT1_L,R24
	.dbline 61
; 	TCNT1_H=time_count>>8;	
	movw R2,R20
	mov R2,R3
	clr R3
	sts _TCNT1_H,R2
	.dbline -2
L5:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r T 20 i
	.dbsym r work_T 20 i
	.dbsym r work_Ns 20 i
	.dbsym r time_count 20 i
	.dbsym r work_Ts 20 i
	.dbend
	.dbfunc e rand _rand fi
;       rand_num -> R20,R21
;       randseed -> R20,R21
	.even
_rand::
	rcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 67
; }
; 
; 
; 
; unsigned int rand(unsigned int randseed)
; {
	.dbline 69
; 	unsigned int rand_num;
; 	rand_num= (randseed * rand_x + rand_y) % 251 + Fl; //求出来的是那个随机的频率
	ldi R16,97
	ldi R17,0
	movw R18,R20
	rcall empy16s
	subi R16,249  ; offset = 7
	sbci R17,255
	ldi R18,251
	ldi R19,0
	rcall mod16u
	movw R20,R16
	lds R2,_Fl
	lds R3,_Fl+1
	add R20,R2
	adc R21,R3
	.dbline 70
; 	seed = rand_num;
	sts _seed+1,R21
	sts _seed,R20
	.dbline 71
; 	D15_0=rand_num;            //把这个频率换算成为控制字
	sts _D15_0+1,R21
	sts _D15_0,R20
	.dbline 72
; 	return D15_0;
	lds R16,_D15_0
	lds R17,_D15_0+1
	.dbline -2
L10:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r rand_num 20 i
	.dbsym r randseed 20 i
	.dbend
	.dbfunc e line _line fi
;              i -> R20,R21
	.even
_line::
	rcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 78
; }
; 
; 
; //线性递增函数采用先放大再缩小的办法产生频率
; unsigned int line(unsigned int i)   
; {
	.dbline 79
; 	seed=(Fh-Fl)*i/Ns+Fl;
	lds R2,_Fl
	lds R3,_Fl+1
	lds R16,_Fh
	lds R17,_Fh+1
	sub R16,R2
	sbc R17,R3
	movw R18,R20
	rcall empy16s
	lds R18,_Ns
	clr R19
	rcall div16u
	movw R2,R16
	lds R4,_Fl
	lds R5,_Fl+1
	add R2,R4
	adc R3,R5
	sts _seed+1,R3
	sts _seed,R2
	.dbline 80
; 	D15_0=seed;
	sts _D15_0+1,R3
	sts _D15_0,R2
	.dbline 81
; 	return D15_0;
	lds R16,_D15_0
	lds R17,_D15_0+1
	.dbline -2
L11:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbend

⌨️ 快捷键说明

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