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

📄 eeprom.lis

📁 使用ICCAVR编写的AT24C16的读写函数
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module eeprom.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\icc\eeprom/lcd_init.h
 0000                   .dbfunc e delay _delay fV
 0000           ;              n -> R16,R17
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 40
 0000           ; //ICC-AVR application builder : 2008-10-8 下午 04:03:04
 0000           ; // Target : M128
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; #include "lcd_init.h"
 0000           ; #include "eeprom_init.h"
 0000           ; #include "DS1302.h"
 0000           ; //iccavr
 0000           ; //extern unsigned char twi_write(unsigned char addr, unsigned char dd);
 0000           ; //extern unsigned char twi_read(unsigned char addr, unsigned char *dd);
 0000           ; /*延时函数*/
 0000           ; void delay_ms(unsigned char i) {
 0000           ;  unsigned char a, b;
 0000           ;  for (a = 1; a < i; a++) 
 0000           ;  {
 0000           ;   for (b = 1; b; b++) 
 0000           ;         {
 0000           ;          ;
 0000           ;         }
 0000           ;   }
 0000           ; }
 0000           ; void main(void)
 0000           ; {
 0000           ; 
 0000           ;  unsigned char temp,i;
 0000           ;  unsigned char send_flag=0,time_read=6;
 0000           ;  PORTA = 0xFF;    /*打开上拉*/
 0000           ;  DDRA = 0x00;    /*方向输入*/
 0000           ;  PORTB = 0xF0;    /*电平设置*/
 0000           ;  DDRB = 0xFF;    /*方向输出*/
 0000           ;  PORTC = 0xFF;
 0000           ;  DDRC = 0x00;
 0000           ;  PORTD = 0xFF;
 0000           ;  DDRD = 0x00;
 0000           ;  ds1302_init();//ds1302初始化
 0000           ;  ds1302_write_time();
 0000           ;  disp_init();
 0000           ;  for (i=0;i<20;i++)            //写入20个数据
 0000           L2:
 0000                   .dbline 41
 0000           L3:
 0000                   .dbline 41
 0000           ;      {
 0000 1801              movw R2,R16
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006 2220              tst R2
 0008 D9F7              brne L2
 000A 3320              tst R3
 000C C9F7              brne L2
 000E           X0:
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r n 16 i
 0010                   .dbend
 0010                   .dbfunc e chk_busy _chk_busy fV
                        .even
 0010           _chk_busy::
 0010                   .dbline -1
 0010                   .dbline 44
 0010           ;         twi_write((0x100+i),i);
 0010           ;         delay(0xfff);
 0010           ;        }
 0010                   .dbline 45
 0010           ; 
 0010 8FEF              ldi R24,255
 0012 8BBB              out 0x1b,R24
 0014                   .dbline 46
 0014           ;  //twi_read(0x08, &temp);
 0014 80916500          lds R24,101
 0018 8E7F              andi R24,254
 001A 80936500          sts 101,R24
 001E                   .dbline 47
 001E           ;  //PORTB = ~temp;
 001E 80916500          lds R24,101
 0022 8260              ori R24,2
 0024 80936500          sts 101,R24
 0028                   .dbline 49
 0028           ;  //temp ++;
 0028           ;  //temp=0;
 0028 2224              clr R2
 002A 2ABA              out 0x1a,R2
 002C                   .dbline 51
 002C           ;  //twi_write(0x08, temp);
 002C           ;  
 002C 80916500          lds R24,101
 0030 8460              ori R24,4
 0032 80936500          sts 101,R24
 0036           L6:
 0036                   .dbline 52
 0036           L7:
 0036                   .dbline 52
 0036           ;  
 0036 CF99              sbic 0x19,7
 0038 FECF              rjmp L6
 003A                   .dbline 53
 003A           ;  delay(0xffff);
 003A 80916500          lds R24,101
 003E 8B7F              andi R24,251
 0040 80936500          sts 101,R24
 0044                   .dbline 54
 0044           ; disp_word(0x80,"任务:EEPROM"); 
 0044 8FEF              ldi R24,255
 0046 8ABB              out 0x1a,R24
 0048                   .dbline -2
 0048           L5:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbend
 004A                   .dbfunc e LCD_write_code _LCD_write_code fV
 004A           ;           code -> R20
                        .even
 004A           _LCD_write_code::
 004A 0E940000          xcall push_gset1
 004E 402F              mov R20,R16
 0050                   .dbline -1
 0050                   .dbline 58
 0050           ; disp_word(0x90,"2008年10月09日");
 0050           ; disp_word(0x88,"AT24C16");
 0050           ; i=0;
 0050           ; 
 0050                   .dbline 59
 0050           ; while (1) 
 0050 DFDF              xcall _chk_busy
 0052                   .dbline 60
 0052           ;     {
 0052 80916500          lds R24,101
 0056 8E7F              andi R24,254
 0058 80936500          sts 101,R24
 005C                   .dbline 61
 005C           ;     ds1302_read_time();
 005C 80916500          lds R24,101
 0060 8D7F              andi R24,253
 0062 80936500          sts 101,R24
 0066                   .dbline 62
 0066           ;       disp_number16(0x8d,time_buf[6]);
 0066 4BBB              out 0x1b,R20
 0068                   .dbline 63
 0068           ;       if(time_buf[6]==0)
 0068 80916500          lds R24,101
 006C 8460              ori R24,4
 006E 80936500          sts 101,R24
 0072                   .dbline 64
 0072           ;          {
 0072 04E6              ldi R16,100
 0074 10E0              ldi R17,0
 0076 C4DF              xcall _delay
 0078                   .dbline 65
 0078           ;           send_flag=1;
 0078 80916500          lds R24,101
 007C 8B7F              andi R24,251
 007E 80936500          sts 101,R24
 0082                   .dbline -2
 0082           L9:
 0082 0E940000          xcall pop_gset1
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbsym r code 20 c
 0088                   .dbend
 0088                   .dbfunc e LCD_write_data _LCD_write_data fV
 0088           ;           data -> R20
                        .even
 0088           _LCD_write_data::
 0088 0E940000          xcall push_gset1
 008C 402F              mov R20,R16
 008E                   .dbline -1
 008E                   .dbline 69
 008E           ;               if(time_buf[5]==time_read)
 008E           ;               send_flag=0;
 008E           ;          }
 008E           ;          if(send_flag==1)
 008E                   .dbline 70
 008E           ;          {
 008E C0DF              xcall _chk_busy
 0090                   .dbline 71
 0090           ;           twi_read((0x100+i),&temp);
 0090 80916500          lds R24,101
 0094 8160              ori R24,1
 0096 80936500          sts 101,R24
 009A                   .dbline 72
 009A           ;               i++;
 009A 80916500          lds R24,101
 009E 8D7F              andi R24,253
 00A0 80936500          sts 101,R24
 00A4                   .dbline 73
 00A4           ;           send_flag=0;
 00A4 4BBB              out 0x1b,R20
 00A6                   .dbline 74
 00A6           ;               time_read=time_buf[5];
 00A6 80916500          lds R24,101
 00AA 8460              ori R24,4
 00AC 80936500          sts 101,R24
 00B0                   .dbline 75
 00B0           ;               disp_number10(0x98,temp);
 00B0 04E6              ldi R16,100
 00B2 10E0              ldi R17,0
 00B4 A5DF              xcall _delay
 00B6                   .dbline 76
 00B6           ;          }
 00B6 80916500          lds R24,101
 00BA 8B7F              andi R24,251
 00BC 80936500          sts 101,R24
 00C0                   .dbline -2
 00C0           L10:
 00C0 0E940000          xcall pop_gset1
 00C4                   .dbline 0 ; func end
 00C4 0895              ret
 00C6                   .dbsym r data 20 c
 00C6                   .dbend
 00C6                   .dbfunc e disp_char _disp_char fV
 00C6           ;           asii -> R20
 00C6           ;       position -> R22
                        .even
 00C6           _disp_char::
 00C6 0E940000          xcall push_gset2
 00CA 422F              mov R20,R18
 00CC 602F              mov R22,R16
 00CE                   .dbline -1
 00CE                   .dbline 80
 00CE           ;       
 00CE           ;     }
 00CE           ; }
 00CE           ; }
 00CE                   .dbline 81
 00CE           ; }
 00CE 062F              mov R16,R22
 00D0 BCDF              xcall _LCD_write_code
 00D2                   .dbline 82
 00D2           ; }
 00D2 042F              mov R16,R20
 00D4 D9DF              xcall _LCD_write_data
 00D6                   .dbline -2
 00D6           L11:
 00D6 0E940000          xcall pop_gset2
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbsym r asii 20 c
 00DC                   .dbsym r position 22 c
 00DC                   .dbend
 00DC                   .dbfunc e disp_word _disp_word fV
 00DC           ;           word -> R20,R21
 00DC           ;       position -> R22
                        .even
 00DC           _disp_word::
 00DC 0E940000          xcall push_gset2
 00E0 A901              movw R20,R18
 00E2 602F              mov R22,R16
 00E4                   .dbline -1
 00E4                   .dbline 97
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4           ; }
 00E4                   .dbline 98
 00E4           ; }
 00E4 062F              mov R16,R22
 00E6 B1DF              xcall _LCD_write_code
 00E8 05C0              xjmp L14
 00EA           L13:
 00EA                   .dbline 100
 00EA                   .dbline 101
 00EA FA01              movw R30,R20
 00EC 0081              ldd R16,z+0
 00EE CCDF              xcall _LCD_write_data
 00F0                   .dbline 102
 00F0 4F5F              subi R20,255  ; offset = 1
 00F2 5F4F              sbci R21,255
 00F4                   .dbline 103
 00F4           L14:
 00F4                   .dbline 99
 00F4           ; }
 00F4 FA01              movw R30,R20
 00F6 2080              ldd R2,z+0
 00F8 2220              tst R2
 00FA B9F7              brne L13
 00FC                   .dbline -2
 00FC           L12:
 00FC 0E940000          xcall pop_gset2
 0100                   .dbline 0 ; func end
 0100 0895              ret
 0102                   .dbsym r word 20 pc
 0102                   .dbsym r position 22 c
 0102                   .dbend
 0102                   .dbfunc e disp_number10 _disp_number10 fV
 0102           ;          num_l -> R22
 0102           ;          num_h -> R10
 0102           ;            num -> R20
 0102           ;       position -> R22
                        .even
 0102           _disp_number10::
 0102 0E940000          xcall push_gset3
 0106 422F              mov R20,R18
 0108 602F              mov R22,R16
 010A                   .dbline -1
 010A                   .dbline 111
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A           ; }
 010A                   .dbline 113
 010A           ; }
 010A           ; }
 010A 062F              mov R16,R22
 010C 9EDF              xcall _LCD_write_code
 010E                   .dbline 114
 010E           ; }
 010E 4A30              cpi R20,10
 0110 88F0              brlo L17
 0112                   .dbline 115
 0112           ; }
 0112                   .dbline 116
 0112           ; }
 0112 1AE0              ldi R17,10
 0114 042F              mov R16,R20
 0116 0E940000          xcall div8u
 011A A02E              mov R10,R16
 011C                   .dbline 117
 011C           ; }
 011C 1AE0              ldi R17,10
 011E 042F              mov R16,R20
 0120 0E940000          xcall mod8u
 0124 602F              mov R22,R16
 0126                   .dbline 118
 0126           ; }
 0126 0A2D              mov R16,R10
 0128 005D              subi R16,208    ; addi 48
 012A AEDF              xcall _LCD_write_data

⌨️ 快捷键说明

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