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

📄 fjv14.lis

📁 一本关于控制系统仿真的书的程序 1、文件夹1中的程序是书中的一些仿真。 2、文件2中的是最近做的预测控制、PID控制及逻辑控制的对比综合研究。 3、文件夹3中是与maltab通信的数据采集板的设
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 02CC                   .dbsym l temp 0 A[4:2]i
 02CC                   .dbend
 02CC                   .dbfunc e ADC_Start _ADC_Start fV
                        .even
 02CC           _ADC_Start::
 02CC                   .dbline -1
 02CC                   .dbline 299
 02CC           ;          }         
 02CC           ; /*******************************************************************
 02CC           ;  函数功能:AD采集,10位精度。
 02CC           ;  入口参数:无
 02CC           ;  出口参数:无
 02CC           ;  说明:
 02CC           ; *******************************************************/
 02CC           ;  void ADC_Start(void)
 02CC           ;      {
 02CC                   .dbline 300
 02CC           ;       asm("NOP");//给通道切换留一点时间。
 02CC 0000              NOP
 02CE                   .dbline 301
 02CE           ;       asm("NOP");
 02CE 0000              NOP
 02D0                   .dbline 302
 02D0           ;       MCUCR =(1<<SE);//开启ADC休眠模式
 02D0 80E8              ldi R24,128
 02D2 85BF              out 0x35,R24
 02D4                   .dbline 303
 02D4           ;         asm("SLEEP");
 02D4 8895              SLEEP
 02D6                   .dbline 304
 02D6           ;         MCUCR =(0<<SE);//关闭ADC休眠模式,关闭SE位
 02D6 2224              clr R2
 02D8 25BE              out 0x35,R2
 02DA                   .dbline -2
 02DA           L82:
 02DA                   .dbline 0 ; func end
 02DA 0895              ret
 02DC                   .dbend
 02DC                   .dbfunc e DAC_5617_10 _DAC_5617_10 fV
 02DC           ;          TempH -> R22
 02DC           ;          TempL -> R20
 02DC           ;    dac_channel -> y+8
 02DC           ;      dac_dataL -> R10
 02DC           ;      dac_dataH -> R12
                        .even
 02DC           _DAC_5617_10::
 02DC 00D0              rcall push_gset4
 02DE A22E              mov R10,R18
 02E0 C02E              mov R12,R16
 02E2                   .dbline -1
 02E2                   .dbline 316
 02E2           ;               
 02E2           ;      }
 02E2           ;    
 02E2           ; /*******************************************************************
 02E2           ;  函数功能:DA传送数据,10位精度。固定通道A。
 02E2           ;  入口参数:dac_data8位数据。
 02E2           ;  出口参数:无
 02E2           ;  说明:
 02E2           ; *******************************************************/
 02E2           ; 
 02E2           ; void DAC_5617_10(unsigned char dac_dataH,unsigned char dac_dataL,unsigned char dac_channel)
 02E2           ; {     
 02E2                   .dbline 318
 02E2           ;      unsigned char TempL,TempH;
 02E2           ;        if(dac_channel==0x01)   //使用通道A。(即out1)
 02E2 8885              ldd R24,y+8
 02E4 8130              cpi R24,1
 02E6 E1F4              brne L84
 02E8                   .dbline 319
 02E8           ;           {
 02E8                   .dbline 320
 02E8           ;            set_cs;
 02E8 C29A              sbi 0x18,2
 02EA                   .dbline 321
 02EA           ;            TempH=0xc0;
 02EA 60EC              ldi R22,192
 02EC                   .dbline 322
 02EC           ;            TempL=0x00;
 02EC 4427              clr R20
 02EE                   .dbline 323
 02EE           ;            TempH|=(dac_dataH<<2)|(dac_dataL>>6);
 02EE 2A2C              mov R2,R10
 02F0 2694              lsr R2
 02F2 2694              lsr R2
 02F4 2694              lsr R2
 02F6 2694              lsr R2
 02F8 2694              lsr R2
 02FA 2694              lsr R2
 02FC 3C2C              mov R3,R12
 02FE 330C              lsl R3
 0300 330C              lsl R3
 0302 3228              or R3,R2
 0304 6329              or R22,R3
 0306                   .dbline 324
 0306           ;            TempL|=(dac_dataL<<2);
 0306 2A2C              mov R2,R10
 0308 220C              lsl R2
 030A 220C              lsl R2
 030C 4229              or R20,R2
 030E                   .dbline 325
 030E           ;            clr_cs;
 030E 88B3              in R24,0x18
 0310 8B7F              andi R24,251
 0312 88BB              out 0x18,R24
 0314                   .dbline 326
 0314           ;            SPI_Transmit(TempH);
 0314 062F              mov R16,R22
 0316 26D0              rcall _SPI_Transmit
 0318                   .dbline 327
 0318           ;            SPI_Transmit(TempL);
 0318 042F              mov R16,R20
 031A 24D0              rcall _SPI_Transmit
 031C                   .dbline 328
 031C           ;            set_cs;
 031C C29A              sbi 0x18,2
 031E                   .dbline 329
 031E           ;               }
 031E 20C0              rjmp L85
 0320           L84:
 0320                   .dbline 330
 0320           ;        else if (dac_channel==0x02) //使用通道B。(即out2)
 0320 8885              ldd R24,y+8
 0322 8230              cpi R24,2
 0324 E1F4              brne L86
 0326                   .dbline 331
 0326           ;          {
 0326                   .dbline 332
 0326           ;            set_cs;
 0326 C29A              sbi 0x18,2
 0328                   .dbline 333
 0328           ;            TempH=0x40;
 0328 60E4              ldi R22,64
 032A                   .dbline 334
 032A           ;            TempL=0x00;
 032A 4427              clr R20
 032C                   .dbline 335
 032C           ;            TempH|=(dac_dataH<<2)|(dac_dataL>>6);
 032C 2A2C              mov R2,R10
 032E 2694              lsr R2
 0330 2694              lsr R2
 0332 2694              lsr R2
 0334 2694              lsr R2
 0336 2694              lsr R2
 0338 2694              lsr R2
 033A 3C2C              mov R3,R12
 033C 330C              lsl R3
 033E 330C              lsl R3
 0340 3228              or R3,R2
 0342 6329              or R22,R3
 0344                   .dbline 336
 0344           ;            TempL|=(dac_dataL<<2);
 0344 2A2C              mov R2,R10
 0346 220C              lsl R2
 0348 220C              lsl R2
 034A 4229              or R20,R2
 034C                   .dbline 337
 034C           ;            clr_cs;
 034C 88B3              in R24,0x18
 034E 8B7F              andi R24,251
 0350 88BB              out 0x18,R24
 0352                   .dbline 338
 0352           ;            SPI_Transmit(TempH);
 0352 062F              mov R16,R22
 0354 07D0              rcall _SPI_Transmit
 0356                   .dbline 339
 0356           ;            SPI_Transmit(TempL);
 0356 042F              mov R16,R20
 0358 05D0              rcall _SPI_Transmit
 035A                   .dbline 340
 035A           ;            set_cs;
 035A C29A              sbi 0x18,2
 035C                   .dbline 341
 035C           ;          }
 035C 01C0              rjmp L87
 035E           L86:
 035E                   .dbline 344
 035E           ;        
 035E           ;       else  
 035E           ;        { 
 035E                   .dbline 345
 035E           ;           asm("NOP");
 035E 0000              NOP
 0360                   .dbline 346
 0360           ;         }
 0360           L87:
 0360           L85:
 0360                   .dbline -2
 0360           L83:
 0360 00D0              rcall pop_gset4
 0362                   .dbline 0 ; func end
 0362 0895              ret
 0364                   .dbsym r TempH 22 c
 0364                   .dbsym r TempL 20 c
 0364                   .dbsym l dac_channel 8 c
 0364                   .dbsym r dac_dataL 10 c
 0364                   .dbsym r dac_dataH 12 c
 0364                   .dbend
 0364                   .dbfunc e SPI_Transmit _SPI_Transmit fV
 0364           ;              i -> R20
 0364           ;       dac_data -> R16
                        .even
 0364           _SPI_Transmit::
 0364 00D0              rcall push_gset2
 0366                   .dbline -1
 0366                   .dbline 351
 0366           ; }
 0366           ; /*****************************************************************/
 0366           ; //初始化spi
 0366           ; void SPI_Transmit(unsigned char dac_data)
 0366           ; {      
 0366                   .dbline 353
 0366           ;     unsigned char i;
 0366           ;       SPCR=0x58; //SPI使能?此句是不是必须的?
 0366 88E5              ldi R24,88
 0368 8DB9              out 0xd,R24
 036A                   .dbline 354
 036A           ;       SPDR=dac_data; //送值到SPDR
 036A 0FB9              out 0xf,R16
 036C           L89:
 036C                   .dbline 356
 036C           L90:
 036C                   .dbline 355
 036C           ;       while(!SPSR&(1<<SPIF))
 036C 2EB0              in R2,0xe
 036E 2220              tst R2
 0370 19F4              brne L92
 0372 61E0              ldi R22,1
 0374 70E0              ldi R23,0
 0376 02C0              rjmp L93
 0378           L92:
 0378 6627              clr R22
 037A 7727              clr R23
 037C           L93:
 037C 67FD              sbrc R22,7
 037E F6CF              rjmp L89
 0380                   .dbline 357
 0380           ;               ;               
 0380           ;        for (i=0;i<3;i++)//保留足够的发送时间!!!
 0380 4427              clr R20
 0382 01C0              rjmp L97
 0384           L94:
 0384                   .dbline 358
 0384                   .dbline 358
 0384                   .dbline 358
 0384           L95:
 0384                   .dbline 357
 0384 4395              inc R20
 0386           L97:
 0386                   .dbline 357
 0386 4330              cpi R20,3
 0388 E8F3              brlo L94
 038A                   .dbline -2
 038A           L88:
 038A 00D0              rcall pop_gset2
 038C                   .dbline 0 ; func end
 038C 0895              ret
 038E                   .dbsym r i 20 c
 038E                   .dbsym r dac_data 16 c
 038E                   .dbend
 038E                   .dbfunc e IO_out _IO_out fV
 038E           ;     IO_channel -> R18
 038E           ;        IO_data -> R16
                        .even
 038E           _IO_out::
 038E 00D0              rcall push_gset1
 0390                   .dbline -1
 0390                   .dbline 368
 0390           ;        {;} 
 0390           ; }   
 0390           ; /******************************************************************
 0390           ;  函数功能:IO输出数据。首先确定输出数据。然后给定输出通道。
 0390           ;  入口参数:IO_data输出数据。IO_channel输出通道。
 0390           ;  出口参数:无
 0390           ;  说明:
 0390           ; *******************************************************/
 0390           ; 
 0390           ; void IO_out(unsigned char IO_data,unsigned char IO_channel)
 0390           ; {     
 0390                   .dbline 370
 0390           ;     
 0390           ;      switch (IO_channel)
 0390 422F              mov R20,R18
 0392 5527              clr R21
 0394 4030              cpi R20,0
 0396 4507              cpc R20,R21
 0398 C1F0              breq L102
 039A           X5:
 039A 4130              cpi R20,1
 039C E0E0              ldi R30,0
 039E 5E07              cpc R21,R30
 03A0 11F1              breq L107
 03A2 4430              cpi R20,4
 03A4 E0E0              ldi R30,0
 03A6 5E07              cpc R21,R30
 03A8 61F1              breq L112
 03AA 4530              cpi R20,5
 03AC E0E0              ldi R30,0
 03AE 5E07              cpc R21,R30
 03B0 09F4              brne X7
 03B2 35C0              rjmp L117
 03B4           X7:
 03B4 4630              cpi R20,6
 03B6 E0E0              ldi R30,0
 03B8 5E07              cpc R21,R30
 03BA 09F4              brne X8
 03BC 3EC0              rjmp L122
 03BE           X8:
 03BE 4730              cpi R20,7
 03C0 E0E0              ldi R30,0
 03C2 5E07              cpc R21,R30
 03C4 09F4              brne X9
 03C6 47C0              rjmp L127
 03C8           X9:
 03C8 53C0              rjmp L100
 03CA           X6:
 03CA                   .dbline 371
 03CA           ;        {
 03CA           L102:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -