📄 soc_test.lst
字号:
024A 936A ST R22,-Y
024B 935A ST R21,-Y
024C 934A ST R20,-Y
024D 0181 MOVW R16,R2
024E 0192 MOVW R18,R4
024F 940E06E8 CALL mod32s
0251 0158 MOVW R10,R16
(0353) send_instruct(temp,0x82);
0252 E822 LDI R18,0x82
0253 DF93 RCALL _send_instruct
(0354) }//set_dds_freq
0254 940E0794 CALL pop_gset3
0256 9624 ADIW R28,4
0257 9508 RET
_set_dds_scale:
temp --> R20
dds_amp --> R22
0258 940E07AE CALL push_gset2
025A 01B8 MOVW R22,R16
(0355)
(0356) /*********************************************************
(0357) 设置DDS幅度
(0358) *********************************************************/
(0359) void set_dds_scale(short dds_amp)
(0360) {short temp=0x0;
025B 2744 CLR R20
025C 2755 CLR R21
(0361) temp=dds_amp&0x0FFF;
025D 01AB MOVW R20,R22
025E 705F ANDI R21,0xF
(0362) temp=temp|0x0000;
(0363) send_instruct(temp,0x80);
025F E820 LDI R18,0x80
0260 018A MOVW R16,R20
0261 DF85 RCALL _send_instruct
(0364) }//set_dds_scale
0262 940E0791 CALL pop_gset2
0264 9508 RET
_set_dds_phase:
dds_phase --> R20
0265 940E0797 CALL push_gset1
0267 01A8 MOVW R20,R16
(0365)
(0366) /*********************************************************
(0367) 设置DDS相位
(0368) *********************************************************/
(0369) void set_dds_phase(short dds_phase)
(0370) { send_instruct(dds_phase,0x81);
0268 E821 LDI R18,0x81
0269 018A MOVW R16,R20
026A DF7C RCALL _send_instruct
(0371) }//set_dds_phase
026B 940E079A CALL pop_gset1
026D 9508 RET
_set_dds_increment:
temp --> R10
dds_freqdelta --> Y+6
026E 940E06A1 CALL push_arg4
0270 940E07B2 CALL push_gset3
(0372)
(0373) /*********************************************************
(0374) 设置DDS频率步进
(0375) *********************************************************/
(0376) void set_dds_increment(long dds_freqdelta)
(0377) { short temp;
(0378) temp = (short)(dds_freqdelta>>16);
0272 01FE MOVW R30,R28
0273 8026 LDD R2,Z+6
0274 8037 LDD R3,Z+7
0275 8440 LDD R4,Z+8
0276 8451 LDD R5,Z+9
0277 0152 MOVW R10,R4
(0379) send_instruct(temp,0x85);
0278 E825 LDI R18,0x85
0279 0185 MOVW R16,R10
027A DF6C RCALL _send_instruct
(0380) temp = dds_freqdelta%65536;
027B E040 LDI R20,0
027C E050 LDI R21,0
027D E061 LDI R22,1
027E E070 LDI R23,0
027F 01FE MOVW R30,R28
0280 8026 LDD R2,Z+6
0281 8037 LDD R3,Z+7
0282 8440 LDD R4,Z+8
0283 8451 LDD R5,Z+9
0284 937A ST R23,-Y
0285 936A ST R22,-Y
0286 935A ST R21,-Y
0287 934A ST R20,-Y
0288 0181 MOVW R16,R2
0289 0192 MOVW R18,R4
028A 940E06E8 CALL mod32s
028C 0158 MOVW R10,R16
(0381) send_instruct(temp,0x84);
028D E824 LDI R18,0x84
028E DF58 RCALL _send_instruct
(0382) }//set_dds_increment
028F 940E0794 CALL pop_gset3
0291 9624 ADIW R28,4
0292 9508 RET
_DDC_param_set:
0293 940E0797 CALL push_gset1
(0383)
(0384) /*********************************************************
(0385) DDC旁路设置
(0386) *********************************************************/
(0387) void DDC_param_set(void)
(0388) {
(0389) switch(buffer[4])
0295 91400123 LDS R20,0x123
0297 2755 CLR R21
0298 3040 CPI R20,0
0299 0745 CPC R20,R21
029A F141 BEQ 0x02C3
029B 3041 CPI R20,1
029C E0E0 LDI R30,0
029D 075E CPC R21,R30
029E F171 BEQ 0x02CD
029F 3042 CPI R20,2
02A0 E0E0 LDI R30,0
02A1 075E CPC R21,R30
02A2 F409 BNE 0x02A4
02A3 C033 RJMP 0x02D7
02A4 3043 CPI R20,3
02A5 E0E0 LDI R30,0
02A6 075E CPC R21,R30
02A7 F409 BNE 0x02A9
02A8 C038 RJMP 0x02E1
02A9 3044 CPI R20,4
02AA E0E0 LDI R30,0
02AB 075E CPC R21,R30
02AC F409 BNE 0x02AE
02AD C03D RJMP 0x02EB
02AE 3045 CPI R20,5
02AF E0E0 LDI R30,0
02B0 075E CPC R21,R30
02B1 F409 BNE 0x02B3
02B2 C042 RJMP 0x02F5
02B3 3046 CPI R20,6
02B4 E0E0 LDI R30,0
02B5 075E CPC R21,R30
02B6 F409 BNE 0x02B8
02B7 C047 RJMP 0x02FF
02B8 3047 CPI R20,7
02B9 E0E0 LDI R30,0
02BA 075E CPC R21,R30
02BB F409 BNE 0x02BD
02BC C04C RJMP 0x0309
02BD 3048 CPI R20,0x8
02BE E0E0 LDI R30,0
02BF 075E CPC R21,R30
02C0 F409 BNE 0x02C2
02C1 C051 RJMP 0x0313
02C2 C056 RJMP 0x0319
(0390) {case 0x00://接入NCO
(0391) ddc_param= ddc_param&0b1111111111111110;
02C3 91800100 LDS R24,_ddc_param
02C5 91900101 LDS R25,_ddc_param+1
02C7 7F8E ANDI R24,0xFE
02C8 93900101 STS _ddc_param+1,R25
02CA 93800100 STS _ddc_param,R24
(0392) break;
02CC C04C RJMP 0x0319
(0393) case 0x01://旁路NCO
(0394) ddc_param= ddc_param|0b0000000000000001;
02CD 91800100 LDS R24,_ddc_param
02CF 91900101 LDS R25,_ddc_param+1
02D1 6081 ORI R24,1
02D2 93900101 STS _ddc_param+1,R25
02D4 93800100 STS _ddc_param,R24
(0395) break;
02D6 C042 RJMP 0x0319
(0396) case 0x02://接入CIC
(0397) ddc_param= ddc_param&0b1111111111111101;
02D7 91800100 LDS R24,_ddc_param
02D9 91900101 LDS R25,_ddc_param+1
02DB 7F8D ANDI R24,0xFD
02DC 93900101 STS _ddc_param+1,R25
02DE 93800100 STS _ddc_param,R24
(0398) break;
02E0 C038 RJMP 0x0319
(0399) case 0x03://旁路CIC
(0400) ddc_param= ddc_param|0b0000000000000010;
02E1 91800100 LDS R24,_ddc_param
02E3 91900101 LDS R25,_ddc_param+1
02E5 6082 ORI R24,2
02E6 93900101 STS _ddc_param+1,R25
02E8 93800100 STS _ddc_param,R24
(0401) break;
02EA C02E RJMP 0x0319
(0402) case 0x04://接入HB
(0403) ddc_param= ddc_param&0b1111111111111011;
02EB 91800100 LDS R24,_ddc_param
02ED 91900101 LDS R25,_ddc_param+1
02EF 7F8B ANDI R24,0xFB
02F0 93900101 STS _ddc_param+1,R25
02F2 93800100 STS _ddc_param,R24
(0404) break;
02F4 C024 RJMP 0x0319
(0405) case 0x05://旁路HB
(0406) ddc_param= ddc_param|0b0000000000000100;
02F5 91800100 LDS R24,_ddc_param
02F7 91900101 LDS R25,_ddc_param+1
02F9 6084 ORI R24,4
02FA 93900101 STS _ddc_param+1,R25
02FC 93800100 STS _ddc_param,R24
(0407) break;
02FE C01A RJMP 0x0319
(0408) case 0x06://接入FIR
(0409) ddc_param= ddc_param&0b1111111111110111;
02FF 91800100 LDS R24,_ddc_param
0301 91900101 LDS R25,_ddc_param+1
0303 7F87 ANDI R24,0xF7
0304 93900101 STS _ddc_param+1,R25
0306 93800100 STS _ddc_param,R24
(0410) break;
0308 C010 RJMP 0x0319
(0411) case 0x07://旁路FIR
(0412) ddc_param= ddc_param|0b0000000000001000;
0309 91800100 LDS R24,_ddc_param
030B 91900101 LDS R25,_ddc_param+1
030D 6088 ORI R24,0x8
030E 93900101 STS _ddc_param+1,R25
0310 93800100 STS _ddc_param,R24
(0413) break;
0312 C006 RJMP 0x0319
(0414) case 0x08:
(0415) ddc_param=DDC_PARAM;
0313 E88E LDI R24,0x8E
0314 E090 LDI R25,0
0315 93900101 STS _ddc_param+1,R25
0317 93800100 STS _ddc_param,R24
(0416) break;
(0417) default:break;
(0418) }
(0419) send_instruct(ddc_param,0x00);
0319 2722 CLR R18
031A 91000100 LDS R16,_ddc_param
031C 91100101 LDS R17,_ddc_param+1
031E DEC8 RCALL _send_instruct
(0420) systemregH=systemregH&0b11111011;
031F 91800102 LDS R24,_systemregH
0321 7F8B ANDI R24,0xFB
0322 93800102 STS _systemregH,R24
(0421) SYSCTL_BYTE_HIG=systemregH;
0324 2E28 MOV R2,R24
0325 922019FF STS 0x19FF,R2
(0422) NOP5();
0327 DD68 RCALL _NOP5
(0423) NOP5();
0328 DD67 RCALL _NOP5
(0424) NOP5();
0329 DD66 RCALL _NOP5
(0425) NOP5();
032A DD65 RCALL _NOP5
(0426) NOP5();
032B DD64 RCALL _NOP5
(0427) NOP5();
032C DD63 RCALL _NOP5
(0428) NOP5();
032D DD62 RCALL _NOP5
(0429) systemregH=systemregH|0b00000100;
032E 91800102 LDS R24,_systemregH
0330 6084 ORI R24,4
0331 93800102 STS _systemregH,R24
(0430) SYSCTL_BYTE_HIG=systemregH;
0333 2E28 MOV R2,R24
0334 922019FF STS 0x19FF,R2
(0431) NOP5();
0336 DD59 RCALL _NOP5
(0432) NOP5();
0337 DD58 RCALL _NOP5
(0433) NOP5();
0338 DD57 RCALL _NOP5
(0434) NOP5();
0339 DD56 RCALL _NOP5
(0435) NOP5();
033A DD55 RCALL _NOP5
(0436) NOP5();
033B DD54 RCALL _NOP5
(0437) NOP5();
033C DD53 RCALL _NOP5
(0438) systemregH=systemregH&0b11111011;
033D 91800102 LDS R24,_systemregH
033F 7F8B ANDI R24,0xFB
0340 93800102 STS _systemregH,R24
(0439) SYSCTL_BYTE_HIG=systemregH;
0342 2E28 MOV R2,R24
0343 922019FF STS 0x19FF,R2
(0440) }//end DDC_param_set
0345 940E079A CALL pop_gset1
0347 9508 RET
_NCO_freq_set:
temp --> R10
nco_freq --> Y+6
0348 940E06A1 CALL push_arg4
034A 940E07B2 CALL push_gset3
(0441)
(0442) /*********************************************************
(0443) NCO频率设置
(0444) *********************************************************/
(0445) void NCO_freq_set(long nco_freq)
(0446) {short temp;
(0447) temp = (short)(nco_freq>>16);
034C 01FE MOVW R30,R28
034D 8026 LDD R2,Z+6
034E 8037 LDD R3,Z+7
034F 8440 LDD R4,Z+8
0350 8451 LDD R5,Z+9
0351 0152 MOVW R10,R4
(0448) send_instruct(temp,0x02);
0352 E022 LDI R18,2
0353 0185 MOVW R16,R10
0354 DE92 RCALL _send_instruct
(0449) temp = nco_freq%65536;
0355 E040 LDI R20,0
0356 E050 LDI R21,0
0357 E061 LDI R22,1
0358 E070 LDI R23,0
0359 01FE MOVW R30,R28
035A 8026 LDD R2,Z+6
035B 8037 LDD R3,Z+7
035C 8440 LDD R4,Z+8
035D 8451 LDD R5,Z+9
035E 937A ST R23,-Y
035F 936A ST R22,-Y
0360 935A ST R21,-Y
0361 934A ST R20,-Y
0362 0181 MOVW R16,R2
0363 0192 MOVW R18,R4
0364 940E06E8 CALL mod32s
0366 0158 MOVW R10,R16
(0450) send_instruct(temp,0x01);
0367 E021 LDI R18,1
0368 DE7E RCALL _send_instruct
(0451) }// end NCO_freq_set
0369 940E0794 CALL pop_gset3
036B 9624 ADIW R28,4
036C 9508 RET
_NCO_phase_set:
nco_phase --> R20
036D 940E0797 CALL push_gset1
036F 01A8 MOVW R20,R16
(0452)
(0453) /*********************************************************
(0454) NCO相位设置
(0455) *********************************************************/
(0456) void NCO_phase_set(short nco_phase)
(0457) {
(0458) send_instruct(nco_phase,0x03);
0370 E023 LDI R18,3
0371 018A MOVW R16,R20
0372 DE74 RCALL _send_instruct
(0459) }// end NCO_phase_set
0373 940E079A CALL pop_gset1
0375 9508 RET
(0460)
(0461) /*********************************************************
(0462) CIC参数设置
(0463) *********************************************************/
(0464) void CIC_param_set(void)
(0465) {send_instruct(CIC_PARAM,0x04);
_CIC_param_set:
0376 E024 LDI R18,4
0377 E10A LDI R16,0x1A
0378 E714 LDI R17,0x74
(0466)
(0467) }//end CIC_param_set
0379 CE6D RJMP _send_instruct
_HB_param_set:
i --> R20
037A 940E0797 CALL push_gset1
(0468)
(0469) /*********************************************************
(0470) HB参数设置
(0471) *********************************************************/
(0472) void HB_param_set(void)
(0473) {int i;
(0474) send_instruct(HB_PARAM,0x1e);
037C E12E LDI R18,0x1E
037D E100 LDI R16,0x10
037E E010 LDI R17,0
037F DE67 RCALL _send_instruct
(0475) for(i=0;i<17;i++)
0380 2744 CLR R20
0381 2755 CLR R21
(0476) send_instruct((buffer[4+i]*256),i+0x1F);
0382 2F24 MOV R18,R20
0383 5E21 SUBI R18,0xE1
0384 4F3F SBCI R19,0xFF
0385 E283 LDI R24,0x23
0386 E091 LDI R25,1
0387 01FA MOVW R30,R20
0388 0FE8 ADD R30,R24
0389 1FF9 ADC R31,R25
038A 8020 LDD R2,Z+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -