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

📄 at24c02.lst

📁 AVR单片机使用I2C总线的例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00A4                    .dbline 69
                       ;  flag=0;
 00A4  24AA              clr R10
 00A5                    .dbline 70
                       ;  port_init(); //端口初始化
 00A5  DF92              rcall _port_init
 00A6  C06A              rjmp L12
 00A7                  L11:
 00A7                    .dbline 72
                       ;  while(1)
                       ;   {  
 00A7                    .dbline 73
                       ;      key1=scan_key();
 00A7  D12D              rcall _scan_key
 00A8  2E20              mov R2,R16
 00A9  2E31              mov R3,R17
 00AA  2CC2              mov R12,R2
 00AB                    .dbline 74
                       ;      if (key1!=0x7f)
 00AB  2D8C              mov R24,R12
 00AC  378F              cpi R24,127
 00AD  F409              brne X2
 00AE  C058              rjmp L14
 00AF                  X2:
 00AF                    .dbline 75
                       ;         {
 00AF                  L16:
 00AF                    .dbline 77
                       ;          do 
                       ;            {
 00AF                    .dbline 78
                       ;             key2=scan_key();//检查按键释放
 00AF  D125              rcall _scan_key
 00B0  2E20              mov R2,R16
 00B1  2E31              mov R3,R17
 00B2  2CE2              mov R14,R2
 00B3                    .dbline 79
                       ;             display();
 00B3  DF8B              rcall _display
 00B4                    .dbline 80
                       ;             }
 00B4                  L17:
 00B4                    .dbline 81
                       ;          while(key1==key2);
 00B4  14CE              cp R12,R14
 00B5  F3C9              breq L16
 00B6                    .dbline 82
                       ;          if (key1>=0x80)
 00B6  2D8C              mov R24,R12
 00B7  3880              cpi R24,128
 00B8  F088              brlo L19
 00B9                    .dbline 83
                       ;             {
 00B9                    .dbline 84
                       ;              if (flag!=0x00)//SHIFT键切换数据和地址修改
 00B9  20AA              tst R10
 00BA  F049              breq L21
 00BB                    .dbline 85
                       ;                  { 
 00BB                    .dbline 86
                       ;                    Write24c02(&at24_data,at24_add,1);
 00BB  E081              ldi R24,1
 00BC  8388              std y+0,R24
 00BD  91200067          lds R18,_at24_add
 00BF  E606              ldi R16,<_at24_data
 00C0  E010              ldi R17,>_at24_data
 00C1  D080              rcall _Write24c02
 00C2                    .dbline 87
                       ;                    flag=0x00;
 00C2  24AA              clr R10
 00C3                    .dbline 88
                       ;                   }          
 00C3  C002              rjmp L22
 00C4                  L21:
 00C4                    .dbline 89
                       ;              else flag=0x80;
 00C4  E880              ldi R24,128
 00C5  2EA8              mov R10,R24
 00C6                  L22:
 00C6                    .dbline 90
                       ;              ledbuff[5]=0x00^flag;
 00C6  92A00065          sts _ledbuff+5,R10
 00C8                    .dbline 91
                       ;              index=0;
 00C8  2766              clr R22
 00C9                    .dbline 92
                       ;              }
 00C9  C03D              rjmp L20
 00CA                  L19:
 00CA                    .dbline 94
                       ;          else
                       ;             {
 00CA                    .dbline 95
                       ;              switch (index)
 00CA  2F46              mov R20,R22
 00CB  2755              clr R21
 00CC  3040              cpi R20,0
 00CD  0745              cpc R20,R21
 00CE  F029              breq L27
 00CF  3041              cpi R20,1
 00D0  E0E0              ldi R30,0
 00D1  075E              cpc R21,R30
 00D2  F0E1              breq L30
 00D3  C033              rjmp L24
 00D4                  X0:
 00D4                    .dbline 96
                       ;                {
 00D4                  L27:
 00D4                    .dbline 97
                       ;                 case 0:{if (flag==0x00)
 00D4                    .dbline 97
 00D4  20AA              tst R10
 00D5  F461              brne L28
 00D6                    .dbline 98
                       ;                            {key2=at24_add&0x0f;
 00D6                    .dbline 98
 00D6  91800067          lds R24,_at24_add
 00D8  708F              andi R24,15
 00D9  2EE8              mov R14,R24
 00DA                    .dbline 99
                       ;                             at24_add=key2|(key1<<4);
 00DA  2D8C              mov R24,R12
 00DB  708F              andi R24,#0x0F
 00DC  9582              swap R24
 00DD  2C2E              mov R2,R14
 00DE  2A28              or R2,R24
 00DF  92200067          sts _at24_add,R2
 00E1                    .dbline 100
                       ;                             }
 00E1  C00B              rjmp L29
 00E2                  L28:
 00E2                    .dbline 102
                       ;                         else
                       ;                            {key2=at24_data&0x0f;
 00E2                    .dbline 102
 00E2  91800066          lds R24,_at24_data
 00E4  708F              andi R24,15
 00E5  2EE8              mov R14,R24
 00E6                    .dbline 103
                       ;                             at24_data=key2|(key1<<4);
 00E6  2D8C              mov R24,R12
 00E7  708F              andi R24,#0x0F
 00E8  9582              swap R24
 00E9  2C2E              mov R2,R14
 00EA  2A28              or R2,R24
 00EB  92200066          sts _at24_data,R2
 00ED                    .dbline 104
                       ;                             }
 00ED                  L29:
 00ED                    .dbline 105
                       ;                         index=01;                           
 00ED  E061              ldi R22,1
 00EE                    .dbline 106
                       ;                         break;       
 00EE  C018              rjmp L25
 00EF                  L30:
 00EF                    .dbline 108
                       ;                        }
                       ;                 case 1:{if (flag==0x00)
 00EF                    .dbline 108
 00EF  20AA              tst R10
 00F0  F459              brne L31
 00F1                    .dbline 109
                       ;                            {key2=at24_add&0xf0;
 00F1                    .dbline 109
 00F1  91800067          lds R24,_at24_add
 00F3  7F80              andi R24,240
 00F4  2EE8              mov R14,R24
 00F5                    .dbline 110
                       ;                             at24_add=key2|(key1&0x0f);
 00F5  2D8C              mov R24,R12
 00F6  708F              andi R24,15
 00F7  2C2E              mov R2,R14
 00F8  2A28              or R2,R24
 00F9  92200067          sts _at24_add,R2
 00FB                    .dbline 111
                       ;                             }
 00FB  C00A              rjmp L32
 00FC                  L31:
 00FC                    .dbline 113
                       ;                         else
                       ;                            {key2=at24_data&0xf0;
 00FC                    .dbline 113
 00FC  91800066          lds R24,_at24_data
 00FE  7F80              andi R24,240
 00FF  2EE8              mov R14,R24
 0100                    .dbline 114
                       ;                             at24_data=key2|(key1&0x0f);
 0100  2D8C              mov R24,R12
 0101  708F              andi R24,15
 0102  2C2E              mov R2,R14
 0103  2A28              or R2,R24
 0104  92200066          sts _at24_data,R2
 0106                    .dbline 115
                       ;                             }
 0106                  L32:
 0106                    .dbline 116
                       ;                         index=00;   
 0106  2766              clr R22
 0107                    .dbline 117
                       ;                         break;  
 0107                  L24:
 0107                  L25:
 0107                    .dbline 120
                       ;                        }
                       ;                }                
                       ;             }   
 0107                  L20:
 0107                    .dbline 121
                       ;          }                                    
 0107                  L14:
 0107                    .dbline 122
                       ;      if (flag==0x00)
 0107  20AA              tst R10
 0108  F439              brne L33
 0109                    .dbline 123
                       ;      Read24c02(&at24_data,at24_add,1);
 0109  E081              ldi R24,1
 010A  8388              std y+0,R24
 010B  91200067          lds R18,_at24_add
 010D  E606              ldi R16,<_at24_data
 010E  E010              ldi R17,>_at24_data
 010F  D06D              rcall _Read24c02
 0110                  L33:
 0110                    .dbline 124
 0110  DF2E              rcall _display
 0111                    .dbline 125
 0111                  L12:
 0111                    .dbline 71
 0111  CF95              rjmp L11
 0112                  X1:
 0112                    .dbline 126}
                       ;      display();   
                       ;   }
                       ; }
 0112                  L10:
 0112  9621              adiw R28,1
 0113  9508              ret
 0114                    .dbsym r index 22 c
 0114                    .dbsym r flag 10 c
 0114                    .dbsym r key1 12 c
 0114                    .dbsym r key2 14 c
                         .area bss(ram, con, rel)
--- 0000                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0033                  _at24_data::
 0033                    .blkb 1
 0033                    .dbsym s at24_data _at24_data c
 0033                  _at24_add::
 0033                    .blkb 1
 0034                    .dbsym s at24_add _at24_add c

⌨️ 快捷键说明

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