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

📄 24cxxmain.lis

📁 一个关于AVR单片机的例程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _24CxxMain.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\avr\m16_twi_24x\24CxxMain.c
 0000                   .dbfunc e main _main fV
 0000           ;              y -> R14,R15
 0000           ;              x -> R10,R11
 0000           ;              w -> R12,R13
 0000           ;              b -> R20,R21
 0000           ;              r -> R22,R23
 0000           ;              c -> y+4
 0000           ;              i -> y+2
                        .even
 0000           _main::
 0000 2697              sbiw R28,6
 0002                   .dbline -1
 0002                   .dbline 13
 0002           ; #include<iom16v.h>
 0002           ; #include<macros.h>
 0002           ; #include"xd.h"
 0002           ; #define XDmain
 0002           ; #include"xdprj.h"
 0002           ; 
 0002           ; 
 0002           ; uchar r_buf[64];
 0002           ; 
 0002           ; uchar w_buf[64];
 0002           ; 
 0002           ; void main()
 0002           ; {
 0002                   .dbline 24
 0002           ;       uint i;
 0002           ;       
 0002           ;      uchar *r;
 0002           ;      uint b;
 0002           ;      uint c;
 0002           ; 
 0002           ;      uchar *w;
 0002           ;      uint x;
 0002           ;      uint y;
 0002           ; 
 0002           ;       tms(100);
 0002 04E6              ldi R16,100
 0004 0E940000          xcall _tms
 0008                   .dbline 27
 0008           ; 
 0008           ;       //-----初始化cpu------
 0008           ;     setreg_m16();     //初始化cpu
 0008 A3D0              xcall _setreg_m16
 000A                   .dbline 30
 000A           ; 
 000A           ; 
 000A           ;       for(i=0;i<64;i++)               //清主机读和写缓存区
 000A 0024              clr R0
 000C 1124              clr R1
 000E 1B82              std y+3,R1
 0010 0A82              std y+2,R0
 0012 14C0              xjmp L5
 0014           L2:
 0014                   .dbline 31
 0014 80E0              ldi R24,<_w_buf
 0016 90E0              ldi R25,>_w_buf
 0018 EA81              ldd R30,y+2
 001A FB81              ldd R31,y+3
 001C E80F              add R30,R24
 001E F91F              adc R31,R25
 0020 2224              clr R2
 0022 2082              std z+0,R2
 0024 80E0              ldi R24,<_r_buf
 0026 90E0              ldi R25,>_r_buf
 0028 EA81              ldd R30,y+2
 002A FB81              ldd R31,y+3
 002C E80F              add R30,R24
 002E F91F              adc R31,R25
 0030 2082              std z+0,R2
 0032           L3:
 0032                   .dbline 30
 0032 8A81              ldd R24,y+2
 0034 9B81              ldd R25,y+3
 0036 0196              adiw R24,1
 0038 9B83              std y+3,R25
 003A 8A83              std y+2,R24
 003C           L5:
 003C                   .dbline 30
 003C 8A81              ldd R24,y+2
 003E 9B81              ldd R25,y+3
 0040 8034              cpi R24,64
 0042 E0E0              ldi R30,0
 0044 9E07              cpc R25,R30
 0046 30F3              brlo L2
 0048                   .dbline 33
 0048           ;               r_buf[i]=w_buf[i]=0;
 0048           ; 
 0048           ;       for(i=0;i<64;i++)               //写缓存区赋初值
 0048 0024              clr R0
 004A 1124              clr R1
 004C 1B82              std y+3,R1
 004E 0A82              std y+2,R0
 0050 0EC0              xjmp L9
 0052           L6:
 0052                   .dbline 34
 0052 80E0              ldi R24,<_w_buf
 0054 90E0              ldi R25,>_w_buf
 0056 EA81              ldd R30,y+2
 0058 FB81              ldd R31,y+3
 005A E80F              add R30,R24
 005C F91F              adc R31,R25
 005E 2A80              ldd R2,y+2
 0060 3B80              ldd R3,y+3
 0062 2082              std z+0,R2
 0064           L7:
 0064                   .dbline 33
 0064 8A81              ldd R24,y+2
 0066 9B81              ldd R25,y+3
 0068 0196              adiw R24,1
 006A 9B83              std y+3,R25
 006C 8A83              std y+2,R24
 006E           L9:
 006E                   .dbline 33
 006E 8A81              ldd R24,y+2
 0070 9B81              ldd R25,y+3
 0072 8034              cpi R24,64
 0074 E0E0              ldi R30,0
 0076 9E07              cpc R25,R30
 0078 60F3              brlo L6
 007A                   .dbline 36
 007A           ;               w_buf[i]=i;
 007A           ; 
 007A           ;      r=r_buf; //读参数
 007A 60E0              ldi R22,<_r_buf
 007C 70E0              ldi R23,>_r_buf
 007E                   .dbline 37
 007E           ;      b=0x00;
 007E 4427              clr R20
 0080 5527              clr R21
 0082                   .dbline 38
 0082           ;      c=64;
 0082 80E4              ldi R24,64
 0084 90E0              ldi R25,0
 0086 9D83              std y+5,R25
 0088 8C83              std y+4,R24
 008A                   .dbline 40
 008A           ; 
 008A           ;      w=w_buf; //写参数
 008A 80E0              ldi R24,<_w_buf
 008C 90E0              ldi R25,>_w_buf
 008E 6C01              movw R12,R24
 0090                   .dbline 41
 0090           ;      x=0x00;
 0090 AA24              clr R10
 0092 BB24              clr R11
 0094                   .dbline 42
 0094           ;      y=64;
 0094 80E4              ldi R24,64
 0096 90E0              ldi R25,0
 0098 7C01              movw R14,R24
 009A                   .dbline 44
 009A           ; 
 009A           ;      wt24c(w,x,y);    //写
 009A F982              std y+1,R15
 009C E882              std y+0,R14
 009E 9501              movw R18,R10
 00A0 8601              movw R16,R12
 00A2 0E940000          xcall _wt24c
 00A6                   .dbline 46
 00A6           ; 
 00A6           ;      rd24c(r,b,c);    //读
 00A6 0C80              ldd R0,y+4
 00A8 1D80              ldd R1,y+5
 00AA 1982              std y+1,R1
 00AC 0882              std y+0,R0
 00AE 9A01              movw R18,R20
 00B0 8B01              movw R16,R22
 00B2 0E940000          xcall _rd24c
 00B6                   .dbline 49
 00B6           ;      
 00B6           ;      //-----读出的数据发送到PC-----
 00B6           ;      for(i=0;i<64;i++)
 00B6 0024              clr R0
 00B8 1124              clr R1
 00BA 1B82              std y+3,R1
 00BC 0A82              std y+2,R0
 00BE 13C0              xjmp L13
 00C0           L10:
 00C0                   .dbline 50
 00C0 80E0              ldi R24,<_r_buf
 00C2 90E0              ldi R25,>_r_buf
 00C4 EA81              ldd R30,y+2
 00C6 FB81              ldd R31,y+3
 00C8 E80F              add R30,R24
 00CA F91F              adc R31,R25
 00CC 2080              ldd R2,z+0
 00CE 80E0              ldi R24,<_txd_buf
 00D0 90E0              ldi R25,>_txd_buf
 00D2 EA81              ldd R30,y+2
 00D4 FB81              ldd R31,y+3
 00D6 E80F              add R30,R24
 00D8 F91F              adc R31,R25
 00DA 2082              std z+0,R2
 00DC           L11:
 00DC                   .dbline 49
 00DC 8A81              ldd R24,y+2
 00DE 9B81              ldd R25,y+3
 00E0 0196              adiw R24,1
 00E2 9B83              std y+3,R25
 00E4 8A83              std y+2,R24
 00E6           L13:
 00E6                   .dbline 49
 00E6 8A81              ldd R24,y+2
 00E8 9B81              ldd R25,y+3
 00EA 8034              cpi R24,64
 00EC E0E0              ldi R30,0
 00EE 9E07              cpc R25,R30
 00F0 38F3              brlo L10
 00F2                   .dbline 52
 00F2           ;       txd_buf[i]=r_buf[i];
 00F2           ;      
 00F2           ;      txd_buf[69]=syserr;
 00F2 2090C600          lds R2,_syserr
 00F6 2092C500          sts _txd_buf+69,R2

⌨️ 快捷键说明

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