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

📄 at24c02.lis

📁 AVR单片机使用I2C总线的例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00D8                   .dbline 69
                       ;  flag=0;
 00D8 AA24              clr R10
 00DA                   .dbline 70
                       ;  port_init(); //端口初始化
 00DA 92DF              rcall _port_init
 00DC 6AC0              rjmp L12
 00DE                 L11:
 00DE                   .dbline 72
                       ;  while(1)
                       ;   {  
 00DE                   .dbline 73
                       ;      key1=scan_key();
 00DE 00D0              rcall _scan_key
 00E0 202E              mov R2,R16
 00E2 312E              mov R3,R17
 00E4 C22C              mov R12,R2
 00E6                   .dbline 74
                       ;      if (key1!=0x7f)
 00E6 8C2D              mov R24,R12
 00E8 8F37              cpi R24,127
 00EA 09F4              brne X2
 00EC 58C0              rjmp L14
 00EE                 X2:
 00EE                   .dbline 75
                       ;         {
 00EE                 L16:
 00EE                   .dbline 77
                       ;          do 
                       ;            {
 00EE                   .dbline 78
                       ;             key2=scan_key();//检查按键释放
 00EE 00D0              rcall _scan_key
 00F0 202E              mov R2,R16
 00F2 312E              mov R3,R17
 00F4 E22C              mov R14,R2
 00F6                   .dbline 79
                       ;             display();
 00F6 8BDF              rcall _display
 00F8                   .dbline 80
                       ;             }
 00F8                 L17:
 00F8                   .dbline 81
                       ;          while(key1==key2);
 00F8 CE14              cp R12,R14
 00FA C9F3              breq L16
 00FC                   .dbline 82
                       ;          if (key1>=0x80)
 00FC 8C2D              mov R24,R12
 00FE 8038              cpi R24,128
 0100 88F0              brlo L19
 0102                   .dbline 83
                       ;             {
 0102                   .dbline 84
                       ;              if (flag!=0x00)//SHIFT键切换数据和地址修改
 0102 AA20              tst R10
 0104 49F0              breq L21
 0106                   .dbline 85
                       ;                  { 
 0106                   .dbline 86
                       ;                    Write24c02(&at24_data,at24_add,1);
 0106 81E0              ldi R24,1
 0108 8883              std y+0,R24
 010A 20910100          lds R18,_at24_add
 010E 00E0              ldi R16,<_at24_data
 0110 10E0              ldi R17,>_at24_data
 0112 00D0              rcall _Write24c02
 0114                   .dbline 87
                       ;                    flag=0x00;
 0114 AA24              clr R10
 0116                   .dbline 88
                       ;                   }          
 0116 02C0              rjmp L22
 0118                 L21:
 0118                   .dbline 89
                       ;              else flag=0x80;
 0118 80E8              ldi R24,128
 011A A82E              mov R10,R24
 011C                 L22:
 011C                   .dbline 90
                       ;              ledbuff[5]=0x00^flag;
 011C A0920500          sts _ledbuff+5,R10
 0120                   .dbline 91
                       ;              index=0;
 0120 6627              clr R22
 0122                   .dbline 92
                       ;              }
 0122 3DC0              rjmp L20
 0124                 L19:
 0124                   .dbline 94
                       ;          else
                       ;             {
 0124                   .dbline 95
                       ;              switch (index)
 0124 462F              mov R20,R22
 0126 5527              clr R21
 0128 4030              cpi R20,0
 012A 4507              cpc R20,R21
 012C 29F0              breq L27
 012E 4130              cpi R20,1
 0130 E0E0              ldi R30,0
 0132 5E07              cpc R21,R30
 0134 E1F0              breq L30
 0136 33C0              rjmp L24
 0138                 X0:
 0138                   .dbline 96
                       ;                {
 0138                 L27:
 0138                   .dbline 97
                       ;                 case 0:{if (flag==0x00)
 0138                   .dbline 97
 0138 AA20              tst R10
 013A 61F4              brne L28
 013C                   .dbline 98
                       ;                            {key2=at24_add&0x0f;
 013C                   .dbline 98
 013C 80910100          lds R24,_at24_add
 0140 8F70              andi R24,15
 0142 E82E              mov R14,R24
 0144                   .dbline 99
                       ;                             at24_add=key2|(key1<<4);
 0144 8C2D              mov R24,R12
 0146 8F70              andi R24,#0x0F
 0148 8295              swap R24
 014A 2E2C              mov R2,R14
 014C 282A              or R2,R24
 014E 20920100          sts _at24_add,R2
 0152                   .dbline 100
                       ;                             }
 0152 0BC0              rjmp L29
 0154                 L28:
 0154                   .dbline 102
                       ;                         else
                       ;                            {key2=at24_data&0x0f;
 0154                   .dbline 102
 0154 80910000          lds R24,_at24_data
 0158 8F70              andi R24,15
 015A E82E              mov R14,R24
 015C                   .dbline 103
                       ;                             at24_data=key2|(key1<<4);
 015C 8C2D              mov R24,R12
 015E 8F70              andi R24,#0x0F
 0160 8295              swap R24
 0162 2E2C              mov R2,R14
 0164 282A              or R2,R24
 0166 20920000          sts _at24_data,R2
 016A                   .dbline 104
                       ;                             }
 016A                 L29:
 016A                   .dbline 105
                       ;                         index=01;                           
 016A 61E0              ldi R22,1
 016C                   .dbline 106
                       ;                         break;       
 016C 18C0              rjmp L25
 016E                 L30:
 016E                   .dbline 108
                       ;                        }
                       ;                 case 1:{if (flag==0x00)
 016E                   .dbline 108
 016E AA20              tst R10
 0170 59F4              brne L31
 0172                   .dbline 109
                       ;                            {key2=at24_add&0xf0;
 0172                   .dbline 109
 0172 80910100          lds R24,_at24_add
 0176 807F              andi R24,240
 0178 E82E              mov R14,R24
 017A                   .dbline 110
                       ;                             at24_add=key2|(key1&0x0f);
 017A 8C2D              mov R24,R12
 017C 8F70              andi R24,15
 017E 2E2C              mov R2,R14
 0180 282A              or R2,R24
 0182 20920100          sts _at24_add,R2
 0186                   .dbline 111
                       ;                             }
 0186 0AC0              rjmp L32
 0188                 L31:
 0188                   .dbline 113
                       ;                         else
                       ;                            {key2=at24_data&0xf0;
 0188                   .dbline 113
 0188 80910000          lds R24,_at24_data
 018C 807F              andi R24,240
 018E E82E              mov R14,R24
 0190                   .dbline 114
                       ;                             at24_data=key2|(key1&0x0f);
 0190 8C2D              mov R24,R12
 0192 8F70              andi R24,15
 0194 2E2C              mov R2,R14
 0196 282A              or R2,R24
 0198 20920000          sts _at24_data,R2
 019C                   .dbline 115
                       ;                             }
 019C                 L32:
 019C                   .dbline 116
                       ;                         index=00;   
 019C 6627              clr R22
 019E                   .dbline 117
                       ;                         break;  
 019E                 L24:
 019E                 L25:
 019E                   .dbline 120
                       ;                        }
                       ;                }                
                       ;             }   
 019E                 L20:
 019E                   .dbline 121
                       ;          }                                    
 019E                 L14:
 019E                   .dbline 122
                       ;      if (flag==0x00)
 019E AA20              tst R10
 01A0 39F4              brne L33
 01A2                   .dbline 123
                       ;      Read24c02(&at24_data,at24_add,1);
 01A2 81E0              ldi R24,1
 01A4 8883              std y+0,R24
 01A6 20910100          lds R18,_at24_add
 01AA 00E0              ldi R16,<_at24_data
 01AC 10E0              ldi R17,>_at24_data
 01AE 00D0              rcall _Read24c02
 01B0                 L33:
 01B0                   .dbline 124
 01B0 2EDF              rcall _display
 01B2                   .dbline 125
 01B2                 L12:
 01B2                   .dbline 71
 01B2 95CF              rjmp L11
 01B4                 X1:
 01B4                   .dbline 126}
                       ;      display();   
                       ;   }
                       ; }
 01B4                 L10:
 01B4 2196              adiw R28,1
 01B6 0895              ret
 01B8                   .dbsym r index 22 c
 01B8                   .dbsym r flag 10 c
 01B8                   .dbsym r key1 12 c
 01B8                   .dbsym r key2 14 c
                         .area bss(ram, con, rel)
 0000                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0000                 _at24_data::
 0000                   .blkb 1
 0001                   .dbsym s at24_data _at24_data c
 0001                 _at24_add::
 0001                   .blkb 1
 0002                   .dbsym s at24_add _at24_add c

⌨️ 快捷键说明

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