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

📄 at24c02.lis

📁 I2C AVR单片机使用I2C总线的例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                         .module AT24C02.c
                         .area code(ram, con, rel)
                         .area lit(rom, con, rel)
 0000                 _tabel::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 7971              .byte 'y,'q
 0010                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0010                   .dbsym s tabel _tabel Ac[16:16]
                         .area data(ram, con, rel)
 0000                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0000                 _ledbuff::
 0000                   .blkb 2
                         .area idata
 0000 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 3F3F              .byte 63,63
                         .area data(ram, con, rel)
 0004                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0004                   .blkb 2
                         .area idata
 0004 0000              .byte 0,0
                         .area data(ram, con, rel)
 0006                   .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
 0006                   .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
 0000                 _port_init::
 0000                   .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)
                       ;  {
 0000                   .dbline 23
                       ;   DDRD=0x3f;
 0000 8FE3              ldi R24,63
 0002 81BB              out 0x11,R24
 0004                   .dbline 24
                       ;   DDRB=0xff;
 0004 8FEF              ldi R24,255
 0006 87BB              out 0x17,R24
 0008                   .dbline 25
                       ;   PORTD=0xff;
 0008 82BB              out 0x12,R24
 000A                   .dbline 26
                       ;   PORTB=0xff;
 000A 88BB              out 0x18,R24
 000C                   .dbline 27}
                       ;  }
 000C                 L1:
 000C 0895              ret
 000E                   .dbfunc s display _display fI
                       ;              i -> R20
                         .even
 000E                 _display::
 000E 00D0              rcall push_gset1
 0010                   .dbline 32{
                       ; /******************************************
                       ;           六路动态扫描显示电路
                       ; *******************************************/
                       ; void display(void)
                       ; {
 0010                   .dbline 34
                       ;  unsigned char i;
                       ;   i=at24_data%16;
 0010 10E1              ldi R17,16
 0012 00910000          lds R16,_at24_data
 0016 00D0              rcall mod8u
 0018 402F              mov R20,R16
 001A                   .dbline 35
                       ;   ledbuff[0]=tabel[i];
 001A 80E0              ldi R24,<_tabel
 001C 90E0              ldi R25,>_tabel
 001E 242E              mov R2,R20
 0020 3324              clr R3
 0022 280E              add R2,R24
 0024 391E              adc R3,R25
 0026 E22D              mov R30,R2
 0028 F32D              mov R31,R3
 002A C895              lpm
 002C 00920000          sts _ledbuff,R0
 0030                   .dbline 36
                       ;   i=at24_data/16;
 0030 10E1              ldi R17,16
 0032 00910000          lds R16,_at24_data
 0036 00D0              rcall div8u
 0038 402F              mov R20,R16
 003A                   .dbline 37
                       ;   ledbuff[1]=tabel[i];
 003A 80E0              ldi R24,<_tabel
 003C 90E0              ldi R25,>_tabel
 003E 242E              mov R2,R20
 0040 3324              clr R3
 0042 280E              add R2,R24
 0044 391E              adc R3,R25
 0046 E22D              mov R30,R2
 0048 F32D              mov R31,R3
 004A C895              lpm
 004C 00920100          sts _ledbuff+1,R0
 0050                   .dbline 38
                       ;   i=at24_add%16;
 0050 10E1              ldi R17,16
 0052 00910100          lds R16,_at24_add
 0056 00D0              rcall mod8u
 0058 402F              mov R20,R16
 005A                   .dbline 39
                       ;   ledbuff[2]=tabel[i];
 005A 80E0              ldi R24,<_tabel
 005C 90E0              ldi R25,>_tabel
 005E 242E              mov R2,R20
 0060 3324              clr R3
 0062 280E              add R2,R24
 0064 391E              adc R3,R25
 0066 E22D              mov R30,R2
 0068 F32D              mov R31,R3
 006A C895              lpm
 006C 00920200          sts _ledbuff+2,R0
 0070                   .dbline 40
                       ;   i=at24_add/16;
 0070 10E1              ldi R17,16
 0072 00910100          lds R16,_at24_add
 0076 00D0              rcall div8u
 0078 402F              mov R20,R16
 007A                   .dbline 41
                       ;   ledbuff[3]=tabel[i];
 007A 80E0              ldi R24,<_tabel
 007C 90E0              ldi R25,>_tabel
 007E 242E              mov R2,R20
 0080 3324              clr R3
 0082 280E              add R2,R24
 0084 391E              adc R3,R25
 0086 E22D              mov R30,R2
 0088 F32D              mov R31,R3
 008A C895              lpm
 008C 00920300          sts _ledbuff+3,R0
 0090                   .dbline 42
                       ;  for (i=0;i<6;i++)
 0090 4427              clr R20
 0092 16C0              rjmp L9
 0094                 L6:
 0094                   .dbline 43
 0094                   .dbline 44
 0094 80E0              ldi R24,<_ledbuff
 0096 90E0              ldi R25,>_ledbuff
 0098 E42F              mov R30,R20
 009A FF27              clr R31
 009C E80F              add R30,R24
 009E F91F              adc R31,R25
 00A0 2080              ldd R2,z+0
 00A2 28BA              out 0x18,R2
 00A4                   .dbline 45
 00A4 01E0              ldi R16,1
 00A6 142F              mov R17,R20
 00A8 00D0              rcall lsl8
 00AA 202E              mov R2,R16
 00AC 2094              com R2
 00AE 22BA              out 0x12,R2
 00B0                   .dbline 46
 00B0 00D0              rcall _delay_1ms
 00B2                   .dbline 47
 00B2 01E0              ldi R16,1
 00B4 142F              mov R17,R20
 00B6 00D0              rcall lsl8
 00B8 22B2              in R2,0x12
 00BA 202A              or R2,R16
 00BC 22BA              out 0x12,R2
 00BE                   .dbline 48
 00BE                 L7:
 00BE                   .dbline 42
 00BE 4395              inc R20
 00C0                 L9:
 00C0                   .dbline 42
 00C0 4630              cpi R20,6
 00C2 40F3              brlo L6
 00C4                   .dbline 49}
                       ;   {
                       ;    PORTB=ledbuff[i];//将显示缓冲区数据送PORTB口
                       ;    PORTD=~(1<<i);   //开始显示
                       ;    delay_1ms();     //每一位显示保持一定时间
                       ;    PORTD|=(1<<i);   //关闭显示
                       ;   }
                       ; }
 00C4                 L2:
 00C4 00D0              rcall pop_gset1
 00C6 0895              ret
 00C8                   .dbsym r i 20 c
 00C8                   .dbfunc s main _main fI
                       ;          index -> R22
                       ;           flag -> R10
                       ;           key1 -> R12
                       ;           key2 -> R14
                         .even
 00C8                 _main::
 00C8 2197              sbiw R28,1
 00CA                   .dbline 62{
                       ; /******************************************
                       ;     主程序功能:演示了读写AT24C02的过程
                       ;     说明:1、键盘上0~F键用于输入地址或数据,
                       ;              SHIFT键用于切换状态
                       ;           2、上电复位后,按数字键只可以修改地
                       ;              址,程序自动显示AT24C02单元内容。
                       ;           3、按一次SHIFT键,最高位LED小数点亮
                       ;              此时可以修改数字,再按一次SHIFT键
                       ;              程序将修改后的数字写入AT24C02,然
                       ;              后回到上电复位后的状态     
                       ; *******************************************/
                       ; void main(void)
                       ; {
 00CA                   .dbline 65
                       ;  unsigned char key1,key2;
                       ;  unsigned char index,flag;
                       ;  MCUCR=0;
 00CA 2224              clr R2
 00CC 25BE              out 0x35,R2
 00CE                   .dbline 66
                       ;  at24_add=0;
 00CE 20920100          sts _at24_add,R2
 00D2                   .dbline 67
                       ;  at24_data=0;
 00D2 20920000          sts _at24_data,R2
 00D6                   .dbline 68
                       ;  index=0;
 00D6 6627              clr R22

⌨️ 快捷键说明

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