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

📄 soc_test.lis

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