📄 soc_test.lis
字号:
.even
02AE _send_instruct::
02AE 0E940000 xcall push_gset2
02B2 422F mov R20,R18
02B4 B801 movw R22,R16
02B6 .dbline -1
02B6 .dbline 277
02B6 ; /*********************************************************
02B6 ; 写控制命令
02B6 ; *********************************************************/
02B6 ; void send_instruct(short command ,unsigned char address)
02B6 ; {Write_bus_data(command);
02B6 .dbline 277
02B6 8B01 movw R16,R22
02B8 E1DF xcall _Write_bus_data
02BA .dbline 278
02BA ; Write_bus_add(address);
02BA 042F mov R16,R20
02BC F5DF xcall _Write_bus_add
02BE .dbline 279
02BE ; PORTE&=~BIT(BUSWEN); //BUSWEN置低
02BE 1B98 cbi 0x3,3
02C0 .dbline 280
02C0 ; NOP5();
02C0 9FDE xcall _NOP5
02C2 .dbline 281
02C2 ; PORTE|=BIT(BUSWEN); //BUSWEN置高
02C2 1B9A sbi 0x3,3
02C4 .dbline 282
02C4 ; NOP5();
02C4 9DDE xcall _NOP5
02C6 .dbline 283
02C6 ; PORTE&=~BIT(NBUS_CLK); //NBUS_CLK置低
02C6 1A98 cbi 0x3,2
02C8 .dbline 284
02C8 ; NOP5();
02C8 9BDE xcall _NOP5
02CA .dbline 285
02CA ; PORTE|=BIT(NBUS_CLK); //NBUS_CLK置高
02CA 1A9A sbi 0x3,2
02CC .dbline 286
02CC ; NOP5();
02CC 99DE xcall _NOP5
02CE .dbline 287
02CE ; PORTE&=~BIT(NBUS_CLK); //NBUS_CLK置低
02CE 1A98 cbi 0x3,2
02D0 .dbline 288
02D0 ; NOP5();
02D0 97DE xcall _NOP5
02D2 .dbline 289
02D2 ; PORTE&=~BIT(BUSWEN); //BUSWEN置低
02D2 1B98 cbi 0x3,3
02D4 .dbline 290
02D4 ; NOP5();
02D4 95DE xcall _NOP5
02D6 .dbline -2
02D6 .dbline 292
02D6 ;
02D6 ; }//end send_instruct
02D6 L59:
02D6 0E940000 xcall pop_gset2
02DA .dbline 0 ; func end
02DA 0895 ret
02DC .dbsym r address 20 c
02DC .dbsym r command 22 S
02DC .dbend
02DC .dbfunc e start_sample _start_sample fV
.even
02DC _start_sample::
02DC .dbline -1
02DC .dbline 297
02DC ; /*********************************************************
02DC ; 启动DDC数据采样
02DC ; *********************************************************/
02DC ; void start_sample(void)
02DC ; {PORTE&=~BIT(SAMPLE_START); //SAMPLE_START置低
02DC .dbline 297
02DC 1C98 cbi 0x3,4
02DE .dbline 298
02DE ; NOP5();
02DE 90DE xcall _NOP5
02E0 .dbline 299
02E0 ; PORTE|=BIT(SAMPLE_START); //SAMPLE_START置高
02E0 1C9A sbi 0x3,4
02E2 .dbline 300
02E2 ; NOP5();
02E2 8EDE xcall _NOP5
02E4 .dbline 301
02E4 ; NOP5();
02E4 8DDE xcall _NOP5
02E6 .dbline 302
02E6 ; NOP5();
02E6 8CDE xcall _NOP5
02E8 .dbline 303
02E8 ; NOP5();
02E8 8BDE xcall _NOP5
02EA .dbline 304
02EA ; NOP5();
02EA 8ADE xcall _NOP5
02EC .dbline 305
02EC ; NOP5();
02EC 89DE xcall _NOP5
02EE .dbline 306
02EE ; PORTE&=~BIT(SAMPLE_START); //SAMPLE_START置低
02EE 1C98 cbi 0x3,4
02F0 .dbline -2
02F0 .dbline 307
02F0 ; }//end start_sample
02F0 L60:
02F0 .dbline 0 ; func end
02F0 0895 ret
02F2 .dbend
02F2 .dbfunc e start_mcuread_sample _start_mcuread_sample fV
02F2 ; temp -> R20
.even
02F2 _start_mcuread_sample::
02F2 0E940000 xcall push_gset1
02F6 .dbline -1
02F6 .dbline 313
02F6 ;
02F6 ; /*********************************************************
02F6 ; 启动单片机读DDC采样数据
02F6 ; *********************************************************/
02F6 ; void start_mcuread_sample(void)
02F6 ; {unsigned char temp;
02F6 .dbline 314
02F6 ; PORTE&=~BIT(MCUREAD_START); //MCUREAD_START置低
02F6 1D98 cbi 0x3,5
02F8 .dbline 315
02F8 ; NOP5();
02F8 83DE xcall _NOP5
02FA .dbline 316
02FA ; PORTE|=BIT(MCUREAD_START); //MCUREAD_START置高
02FA 1D9A sbi 0x3,5
02FC .dbline 317
02FC ; NOP5();
02FC 81DE xcall _NOP5
02FE .dbline 318
02FE ; temp=DDCDATA_ADD;
02FE 4091FF16 lds R20,5887
0302 .dbline 319
0302 ; NOP5();
0302 7EDE xcall _NOP5
0304 .dbline 320
0304 ; PORTE&=~BIT(MCUREAD_START); //MCUREAD_START置低
0304 1D98 cbi 0x3,5
0306 .dbline -2
0306 .dbline 321
0306 ; }//end start_sample
0306 L61:
0306 0E940000 xcall pop_gset1
030A .dbline 0 ; func end
030A 0895 ret
030C .dbsym r temp 20 c
030C .dbend
030C .dbfunc e aquire_data _aquire_data fV
030C ; cnt -> R20,R21
030C ; ddc_data -> R22
.even
030C _aquire_data::
030C 0E940000 xcall push_gset2
0310 .dbline -1
0310 .dbline 328
0310 ;
0310 ;
0310 ; /*********************************************************
0310 ; 通过串口获取DDC数据
0310 ; *********************************************************/
0310 ; void aquire_data(void)
0310 ; {unsigned char ddc_data;
0310 .dbline 330
0310 ; int cnt;
0310 ; start_sample(); //启动DDC数据采集
0310 E5DF xcall _start_sample
0312 .dbline 331
0312 ; asm("ldi R16,$20");
0312 00E2 ldi R16,$20
0314 .dbline 332
0314 ; delay1(); //延时足够时间保证采样结束
0314 A7DE xcall _delay1
0316 .dbline 333
0316 ; start_mcuread_sample(); //启动MCU读
0316 EDDF xcall _start_mcuread_sample
0318 .dbline 334
0318 ; usart0_sendbyte(0x7E); //发送起始字
0318 0EE7 ldi R16,126
031A DCDE xcall _usart0_sendbyte
031C .dbline 335
031C ; usart0_sendbyte(0x6F); //发送地址字
031C 0FE6 ldi R16,111
031E DADE xcall _usart0_sendbyte
0320 .dbline 336
0320 ; ddc_data=DDCDATA_ADD; //假读一次
0320 6091FF16 lds R22,5887
0324 .dbline 337
0324 ; for(cnt=0;cnt<8192;cnt++) //发送数据
0324 4427 clr R20
0326 5527 clr R21
0328 L63:
0328 .dbline 338
0328 .dbline 339
0328 6091FF16 lds R22,5887
032C .dbline 340
032C 062F mov R16,R22
032E D2DE xcall _usart0_sendbyte
0330 .dbline 341
0330 L64:
0330 .dbline 337
0330 4F5F subi R20,255 ; offset = 1
0332 5F4F sbci R21,255
0334 .dbline 337
0334 4030 cpi R20,0
0336 E0E2 ldi R30,32
0338 5E07 cpc R21,R30
033A B4F3 brlt L63
033C .dbline 342
033C ; {
033C ; ddc_data=DDCDATA_ADD;
033C ; usart0_sendbyte(ddc_data);
033C ; }
033C ; usart0_sendbyte(0x7E); //发送结束字
033C 0EE7 ldi R16,126
033E CADE xcall _usart0_sendbyte
0340 .dbline -2
0340 .dbline 343
0340 ; }//end aquire_data
0340 L62:
0340 0E940000 xcall pop_gset2
0344 .dbline 0 ; func end
0344 0895 ret
0346 .dbsym r cnt 20 I
0346 .dbsym r ddc_data 22 c
0346 .dbend
0346 .dbfunc e set_dds_freq _set_dds_freq fV
0346 ; temp -> R10,R11
0346 ; dds_freq -> y+6
.even
0346 _set_dds_freq::
0346 0E940000 xcall push_arg4
034A 0E940000 xcall push_gset3
034E .dbline -1
034E .dbline 349
034E ;
034E ; /*********************************************************
034E ; 设置DDS频率
034E ; *********************************************************/
034E ; void set_dds_freq(long dds_freq)
034E ; {short temp;
034E .dbline 350
034E ; temp=(short)(dds_freq>>16);
034E FE01 movw R30,R28
0350 2680 ldd R2,z+6
0352 3780 ldd R3,z+7
0354 4084 ldd R4,z+8
0356 5184 ldd R5,z+9
0358 5201 movw R10,R4
035A .dbline 351
035A ; send_instruct(temp,0x83);
035A 23E8 ldi R18,131
035C 8501 movw R16,R10
035E A7DF xcall _send_instruct
0360 .dbline 352
0360 ; temp=dds_freq%65536;
0360 40E0 ldi R20,0
0362 50E0 ldi R21,0
0364 61E0 ldi R22,1
0366 70E0 ldi R23,0
0368 FE01 movw R30,R28
036A 2680 ldd R2,z+6
036C 3780 ldd R3,z+7
036E 4084 ldd R4,z+8
0370 5184 ldd R5,z+9
0372 7A93 st -y,R23
0374 6A93 st -y,R22
0376 5A93 st -y,R21
0378 4A93 st -y,R20
037A 8101 movw R16,R2
037C 9201 movw R18,R4
037E 0E940000 xcall mod32s
0382 5801 movw R10,R16
0384 .dbline 353
0384 ; send_instruct(temp,0x82);
0384 22E8 ldi R18,130
0386 93DF xcall _send_instruct
0388 .dbline -2
0388 .dbline 354
0388 ; }//set_dds_freq
0388 L67:
0388 0E940000 xcall pop_gset3
038C 2496 adiw R28,4
038E .dbline 0 ; func end
038E 0895 ret
0390 .dbsym r temp 10 S
0390 .dbsym l dds_freq 6 L
0390 .dbend
0390 .dbfunc e set_dds_scale _set_dds_scale fV
0390 ; temp -> R20,R21
0390 ; dds_amp -> R22,R23
.even
0390 _set_dds_scale::
0390 0E940000 xcall push_gset2
0394 B801 movw R22,R16
0396 .dbline -1
0396 .dbline 360
0396 ;
0396 ; /*********************************************************
0396 ; 设置DDS幅度
0396 ; *********************************************************/
0396 ; void set_dds_scale(short dds_amp)
0396 ; {short temp=0x0;
0396 .dbline 360
0396 4427 clr R20
0398 5527 clr R21
039A .dbline 361
039A ; temp=dds_amp&0x0FFF;
039A AB01 movw R20,R22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -