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

📄 at24c02.lst

📁 I2C AVR单片机使用I2C总线的例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
                         .module AT24C02.c
                         .area code(ram, con, rel)
                         .area lit(rom, con, rel)
 000D                  _tabel::
 000D  063F              .byte 63,6
 000E  4F5B              .byte 91,'O
 000F  6D66              .byte 'f,'m
 0010  077D              .byte 125,7
 0011  6F7F              .byte 127,'o
 0012  7C77              .byte 'w,124
 0013  5E39              .byte 57,94
 0014  7179              .byte 'y,'q
 0015                    .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0015                    .dbsym s tabel _tabel Ac[16:16]
                         .area data(ram, con, rel)
--- 0000                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0030                  _ledbuff::
 0030                    .blkb 2
                         .area idata
--- 0000 3F3F              .byte 63,63
                         .area data(ram, con, rel)
--- 0001                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
--- 0001                   .blkb 2
                         .area idata
--- 0001 3F3F              .byte 63,63
                         .area data(ram, con, rel)
--- 0002                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
--- 0002                   .blkb 2
                         .area idata
--- 0002 0000              .byte 0,0
                         .area data(ram, con, rel)
--- 0003                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
--- 0003                   .dbsym s ledbuff _ledbuff Ac[6:6]
                         .area text(rom, con, rel)
--- 0000                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
--- 0000                   .dbfunc s port_init _port_init fI
                         .even
 0038                  _port_init::
 0038                    .dbline 22{
                       ; /**********************************************
                       ;              http://www.sl.com.cn
                       ;       双龙电子公司----I2C总线演示程序(ICCAVR)
                       ;                  作者:詹卫前
                       ;           1、以访问AT24C02为例
                       ;           2、SDA :PORTA.0
                       ;           3、SCL : PORTA.1
                       ; **********************************************/
                       ; #include <io8515.h>
                       ; #include <slavr.h>
                       ;           /*   七段译码字形表     */
                       ; #pragma data:code                 
                       ; const unsigned char tabel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
                       ; #pragma data:data
                       ;           /*     显示缓冲区       */
                       ; unsigned char ledbuff[]={0x3f,0x3f,0x3f,0x3f,0x00,0x00};
                       ; unsigned char at24_add,at24_data;
                       ; /******************************************
                       ;                端口初始化
                       ; *******************************************/
                       ; void port_init(void)
                       ;  {
 0038                    .dbline 23
                       ;   DDRD=0x3f;
 0038  E38F              ldi R24,63
 0039  BB81              out 0x11,R24
 003A                    .dbline 24
                       ;   DDRB=0xff;
 003A  EF8F              ldi R24,255
 003B  BB87              out 0x17,R24
 003C                    .dbline 25
                       ;   PORTD=0xff;
 003C  BB82              out 0x12,R24
 003D                    .dbline 26
                       ;   PORTB=0xff;
 003D  BB88              out 0x18,R24
 003E                    .dbline 27}
                       ;  }
 003E                  L1:
 003E  9508              ret
 003F                    .dbfunc s display _display fI
                       ;              i -> R20
                         .even
 003F                  _display::
 003F  D22C              rcall push_gset1
 0040                    .dbline 32{
                       ; /******************************************
                       ;           六路动态扫描显示电路
                       ; *******************************************/
                       ; void display(void)
                       ; {
 0040                    .dbline 34
                       ;  unsigned char i;
                       ;   i=at24_data%16;
 0040  E110              ldi R17,16
 0041  91000066          lds R16,_at24_data
 0043  D213              rcall mod8u
 0044  2F40              mov R20,R16
 0045                    .dbline 35
                       ;   ledbuff[0]=tabel[i];
 0045  E18A              ldi R24,<_tabel
 0046  E090              ldi R25,>_tabel
 0047  2E24              mov R2,R20
 0048  2433              clr R3
 0049  0E28              add R2,R24
 004A  1E39              adc R3,R25
 004B  2DE2              mov R30,R2
 004C  2DF3              mov R31,R3
 004D  95C8              lpm
 004E  92000060          sts _ledbuff,R0
 0050                    .dbline 36
                       ;   i=at24_data/16;
 0050  E110              ldi R17,16
 0051  91000066          lds R16,_at24_data
 0053  D205              rcall div8u
 0054  2F40              mov R20,R16
 0055                    .dbline 37
                       ;   ledbuff[1]=tabel[i];
 0055  E18A              ldi R24,<_tabel
 0056  E090              ldi R25,>_tabel
 0057  2E24              mov R2,R20
 0058  2433              clr R3
 0059  0E28              add R2,R24
 005A  1E39              adc R3,R25
 005B  2DE2              mov R30,R2
 005C  2DF3              mov R31,R3
 005D  95C8              lpm
 005E  92000061          sts _ledbuff+1,R0
 0060                    .dbline 38
                       ;   i=at24_add%16;
 0060  E110              ldi R17,16
 0061  91000067          lds R16,_at24_add
 0063  D1F3              rcall mod8u
 0064  2F40              mov R20,R16
 0065                    .dbline 39
                       ;   ledbuff[2]=tabel[i];
 0065  E18A              ldi R24,<_tabel
 0066  E090              ldi R25,>_tabel
 0067  2E24              mov R2,R20
 0068  2433              clr R3
 0069  0E28              add R2,R24
 006A  1E39              adc R3,R25
 006B  2DE2              mov R30,R2
 006C  2DF3              mov R31,R3
 006D  95C8              lpm
 006E  92000062          sts _ledbuff+2,R0
 0070                    .dbline 40
                       ;   i=at24_add/16;
 0070  E110              ldi R17,16
 0071  91000067          lds R16,_at24_add
 0073  D1E5              rcall div8u
 0074  2F40              mov R20,R16
 0075                    .dbline 41
                       ;   ledbuff[3]=tabel[i];
 0075  E18A              ldi R24,<_tabel
 0076  E090              ldi R25,>_tabel
 0077  2E24              mov R2,R20
 0078  2433              clr R3
 0079  0E28              add R2,R24
 007A  1E39              adc R3,R25
 007B  2DE2              mov R30,R2
 007C  2DF3              mov R31,R3
 007D  95C8              lpm
 007E  92000063          sts _ledbuff+3,R0
 0080                    .dbline 42
                       ;  for (i=0;i<6;i++)
 0080  2744              clr R20
 0081  C016              rjmp L9
 0082                  L6:
 0082                    .dbline 43
 0082                    .dbline 44
 0082  E680              ldi R24,<_ledbuff
 0083  E090              ldi R25,>_ledbuff
 0084  2FE4              mov R30,R20
 0085  27FF              clr R31
 0086  0FE8              add R30,R24
 0087  1FF9              adc R31,R25
 0088  8020              ldd R2,z+0
 0089  BA28              out 0x18,R2
 008A                    .dbline 45
 008A  E001              ldi R16,1
 008B  2F14              mov R17,R20
 008C  D205              rcall lsl8
 008D  2E20              mov R2,R16
 008E  9420              com R2
 008F  BA22              out 0x12,R2
 0090                    .dbline 46
 0090  D12C              rcall _delay_1ms
 0091                    .dbline 47
 0091  E001              ldi R16,1
 0092  2F14              mov R17,R20
 0093  D1FE              rcall lsl8
 0094  B222              in R2,0x12
 0095  2A20              or R2,R16
 0096  BA22              out 0x12,R2
 0097                    .dbline 48
 0097                  L7:
 0097                    .dbline 42
 0097  9543              inc R20
 0098                  L9:
 0098                    .dbline 42
 0098  3046              cpi R20,6
 0099  F340              brlo L6
 009A                    .dbline 49}
                       ;   {
                       ;    PORTB=ledbuff[i];//将显示缓冲区数据送PORTB口
                       ;    PORTD=~(1<<i);   //开始显示
                       ;    delay_1ms();     //每一位显示保持一定时间
                       ;    PORTD|=(1<<i);   //关闭显示
                       ;   }
                       ; }
 009A                  L2:
 009A  D1D4              rcall pop_gset1
 009B  9508              ret
 009C                    .dbsym r i 20 c
 009C                    .dbfunc s main _main fI
                       ;          index -> R22
                       ;           flag -> R10
                       ;           key1 -> R12
                       ;           key2 -> R14
                         .even
 009C                  _main::
 009C  9721              sbiw R28,1
 009D                    .dbline 62{
                       ; /******************************************
                       ;     主程序功能:演示了读写AT24C02的过程
                       ;     说明:1、键盘上0~F键用于输入地址或数据,
                       ;              SHIFT键用于切换状态
                       ;           2、上电复位后,按数字键只可以修改地
                       ;              址,程序自动显示AT24C02单元内容。
                       ;           3、按一次SHIFT键,最高位LED小数点亮
                       ;              此时可以修改数字,再按一次SHIFT键
                       ;              程序将修改后的数字写入AT24C02,然
                       ;              后回到上电复位后的状态     
                       ; *******************************************/
                       ; void main(void)
                       ; {
 009D                    .dbline 65
                       ;  unsigned char key1,key2;
                       ;  unsigned char index,flag;
                       ;  MCUCR=0;
 009D  2422              clr R2
 009E  BE25              out 0x35,R2
 009F                    .dbline 66
                       ;  at24_add=0;
 009F  92200067          sts _at24_add,R2
 00A1                    .dbline 67
                       ;  at24_data=0;
 00A1  92200066          sts _at24_data,R2
 00A3                    .dbline 68
                       ;  index=0;
 00A3  2766              clr R22

⌨️ 快捷键说明

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