📄 soc_test.s
字号:
.dbline 512
; set_dds_increment(temp1);
movw R30,R28
ldd R16,z+0
ldd R17,z+1
ldd R18,z+2
ldd R19,z+3
xcall _set_dds_increment
.dbline 513
; NOP5();
xcall _NOP5
.dbline 514
; NOP5();
xcall _NOP5
.dbline 515
; NOP5();
xcall _NOP5
.dbline 516
; NOP5();
xcall _NOP5
.dbline 517
; NOP5();
xcall _NOP5
.dbline 518
; NOP5();
xcall _NOP5
.dbline 519
; NOP5();
xcall _NOP5
.dbline 520
; systemregH=systemregH|0b00001000;
lds R24,_systemregH
ori R24,8
sts _systemregH,R24
.dbline 521
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline 522
; NOP5();
xcall _NOP5
.dbline 523
; NOP5();
xcall _NOP5
.dbline 524
; NOP5();
xcall _NOP5
.dbline 525
; NOP5();
xcall _NOP5
.dbline 526
; NOP5();
xcall _NOP5
.dbline 527
; NOP5();
xcall _NOP5
.dbline 528
; NOP5();
xcall _NOP5
.dbline 529
; systemregH=systemregH&0b11110111;
lds R24,_systemregH
andi R24,247
sts _systemregH,R24
.dbline 530
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline -2
.dbline 531
; }// end DDS_param_set
L100:
adiw R28,4
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r temp2 10 S
.dbsym l temp1 0 L
.dbend
.dbfunc e NCO_param_set _NCO_param_set fV
; temp2 -> R10,R11
; temp1 -> y+0
.even
_NCO_param_set::
xcall push_gset3
sbiw R28,4
.dbline -1
.dbline 537
;
; /*********************************************************
; NCO参数设置
; *********************************************************/
; void NCO_param_set(void)
; {long temp1;
.dbline 539
; short temp2;
; temp1=(long)buffer[4]*256*256*256;
lds R2,_buffer+4
clr R3
clr R4
clr R5
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R20
movw R18,R22
xcall empy32s
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 540
; temp1=temp1+(long)buffer[5]*256*256;
lds R2,_buffer+5
clr R3
clr R4
clr R5
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R20
movw R18,R22
xcall empy32s
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
add R2,R16
adc R3,R17
adc R4,R18
adc R5,R19
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 541
; temp1=temp1+(long)buffer[6]*256;
lds R2,_buffer+6
clr R3
clr R4
clr R5
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
add R2,R16
adc R3,R17
adc R4,R18
adc R5,R19
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 542
; temp1=temp1+(long)buffer[7];
lds R2,_buffer+7
clr R3
clr R4
clr R5
movw R30,R28
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
std z+0,R6
std z+1,R7
std z+2,R8
std z+3,R9
.dbline 543
; NCO_freq_set(temp1);
movw R30,R28
ldd R16,z+0
ldd R17,z+1
ldd R18,z+2
ldd R19,z+3
xcall _NCO_freq_set
.dbline 544
; temp2=buffer[8]*256+buffer[9];
lds R18,_buffer+8
clr R19
ldi R16,256
ldi R17,1
xcall empy16s
movw R10,R16
lds R2,_buffer+9
clr R3
add R10,R2
adc R11,R3
.dbline 545
; NCO_phase_set(temp2);
movw R16,R10
xcall _NCO_phase_set
.dbline -2
.dbline 546
; }// end NCO_param_set
L113:
adiw R28,4
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r temp2 10 S
.dbsym l temp1 0 L
.dbend
.dbfunc e sys_seting _sys_seting fV
.even
_sys_seting::
xcall push_gset1
.dbline -1
.dbline 551
; /*********************************************************
; 系统参数设置
; *********************************************************/
; void sys_seting(void)
; {switch(buffer[4])
.dbline 551
lds R20,_buffer+4
clr R21
cpi R20,0
cpc R20,R21
breq L125
X12:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L126
cpi R20,2
ldi R30,0
cpc R21,R30
breq L127
xjmp L122
X13:
.dbline 552
; {case 0x00://正常工作
L125:
.dbline 553
; systemregH=systemregH&0b11111100;
lds R24,_systemregH
andi R24,252
sts _systemregH,R24
.dbline 554
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline 555
; break;
xjmp L122
L126:
.dbline 557
; case 0x01://DDS输出
; systemregH=systemregH&0b11111110;
lds R24,_systemregH
andi R24,254
sts _systemregH,R24
.dbline 558
; systemregH=systemregH|0b00000010;
ori R24,2
sts _systemregH,R24
.dbline 559
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline 560
; break;
xjmp L122
L127:
.dbline 562
; case 0x02://AD输出
; systemregH=systemregH&0b11111101;
lds R24,_systemregH
andi R24,253
sts _systemregH,R24
.dbline 563
; systemregH=systemregH|0b00000001;
ori R24,1
sts _systemregH,R24
.dbline 564
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline 565
; break;
.dbline 566
; default:break;
L122:
.dbline 568
; }
; systemregH=systemregH&0b11111011;
lds R24,_systemregH
andi R24,251
sts _systemregH,R24
.dbline 569
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline 570
; NOP5();
xcall _NOP5
.dbline 571
; NOP5();
xcall _NOP5
.dbline 572
; NOP5();
xcall _NOP5
.dbline 573
; NOP5();
xcall _NOP5
.dbline 574
; NOP5();
xcall _NOP5
.dbline 575
; NOP5();
xcall _NOP5
.dbline 576
; NOP5();
xcall _NOP5
.dbline 577
; systemregH=systemregH|0b00000100;
lds R24,_systemregH
ori R24,4
sts _systemregH,R24
.dbline 578
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline 579
; NOP5();
xcall _NOP5
.dbline 580
; NOP5();
xcall _NOP5
.dbline 581
; NOP5();
xcall _NOP5
.dbline 582
; NOP5();
xcall _NOP5
.dbline 583
; NOP5();
xcall _NOP5
.dbline 584
; NOP5();
xcall _NOP5
.dbline 585
; NOP5();
xcall _NOP5
.dbline 586
; systemregH=systemregH&0b11111011;
lds R24,_systemregH
andi R24,251
sts _systemregH,R24
.dbline 587
; SYSCTL_BYTE_HIG=systemregH;
mov R2,R24
sts 6655,R2
.dbline -2
.dbline 588
; }
L120:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 600
; /*****************************************************************************
; ******************************************************************************
; ******************************************************************************
; 至此所有子程序结束
; ******************************************************************************
; ******************************************************************************
; *****************************************************************************/
; /*********************************************************
; 主函数
; *********************************************************/
; void main(void)
; {
.dbline 601
; CLI(); //关中断
cli
.dbline 604
;
; #ifndef SIMULATOR
; asm("ldi R16,$67"); //延时2s,以保证DSP有充足的时间配置FPGA
ldi R16,$67
.dbline 607
; //delay1();
; #endif
; enable_XMEM(); //使能外部SRAM
xcall _enable_XMEM
.dbline 608
; initial_work(); //初始化工作
xcall _initial_work
.dbline 609
; UDR0=0x00; //先发一数到串口以清串口
clr R2
out 0xc,R2
.dbline 610
; query_TXC();
xcall _query_TXC
.dbline 611
; systemregL=0x00;
clr R2
sts _systemregL,R2
.dbline 612
; systemregH=0x00;
sts _systemregH,R2
.dbline 613
; ddc_param=0b0000000010000000;
ldi R24,128
ldi R25,0
sts _ddc_param+1,R25
sts _ddc_param,R24
.dbline 614
; send_instruct(ddc_param,0x00);
clr R18
movw R16,R24
xcall _send_instruct
xjmp L130
L129:
.dbline 616
; while(1) //循环接收数据
; {
.dbline 618
; #ifndef DEBUG_BUFFER
; CLI();
cli
.dbline 619
; buf_index=0; //每次开始接收时,buf_index为
clr R2
sts _buf_index,R2
.dbline 620
; beginWord=0x00; //开始字还没收到
sts _beginWord,R2
.dbline 621
; endWord=0x00; //结束字还没收到
sts _endWord,R2
.dbline 622
; haveUartInt=0; //还没有中断
sts _haveUartInt,R2
.dbline 623
; haveSpeWord=0; //清接收转义字符标志
sts _haveSpeWord,R2
.dbline 624
; haveError=0; //清错误标志
sts _haveError,R2
.dbline 625
; usart_flush();
xcall _usart_flush
.dbline 626
; SEI();
sei
xjmp L133
X14:
.dbline 628
; while(1) //接收循环
; {
L135:
.dbline 630
L136:
.dbline 630
; //注意:修改后若接收有错误,则END_WORD!=endWord,不会跳出接收循环
; while(haveUartInt==0); //死循环等待接收数据
lds R2,_haveUartInt
tst R2
breq L135
.dbline 631
; haveUartInt=0; //清接收到一个字符的标志
clr R2
sts _haveUartInt,R2
.dbline 632
; if(END_WORD==endWord)
lds R24,_endWord
cpi R24,126
brne L138
.dbline 633
; {//收到结束字,跳出循环
.dbline 634
; endWord=0x00;
sts _endWord,R2
.dbline 635
; beginWord=0x00;
sts _beginWord,R2
.dbline 636
; break;
xjmp L141
L138:
.dbline 638
L133:
.dbline 627
xjmp L136
L140:
.dbline 639
L141:
.dbline 639
; }
; }//至此接收了一个命令串
; while(UCSR0A&BIT(RXC0));
sbic 0xb,7
rjmp L140
.dbline 650
; //以下判断命令代码,从而转入相应的子处理程序
; #endif
; #ifdef DEBUG_BUFFER
; #endif
;
; /*buffer[3]=0x03;
; buffer[4]=0x03;
; buffer[5]=0x03;
; buffer[6]=0x03;
; buffer[7]=0x03;*/
; switch(buffer[3])
lds R20,_buffer+3
clr R21
cpi R20,0
cpc R20,R21
breq L147
X15:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L148
cpi R20,2
ldi R30,0
cpc R21,R30
breq L149
cpi R20,3
ldi R30,0
cpc R21,R30
breq L150
cpi R20,4
ldi R30,0
cpc R21,R30
breq L151
cpi R20,5
ldi R30,0
cpc R21,R30
breq L152
cpi R20,6
ldi R30,0
cpc R21,R30
breq L153
cpi R20,7
ldi R30,0
cpc R21,R30
breq L154
xjmp L144
X16:
.dbline 651
; {
L147:
.dbline 654
; case 0x00:
; //DDS_param_set();
; CIC_param_set();
xcall _CIC_param_set
.dbline 655
; break;
xjmp L144
L148:
.dbline 657
; case 0x01:
; HB_param_set();
xcall _HB_param_set
.dbline 658
; break;
xjmp L144
L149:
.dbline 660
; case 0x02:
; FIR_param_set();
xcall _FIR_param_set
.dbline 661
; break;
xjmp L144
L150:
.dbline 663
; case 0x03:
; DDS_param_set();
xcall _DDS_param_set
.dbline 664
; break;
xjmp L144
L151:
.dbline 666
; case 0x04:
; NCO_param_set();
xcall _NCO_param_set
.dbline 667
; break;
xjmp L144
L152:
.dbline 669
; case 0x05:
; DDC_param_set();
xcall _DDC_param_set
.dbline 670
; break;
xjmp L144
L153:
.dbline 672
; case 0x06:
; aquire_data();
xcall _aquire_data
.dbline 673
; break;
xjmp L144
L154:
.dbline 675
; case 0x07:
; sys_seting();
xcall _sys_seting
.dbline 676
; default:break;
L144:
.dbline 678
L130:
.dbline 615
xjmp L129
X17:
.dbline -2
.dbline 679
; }
; }
; }//end main
L128:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile F:\chengxu128L\soc_test.c
_ddc_param::
.blkb 2
.dbfile F:\chengxu128L/soc_test.H
.dbsym e ddc_param _ddc_param S
_systemregH::
.blkb 1
.dbsym e systemregH _systemregH c
_systemregL::
.blkb 1
.dbsym e systemregL _systemregL c
_buf_length::
.blkb 1
.dbsym e buf_length _buf_length c
_buf_index::
.blkb 1
.dbsym e buf_index _buf_index c
_haveSpeWord::
.blkb 1
.dbsym e haveSpeWord _haveSpeWord c
_haveError::
.blkb 1
.dbsym e haveError _haveError c
_haveUartInt::
.blkb 1
.dbsym e haveUartInt _haveUartInt c
_endWord::
.blkb 1
.dbsym e endWord _endWord c
_beginWord::
.blkb 1
.dbsym e beginWord _beginWord c
_reply_buffer::
.blkb 20
.dbsym e reply_buffer _reply_buffer A[20:20]c
_buffer::
.blkb 100
.dbsym e buffer _buffer A[100:100]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -