📄 soc_test.lst
字号:
(0514) NOP5();
0511 DB7E RCALL _NOP5
(0515) NOP5();
0512 DB7D RCALL _NOP5
(0516) NOP5();
0513 DB7C RCALL _NOP5
(0517) NOP5();
0514 DB7B RCALL _NOP5
(0518) NOP5();
0515 DB7A RCALL _NOP5
(0519) NOP5();
0516 DB79 RCALL _NOP5
(0520) systemregH=systemregH|0b00001000;
0517 91800102 LDS R24,_systemregH
0519 6088 ORI R24,0x8
051A 93800102 STS _systemregH,R24
(0521) SYSCTL_BYTE_HIG=systemregH;
051C 2E28 MOV R2,R24
051D 922019FF STS 0x19FF,R2
(0522) NOP5();
051F DB70 RCALL _NOP5
(0523) NOP5();
0520 DB6F RCALL _NOP5
(0524) NOP5();
0521 DB6E RCALL _NOP5
(0525) NOP5();
0522 DB6D RCALL _NOP5
(0526) NOP5();
0523 DB6C RCALL _NOP5
(0527) NOP5();
0524 DB6B RCALL _NOP5
(0528) NOP5();
0525 DB6A RCALL _NOP5
(0529) systemregH=systemregH&0b11110111;
0526 91800102 LDS R24,_systemregH
0528 7F87 ANDI R24,0xF7
0529 93800102 STS _systemregH,R24
(0530) SYSCTL_BYTE_HIG=systemregH;
052B 2E28 MOV R2,R24
052C 922019FF STS 0x19FF,R2
(0531) }// end DDS_param_set
052E 9624 ADIW R28,4
052F 940E0794 CALL pop_gset3
0531 9508 RET
_NCO_param_set:
temp2 --> R10
temp1 --> Y+0
0532 940E07B2 CALL push_gset3
0534 9724 SBIW R28,4
(0532)
(0533) /*********************************************************
(0534) NCO参数设置
(0535) *********************************************************/
(0536) void NCO_param_set(void)
(0537) {long temp1;
(0538) short temp2;
(0539) temp1=(long)buffer[4]*256*256*256;
0535 90200123 LDS R2,0x123
0537 2433 CLR R3
0538 2444 CLR R4
0539 2455 CLR R5
053A E040 LDI R20,0
053B E051 LDI R21,1
053C E060 LDI R22,0
053D E070 LDI R23,0
053E 925A ST R5,-Y
053F 924A ST R4,-Y
0540 923A ST R3,-Y
0541 922A ST R2,-Y
0542 018A MOVW R16,R20
0543 019B MOVW R18,R22
0544 940E0761 CALL empy32s
0546 E040 LDI R20,0
0547 E051 LDI R21,1
0548 E060 LDI R22,0
0549 E070 LDI R23,0
054A 933A ST R19,-Y
054B 932A ST R18,-Y
054C 931A ST R17,-Y
054D 930A ST R16,-Y
054E 018A MOVW R16,R20
054F 019B MOVW R18,R22
0550 940E0761 CALL empy32s
0552 E040 LDI R20,0
0553 E051 LDI R21,1
0554 E060 LDI R22,0
0555 E070 LDI R23,0
0556 933A ST R19,-Y
0557 932A ST R18,-Y
0558 931A ST R17,-Y
0559 930A ST R16,-Y
055A 018A MOVW R16,R20
055B 019B MOVW R18,R22
055C 940E0761 CALL empy32s
055E 01FE MOVW R30,R28
055F 8300 STD Z+0,R16
0560 8311 STD Z+1,R17
0561 8322 STD Z+2,R18
0562 8333 STD Z+3,R19
(0540) temp1=temp1+(long)buffer[5]*256*256;
0563 90200124 LDS R2,0x124
0565 2433 CLR R3
0566 2444 CLR R4
0567 2455 CLR R5
0568 E040 LDI R20,0
0569 E051 LDI R21,1
056A E060 LDI R22,0
056B E070 LDI R23,0
056C 925A ST R5,-Y
056D 924A ST R4,-Y
056E 923A ST R3,-Y
056F 922A ST R2,-Y
0570 018A MOVW R16,R20
0571 019B MOVW R18,R22
0572 940E0761 CALL empy32s
0574 E040 LDI R20,0
0575 E051 LDI R21,1
0576 E060 LDI R22,0
0577 E070 LDI R23,0
0578 933A ST R19,-Y
0579 932A ST R18,-Y
057A 931A ST R17,-Y
057B 930A ST R16,-Y
057C 018A MOVW R16,R20
057D 019B MOVW R18,R22
057E 940E0761 CALL empy32s
0580 01FE MOVW R30,R28
0581 8020 LDD R2,Z+0
0582 8031 LDD R3,Z+1
0583 8042 LDD R4,Z+2
0584 8053 LDD R5,Z+3
0585 0E20 ADD R2,R16
0586 1E31 ADC R3,R17
0587 1E42 ADC R4,R18
0588 1E53 ADC R5,R19
0589 01FE MOVW R30,R28
058A 8220 STD Z+0,R2
058B 8231 STD Z+1,R3
058C 8242 STD Z+2,R4
058D 8253 STD Z+3,R5
(0541) temp1=temp1+(long)buffer[6]*256;
058E 90200125 LDS R2,0x125
0590 2433 CLR R3
0591 2444 CLR R4
0592 2455 CLR R5
0593 E040 LDI R20,0
0594 E051 LDI R21,1
0595 E060 LDI R22,0
0596 E070 LDI R23,0
0597 925A ST R5,-Y
0598 924A ST R4,-Y
0599 923A ST R3,-Y
059A 922A ST R2,-Y
059B 018A MOVW R16,R20
059C 019B MOVW R18,R22
059D 940E0761 CALL empy32s
059F 01FE MOVW R30,R28
05A0 8020 LDD R2,Z+0
05A1 8031 LDD R3,Z+1
05A2 8042 LDD R4,Z+2
05A3 8053 LDD R5,Z+3
05A4 0E20 ADD R2,R16
05A5 1E31 ADC R3,R17
05A6 1E42 ADC R4,R18
05A7 1E53 ADC R5,R19
05A8 01FE MOVW R30,R28
05A9 8220 STD Z+0,R2
05AA 8231 STD Z+1,R3
05AB 8242 STD Z+2,R4
05AC 8253 STD Z+3,R5
(0542) temp1=temp1+(long)buffer[7];
05AD 90200126 LDS R2,0x126
05AF 2433 CLR R3
05B0 2444 CLR R4
05B1 2455 CLR R5
05B2 01FE MOVW R30,R28
05B3 8060 LDD R6,Z+0
05B4 8071 LDD R7,Z+1
05B5 8082 LDD R8,Z+2
05B6 8093 LDD R9,Z+3
05B7 0C62 ADD R6,R2
05B8 1C73 ADC R7,R3
05B9 1C84 ADC R8,R4
05BA 1C95 ADC R9,R5
05BB 01FE MOVW R30,R28
05BC 8260 STD Z+0,R6
05BD 8271 STD Z+1,R7
05BE 8282 STD Z+2,R8
05BF 8293 STD Z+3,R9
(0543) NCO_freq_set(temp1);
05C0 01FE MOVW R30,R28
05C1 8100 LDD R16,Z+0
05C2 8111 LDD R17,Z+1
05C3 8122 LDD R18,Z+2
05C4 8133 LDD R19,Z+3
05C5 DD82 RCALL _NCO_freq_set
(0544) temp2=buffer[8]*256+buffer[9];
05C6 91200127 LDS R18,0x127
05C8 2733 CLR R19
05C9 E000 LDI R16,0
05CA E011 LDI R17,1
05CB 940E0751 CALL empy16s
05CD 0158 MOVW R10,R16
05CE 90200128 LDS R2,0x128
05D0 2433 CLR R3
05D1 0CA2 ADD R10,R2
05D2 1CB3 ADC R11,R3
(0545) NCO_phase_set(temp2);
05D3 0185 MOVW R16,R10
05D4 DD98 RCALL _NCO_phase_set
(0546) }// end NCO_param_set
05D5 9624 ADIW R28,4
05D6 940E0794 CALL pop_gset3
05D8 9508 RET
_sys_seting:
05D9 940E0797 CALL push_gset1
(0547) /*********************************************************
(0548) 系统参数设置
(0549) *********************************************************/
(0550) void sys_seting(void)
(0551) {switch(buffer[4])
05DB 91400123 LDS R20,0x123
05DD 2755 CLR R21
05DE 3040 CPI R20,0
05DF 0745 CPC R20,R21
05E0 F049 BEQ 0x05EA
05E1 3041 CPI R20,1
05E2 E0E0 LDI R30,0
05E3 075E CPC R21,R30
05E4 F071 BEQ 0x05F3
05E5 3042 CPI R20,2
05E6 E0E0 LDI R30,0
05E7 075E CPC R21,R30
05E8 F0B1 BEQ 0x05FF
05E9 C020 RJMP 0x060A
(0552) {case 0x00://正常工作
(0553) systemregH=systemregH&0b11111100;
05EA 91800102 LDS R24,_systemregH
05EC 7F8C ANDI R24,0xFC
05ED 93800102 STS _systemregH,R24
(0554) SYSCTL_BYTE_HIG=systemregH;
05EF 2E28 MOV R2,R24
05F0 922019FF STS 0x19FF,R2
(0555) break;
05F2 C017 RJMP 0x060A
(0556) case 0x01://DDS输出
(0557) systemregH=systemregH&0b11111110;
05F3 91800102 LDS R24,_systemregH
05F5 7F8E ANDI R24,0xFE
05F6 93800102 STS _systemregH,R24
(0558) systemregH=systemregH|0b00000010;
05F8 6082 ORI R24,2
05F9 93800102 STS _systemregH,R24
(0559) SYSCTL_BYTE_HIG=systemregH;
05FB 2E28 MOV R2,R24
05FC 922019FF STS 0x19FF,R2
(0560) break;
05FE C00B RJMP 0x060A
(0561) case 0x02://AD输出
(0562) systemregH=systemregH&0b11111101;
05FF 91800102 LDS R24,_systemregH
0601 7F8D ANDI R24,0xFD
0602 93800102 STS _systemregH,R24
(0563) systemregH=systemregH|0b00000001;
0604 6081 ORI R24,1
0605 93800102 STS _systemregH,R24
(0564) SYSCTL_BYTE_HIG=systemregH;
0607 2E28 MOV R2,R24
0608 922019FF STS 0x19FF,R2
(0565) break;
(0566) default:break;
(0567) }
(0568) systemregH=systemregH&0b11111011;
060A 91800102 LDS R24,_systemregH
060C 7F8B ANDI R24,0xFB
060D 93800102 STS _systemregH,R24
(0569) SYSCTL_BYTE_HIG=systemregH;
060F 2E28 MOV R2,R24
0610 922019FF STS 0x19FF,R2
(0570) NOP5();
0612 DA7D RCALL _NOP5
(0571) NOP5();
0613 DA7C RCALL _NOP5
(0572) NOP5();
0614 DA7B RCALL _NOP5
(0573) NOP5();
0615 DA7A RCALL _NOP5
(0574) NOP5();
0616 DA79 RCALL _NOP5
(0575) NOP5();
0617 DA78 RCALL _NOP5
(0576) NOP5();
0618 DA77 RCALL _NOP5
(0577) systemregH=systemregH|0b00000100;
0619 91800102 LDS R24,_systemregH
061B 6084 ORI R24,4
061C 93800102 STS _systemregH,R24
(0578) SYSCTL_BYTE_HIG=systemregH;
061E 2E28 MOV R2,R24
061F 922019FF STS 0x19FF,R2
(0579) NOP5();
0621 DA6E RCALL _NOP5
(0580) NOP5();
0622 DA6D RCALL _NOP5
(0581) NOP5();
0623 DA6C RCALL _NOP5
(0582) NOP5();
0624 DA6B RCALL _NOP5
(0583) NOP5();
0625 DA6A RCALL _NOP5
(0584) NOP5();
0626 DA69 RCALL _NOP5
(0585) NOP5();
0627 DA68 RCALL _NOP5
(0586) systemregH=systemregH&0b11111011;
0628 91800102 LDS R24,_systemregH
062A 7F8B ANDI R24,0xFB
062B 93800102 STS _systemregH,R24
(0587) SYSCTL_BYTE_HIG=systemregH;
062D 2E28 MOV R2,R24
062E 922019FF STS 0x19FF,R2
(0588) }
0630 940E079A CALL pop_gset1
0632 9508 RET
(0589) /*****************************************************************************
(0590) ******************************************************************************
(0591) ******************************************************************************
(0592) 至此所有子程序结束
(0593) ******************************************************************************
(0594) ******************************************************************************
(0595) *****************************************************************************/
(0596) /*********************************************************
(0597) 主函数
(0598) *********************************************************/
(0599) void main(void)
(0600) {
(0601) CLI(); //关中断
_main:
0633 94F8 BCLR 7
(0602)
(0603) #ifndef SIMULATOR
(0604) asm("ldi R16,$67"); //延时2s,以保证DSP有充足的时间配置FPGA
0634 E607 LDI R16,0x67
(0605) //delay1();
(0606) #endif
(0607) enable_XMEM(); //使能外部SRAM
0635 DAA1 RCALL _enable_XMEM
(0608) initial_work(); //初始化工作
0636 DA5F RCALL _initial_work
(0609) UDR0=0x00; //先发一数到串口以清串口
0637 2422 CLR R2
0638 B82C OUT 0x0C,R2
(0610) query_TXC();
0639 DA99 RCALL _query_TXC
(0611) systemregL=0x00;
063A 2422 CLR R2
063B 92200103 STS _systemregL,R2
(0612) systemregH=0x00;
063D 92200102 STS _systemregH,R2
(0613) ddc_param=0b0000000010000000;
063F E880 LDI R24,0x80
0640 E090 LDI R25,0
0641 93900101 STS _ddc_param+1,R25
0643 93800100 STS _ddc_param,R24
(0614) send_instruct(ddc_param,0x00);
0645 2722 CLR R18
0646 018C MOVW R16,R24
0647 DB9F RCALL _send_instruct
0648 C056 RJMP 0x069F
(0615) while(1) //循环接收数据
(0616) {
(0617) #ifndef DEBUG_BUFFER
(0618) CLI();
0649 94F8 BCLR 7
(0619) buf_index=0; //每次开始接收时,buf_index为
064A 2422 CLR R2
064B 92200105 STS _buf_index,R2
(0620) beginWord=0x00; //开始字还没收到
064D 9220010A STS _beginWord,R2
(0621) endWord=0x00; //结束字还没收到
064F 92200109 STS _endWord,R2
(0622) haveUartInt=0; //还没有中断
0651 92200108 STS _haveUartInt,R2
(0623) haveSpeWord=0; //清接收转义字符标志
0653 92200106 STS _haveSpeWord,R2
(0624) haveError=0; //清错误标志
0655 92200107 STS _haveError,R2
(0625) usart_flush();
0657 DA87 RCALL _usart_flush
(0626) SEI();
0658 9478 BSET 7
0659 C010 RJMP 0x066A
(0627) while(1) //接收循环
(0628) {
(0629) //注意:修改后若接收有错误,则END_WORD!=endWord,不会跳出接收循环
(0630) while(haveUartInt==0); //死循环等待接收数据
065A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -