📄 data_process.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 + -