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

📄 soc_test.lst

📁 atmega128串口通信
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -