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

📄 mcp41010.lis

📁 ATmega16-ad1602
💻 LIS
字号:
                        .module mcp41010.c
                        .area text(rom, con, rel)
 0000                   .dbfile mcp41010.c
 0000                   .dbfile F:\file\数控电源3\ad_da\text\mcp41010.c
 0000                   .dbfunc e r_io_init _r_io_init fV
                        .even
 0000           _r_io_init::
 0000                   .dbline -1
 0000                   .dbline 16
 0000           ; #include<iom16v.h>
 0000           ; 
 0000           ; #define r_full                9340
 0000           ; 
 0000           ; #define cs_ddr                DDRA
 0000           ; #define cs_port               PORTA
 0000           ; #define sck_ddr               DDRA
 0000           ; #define sck_port      PORTA
 0000           ; #define si_ddr                DDRA
 0000           ; #define si_port               PORTA
 0000           ; #define cs                    0x01
 0000           ; #define sck                   0x02
 0000           ; #define si                    0x04
 0000           ; 
 0000           ; void r_io_init(void)
 0000           ; {
 0000                   .dbline 17
 0000           ;       cs_ddr|=cs;
 0000 D09A              sbi 0x1a,0
 0002                   .dbline 18
 0002           ;       sck_ddr|=sck;
 0002 D19A              sbi 0x1a,1
 0004                   .dbline 19
 0004           ;       si_ddr|=si;
 0004 D29A              sbi 0x1a,2
 0006                   .dbline 20
 0006           ;       cs_port|=cs;
 0006 D89A              sbi 0x1b,0
 0008                   .dbline 21
 0008           ;       sck_port&=~sck;
 0008 D998              cbi 0x1b,1
 000A                   .dbline 22
 000A           ;       si_port&=~si;
 000A DA98              cbi 0x1b,2
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbend
 000E                   .dbfunc e write_r _write_r fV
 000E           ;          count -> R20
 000E           ;            dat -> R18
 000E           ;            cmd -> R16
                        .even
 000E           _write_r::
 000E 4A93              st -y,R20
 0010                   .dbline -1
 0010                   .dbline 26
 0010           ; }
 0010           ; 
 0010           ; void write_r(unsigned char cmd,unsigned char dat)                     //cmd=0x11:write data;  cmd=0x31:cut off
 0010           ; {
 0010                   .dbline 27
 0010           ;       unsigned char count=0;
 0010 4427              clr R20
 0012                   .dbline 28
 0012           ;       sck_port&=~sck;//sck=0
 0012 D998              cbi 0x1b,1
 0014                   .dbline 29
 0014           ;       si_port&=~si;//si=0
 0014 DA98              cbi 0x1b,2
 0016                   .dbline 30
 0016           ;       cs_port&=~cs;//cs=0
 0016 D898              cbi 0x1b,0
 0018                   .dbline 31
 0018           ;       sck_port|=sck;                          //0
 0018 D99A              sbi 0x1b,1
 001A                   .dbline 32
 001A           ;       sck_port&=~sck;
 001A D998              cbi 0x1b,1
 001C                   .dbline 33
 001C           ;       sck_port|=sck;                          //1
 001C D99A              sbi 0x1b,1
 001E                   .dbline 34
 001E           ;       sck_port&=~sck;
 001E D998              cbi 0x1b,1
 0020                   .dbline 35
 0020           ;       if(cmd&0x20)
 0020 05FF              sbrs R16,5
 0022 02C0              rjmp L3
 0024           X0:
 0024                   .dbline 36
 0024           ;               si_port|=si;
 0024 DA9A              sbi 0x1b,2
 0026 01C0              xjmp L4
 0028           L3:
 0028                   .dbline 38
 0028           ;       else
 0028           ;               si_port&=~si;
 0028 DA98              cbi 0x1b,2
 002A           L4:
 002A                   .dbline 39
 002A           ;       sck_port|=sck;                          //2
 002A D99A              sbi 0x1b,1
 002C                   .dbline 40
 002C           ;       sck_port&=~sck;
 002C D998              cbi 0x1b,1
 002E                   .dbline 41
 002E           ;       if(cmd&0x10)
 002E 04FF              sbrs R16,4
 0030 02C0              rjmp L5
 0032           X1:
 0032                   .dbline 42
 0032           ;               si_port|=si;
 0032 DA9A              sbi 0x1b,2
 0034 01C0              xjmp L6
 0036           L5:
 0036                   .dbline 44
 0036           ;       else
 0036           ;               si_port&=~si;
 0036 DA98              cbi 0x1b,2
 0038           L6:
 0038                   .dbline 45
 0038           ;       sck_port|=sck;                          //3
 0038 D99A              sbi 0x1b,1
 003A                   .dbline 46
 003A           ;       sck_port&=~sck;
 003A D998              cbi 0x1b,1
 003C                   .dbline 47
 003C           ;       si_port&=~si;
 003C DA98              cbi 0x1b,2
 003E                   .dbline 48
 003E           ;       sck_port|=sck;                          //4
 003E D99A              sbi 0x1b,1
 0040                   .dbline 49
 0040           ;       sck_port&=~sck;
 0040 D998              cbi 0x1b,1
 0042                   .dbline 50
 0042           ;       sck_port|=sck;                          //5
 0042 D99A              sbi 0x1b,1
 0044                   .dbline 51
 0044           ;       sck_port&=~sck;
 0044 D998              cbi 0x1b,1
 0046                   .dbline 52
 0046           ;       if(cmd&0x02)
 0046 01FF              sbrs R16,1
 0048 02C0              rjmp L7
 004A           X2:
 004A                   .dbline 53
 004A           ;               si_port|=si;
 004A DA9A              sbi 0x1b,2
 004C 01C0              xjmp L8
 004E           L7:
 004E                   .dbline 55
 004E           ;       else
 004E           ;               si_port&=~si;
 004E DA98              cbi 0x1b,2
 0050           L8:
 0050                   .dbline 56
 0050           ;       sck_port|=sck;                          //6
 0050 D99A              sbi 0x1b,1
 0052                   .dbline 57
 0052           ;       sck_port&=~sck;
 0052 D998              cbi 0x1b,1
 0054                   .dbline 58
 0054           ;       if(cmd&0x01)
 0054 00FF              sbrs R16,0
 0056 02C0              rjmp L9
 0058           X3:
 0058                   .dbline 59
 0058           ;               si_port|=si;
 0058 DA9A              sbi 0x1b,2
 005A 01C0              xjmp L10
 005C           L9:
 005C                   .dbline 61
 005C           ;       else
 005C           ;               si_port&=~si;
 005C DA98              cbi 0x1b,2
 005E           L10:
 005E                   .dbline 62
 005E           ;       sck_port|=sck;                          //7
 005E D99A              sbi 0x1b,1
 0060                   .dbline 63
 0060           ;       sck_port&=~sck;
 0060 D998              cbi 0x1b,1
 0062                   .dbline 64
 0062           ;       for(count=0;count<8;count++)
 0062 4427              clr R20
 0064 09C0              xjmp L14
 0066           L11:
 0066                   .dbline 65
 0066           ;       {
 0066                   .dbline 66
 0066           ;               if(dat&0x80)
 0066 27FF              sbrs R18,7
 0068 02C0              rjmp L15
 006A           X4:
 006A                   .dbline 67
 006A           ;                       si_port|=si;
 006A DA9A              sbi 0x1b,2
 006C 01C0              xjmp L16
 006E           L15:
 006E                   .dbline 69
 006E           ;               else
 006E           ;                       si_port&=~si;
 006E DA98              cbi 0x1b,2
 0070           L16:
 0070                   .dbline 70
 0070           ;               sck_port|=sck;
 0070 D99A              sbi 0x1b,1
 0072                   .dbline 71
 0072           ;               sck_port&=~sck;
 0072 D998              cbi 0x1b,1
 0074                   .dbline 72
 0074           ;               dat=dat<<1;
 0074 220F              lsl R18
 0076                   .dbline 73
 0076           ;       }
 0076           L12:
 0076                   .dbline 64
 0076 4395              inc R20
 0078           L14:
 0078                   .dbline 64
 0078 4830              cpi R20,8
 007A A8F3              brlo L11
 007C           X5:
 007C                   .dbline 74
 007C           ;       cs_port|=cs;
 007C D89A              sbi 0x1b,0
 007E                   .dbline -2
 007E           L2:
 007E                   .dbline 0 ; func end
 007E 4991              ld R20,y+
 0080 0895              ret
 0082                   .dbsym r count 20 c
 0082                   .dbsym r dat 18 c
 0082                   .dbsym r cmd 16 c
 0082                   .dbend
 0082                   .dbfunc e r_init _r_init fV
                        .even
 0082           _r_init::
 0082                   .dbline -1
 0082                   .dbline 78
 0082           ; }
 0082           ; 
 0082           ; void r_init(void)
 0082           ; {
 0082                   .dbline 79
 0082           ;       r_io_init();
 0082 BEDF              xcall _r_io_init
 0084                   .dbline 80
 0084           ;       write_r(0x11,0x7f);
 0084 2FE7              ldi R18,127
 0086 01E1              ldi R16,17
 0088                   .dbline -2
 0088           L17:
 0088                   .dbline 0 ; func end
 0088 C2CF              xjmp _write_r
 008A                   .dbend
 008A                   .dbfunc e set_r _set_r fV
 008A           ;           buf1 -> R10
 008A           ;           buf0 -> y+0
 008A           ;              r -> R12,R13
                        .even
 008A           _set_r::
 008A 0E940000          xcall push_xgset003C
 008E 6801              movw R12,R16
 0090 2497              sbiw R28,4
 0092                   .dbline -1
 0092                   .dbline 84
 0092           ; }
 0092           ; 
 0092           ; void set_r(unsigned int r)
 0092           ; {     
 0092                   .dbline 85
 0092           ;       float buf0=0;
 0092 00E0              ldi R16,<L19
 0094 10E0              ldi R17,>L19
 0096 0E940000          xcall lpm32
 009A 0883              std y+0,R16
 009C 1983              std y+1,R17
 009E 2A83              std y+2,R18
 00A0 3B83              std y+3,R19
 00A2                   .dbline 86
 00A2           ;       unsigned char buf1=0;
 00A2                   .dbline 87
 00A2           ;       buf0=r_full/255;
 00A2 00E0              ldi R16,<L20
 00A4 10E0              ldi R17,>L20
 00A6 0E940000          xcall lpm32
 00AA 0883              std y+0,R16
 00AC 1983              std y+1,R17
 00AE 2A83              std y+2,R18
 00B0 3B83              std y+3,R19
 00B2                   .dbline 88
 00B2           ;       buf0=r/buf0;
 00B2 8601              movw R16,R12
 00B4 0E940000          xcall uint2fp
 00B8 CE01              movw R24,R28
 00BA 9A93              st -y,R25
 00BC 8A93              st -y,R24
 00BE 0E940000          xcall fpdiv1
 00C2 0883              std y+0,R16
 00C4 1983              std y+1,R17
 00C6 2A83              std y+2,R18
 00C8 3B83              std y+3,R19
 00CA                   .dbline 89
 00CA           ;       buf1=(unsigned char)buf0;
 00CA 0881              ldd R16,y+0
 00CC 1981              ldd R17,y+1
 00CE 2A81              ldd R18,y+2
 00D0 3B81              ldd R19,y+3
 00D2 0E940000          xcall fpint
 00D6 A02E              mov R10,R16
 00D8                   .dbline 90
 00D8           ;       write_r(0x11,buf1);
 00D8 2A2D              mov R18,R10
 00DA 01E1              ldi R16,17
 00DC 98DF              xcall _write_r
 00DE                   .dbline -2
 00DE           L18:
 00DE                   .dbline 0 ; func end
 00DE 2496              adiw R28,4
 00E0 0C940000          xjmp pop_xgset003C
 00E4                   .dbsym r buf1 10 c
 00E4                   .dbsym l buf0 0 D
 00E4                   .dbsym r r 12 i
 00E4                   .dbend
 00E4                   .dbfunc e main _main fV
                        .even
 00E4           _main::
 00E4                   .dbline -1
 00E4                   .dbline 107
 00E4           ; }
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; 
 00E4           ; //main.c
 00E4           ; 
 00E4           ; 
 00E4           ; void main(void)
 00E4           ; {
 00E4                   .dbline 108
 00E4           ;       r_init();
 00E4 CEDF              xcall _r_init
 00E6 03C0              xjmp L23
 00E8           L22:
 00E8                   .dbline 110
 00E8           ;       while(1)
 00E8           ;       {
 00E8                   .dbline 111
 00E8           ;               set_r(5900);
 00E8 0CE0              ldi R16,5900
 00EA 17E1              ldi R17,23
 00EC CEDF              xcall _set_r
 00EE                   .dbline 112
 00EE           ;       }
 00EE           L23:
 00EE                   .dbline 109
 00EE FCCF              xjmp L22
 00F0           X6:
 00F0                   .dbline -2
 00F0           L21:
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbend
                        .area lit(rom, con, rel)
 0000           L20:
 0000 00001042          .word 0x0,0x4210
 0004           L19:
 0004 00000000          .word 0x0,0x0
 0008           ; }
 0008           ; 

⌨️ 快捷键说明

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