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

📄 ac15-3.lis

📁 AVR的MEGA16通过TWI接口读写AT24C02
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00D0 E0F2              brlo L17
 00D2                   .dbline -2
 00D2           L15:
 00D2 0E940000          xcall pop_gset1
 00D6                   .dbline 0 ; func end
 00D6 0895              ret
 00D8                   .dbsym r adc1 20 c
 00D8                   .dbend
 00D8                   .dbfunc e port_init _port_init fV
                        .even
 00D8           _port_init::
 00D8                   .dbline -1
 00D8                   .dbline 96
 00D8           ;   {
 00D8           ;    
 00D8           ;    PORTD = dis_7[dis_buff[posit]];
 00D8           ;    PORTB = position[posit];
 00D8           ;    
 00D8           ;   _delay_us(100);
 00D8           ;    //PORTB &= ~position[posit];
 00D8           ;   
 00D8           ;   }
 00D8           ; }
 00D8           ; 
 00D8           ; /********************端口初始化******************/
 00D8           ; void port_init(void)
 00D8           ; {
 00D8                   .dbline 100
 00D8           ;  //PORTA = 0x00;
 00D8           ;  //DDRA  = 0xFF;
 00D8           ; // PORTB = 0x00;
 00D8           ;  DDRB  = 0xFF;
 00D8 8FEF              ldi R24,255
 00DA 87BB              out 0x17,R24
 00DC                   .dbline 102
 00DC           ; // PORTC = 0x00; 
 00DC           ;  DDRC  = 0x30;
 00DC 80E3              ldi R24,48
 00DE 84BB              out 0x14,R24
 00E0                   .dbline 104
 00E0           ; // PORTD = 0xFF;
 00E0           ;  DDRD  = 0xFF;
 00E0 8FEF              ldi R24,255
 00E2 81BB              out 0x11,R24
 00E4                   .dbline -2
 00E4           L21:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend
 00E6                   .dbfunc e i2c_Read _i2c_Read fc
 00E6           ;           temp -> R20
 00E6           ;     RomAddress -> R16
                        .even
 00E6           _i2c_Read::
 00E6 0E940000          xcall push_gset1
 00EA                   .dbline -1
 00EA                   .dbline 113
 00EA           ; }
 00EA           ; 
 00EA           ; 
 00EA           ; /******************************************
 00EA           ;                I2C总线读一个字节
 00EA           ;                          如果读失败返回0
 00EA           ; *******************************************/
 00EA           ; unsigned char i2c_Read(unsigned char RomAddress) 
 00EA           ;       {
 00EA                   .dbline 115
 00EA           ;          unsigned char temp;
 00EA           ;          Start();
 00EA 84EA              ldi R24,164
 00EC 86BF              out 0x36,R24
 00EE                   .dbline 116
 00EE           L23:
 00EE                   .dbline 116
 00EE           L24:
 00EE                   .dbline 116
 00EE           ;          Wait();
 00EE 26B6              in R2,0x36
 00F0 27FE              sbrs R2,7
 00F2 FDCF              rjmp L23
 00F4                   .dbline 116
 00F4                   .dbline 116
 00F4                   .dbline 117
 00F4           ;          if (TestAck()!=START) return 0;         
 00F4 81B1              in R24,0x1
 00F6 887F              andi R24,248
 00F8 8830              cpi R24,8
 00FA 11F0              breq L26
 00FC                   .dbline 117
 00FC 0027              clr R16
 00FE 40C0              xjmp L22
 0100           L26:
 0100                   .dbline 118
 0100           ;          Write8Bit(wr_device_add);
 0100                   .dbline 118
 0100 80EA              ldi R24,160
 0102 83B9              out 0x3,R24
 0104                   .dbline 118
 0104 84E8              ldi R24,132
 0106 86BF              out 0x36,R24
 0108                   .dbline 118
 0108                   .dbline 118
 0108                   .dbline 119
 0108           L28:
 0108                   .dbline 119
 0108           L29:
 0108                   .dbline 119
 0108           ;          Wait(); 
 0108 26B6              in R2,0x36
 010A 27FE              sbrs R2,7
 010C FDCF              rjmp L28
 010E                   .dbline 119
 010E                   .dbline 119
 010E                   .dbline 120
 010E           ;          if (TestAck()!=MT_SLA_ACK) return 0;
 010E 81B1              in R24,0x1
 0110 887F              andi R24,248
 0112 8831              cpi R24,24
 0114 11F0              breq L31
 0116                   .dbline 120
 0116 0027              clr R16
 0118 33C0              xjmp L22
 011A           L31:
 011A                   .dbline 121
 011A           ;          Write8Bit(RomAddress);
 011A                   .dbline 121
 011A 03B9              out 0x3,R16
 011C                   .dbline 121
 011C 84E8              ldi R24,132
 011E 86BF              out 0x36,R24
 0120                   .dbline 121
 0120                   .dbline 121
 0120                   .dbline 122
 0120           L33:
 0120                   .dbline 122
 0120           L34:
 0120                   .dbline 122
 0120           ;          Wait();
 0120 26B6              in R2,0x36
 0122 27FE              sbrs R2,7
 0124 FDCF              rjmp L33
 0126                   .dbline 122
 0126                   .dbline 122
 0126                   .dbline 123
 0126           ;          if (TestAck()!=MT_DATA_ACK) return 0;
 0126 81B1              in R24,0x1
 0128 887F              andi R24,248
 012A 8832              cpi R24,40
 012C 11F0              breq L36
 012E                   .dbline 123
 012E 0027              clr R16
 0130 27C0              xjmp L22
 0132           L36:
 0132                   .dbline 124
 0132           ;          Start();
 0132 84EA              ldi R24,164
 0134 86BF              out 0x36,R24
 0136                   .dbline 125
 0136           L38:
 0136                   .dbline 125
 0136           L39:
 0136                   .dbline 125
 0136           ;          Wait();
 0136 26B6              in R2,0x36
 0138 27FE              sbrs R2,7
 013A FDCF              rjmp L38
 013C                   .dbline 125
 013C                   .dbline 125
 013C                   .dbline 126
 013C           ;          if (TestAck()!=RE_START)  return 0;
 013C 81B1              in R24,0x1
 013E 887F              andi R24,248
 0140 8031              cpi R24,16
 0142 11F0              breq L41
 0144                   .dbline 126
 0144 0027              clr R16
 0146 1CC0              xjmp L22
 0148           L41:
 0148                   .dbline 127
 0148           ;          Write8Bit(rd_device_add);
 0148                   .dbline 127
 0148 81EA              ldi R24,161
 014A 83B9              out 0x3,R24
 014C                   .dbline 127
 014C 84E8              ldi R24,132
 014E 86BF              out 0x36,R24
 0150                   .dbline 127
 0150                   .dbline 127
 0150                   .dbline 128
 0150           L43:
 0150                   .dbline 128
 0150           L44:
 0150                   .dbline 128
 0150           ;          Wait();
 0150 26B6              in R2,0x36
 0152 27FE              sbrs R2,7
 0154 FDCF              rjmp L43
 0156                   .dbline 128
 0156                   .dbline 128
 0156                   .dbline 129
 0156           ;          if(TestAck()!=MR_SLA_ACK)  return 0;
 0156 81B1              in R24,0x1
 0158 887F              andi R24,248
 015A 8034              cpi R24,64
 015C 11F0              breq L46
 015E                   .dbline 129
 015E 0027              clr R16
 0160 0FC0              xjmp L22
 0162           L46:
 0162                   .dbline 130
 0162           ;          Twi();
 0162 84E8              ldi R24,132
 0164 86BF              out 0x36,R24
 0166                   .dbline 131
 0166           L48:
 0166                   .dbline 131
 0166           L49:
 0166                   .dbline 131
 0166           ;          Wait();
 0166 26B6              in R2,0x36
 0168 27FE              sbrs R2,7
 016A FDCF              rjmp L48
 016C                   .dbline 131
 016C                   .dbline 131
 016C                   .dbline 132
 016C           ;          if(TestAck()!=MR_DATA_NOACK) return 0;       
 016C 81B1              in R24,0x1
 016E 887F              andi R24,248
 0170 8835              cpi R24,88
 0172 11F0              breq L51
 0174                   .dbline 132
 0174 0027              clr R16
 0176 04C0              xjmp L22
 0178           L51:
 0178                   .dbline 133
 0178           ;          temp=TWDR;
 0178 43B1              in R20,0x3
 017A                   .dbline 134
 017A           ;        Stop();
 017A 84E9              ldi R24,148
 017C 86BF              out 0x36,R24
 017E                   .dbline 135
 017E           ;          return temp;
 017E 042F              mov R16,R20
 0180                   .dbline -2
 0180           L22:
 0180 0E940000          xcall pop_gset1
 0184                   .dbline 0 ; func end
 0184 0895              ret
 0186                   .dbsym r temp 20 c
 0186                   .dbsym r RomAddress 16 c
 0186                   .dbend
 0186                   .dbfunc e i2c_Write _i2c_Write fc
 0186           ;          Wdata -> R20
 0186           ;     RomAddress -> R22
                        .even
 0186           _i2c_Write::
 0186 0E940000          xcall push_gset2
 018A 422F              mov R20,R18
 018C 602F              mov R22,R16
 018E                   .dbline -1
 018E                   .dbline 144
 018E           ;       }
 018E           ;         
 018E           ; /******************************************
 018E           ;                I2C总线写一个字节
 018E           ;                           返回0:写成功
 018E           ;                               返回非0:写失败
 018E           ; *******************************************/
 018E           ; unsigned char i2c_Write(unsigned char RomAddress,unsigned char Wdata) 
 018E           ; {
 018E                   .dbline 145
 018E           ;         Start();
 018E 84EA              ldi R24,164
 0190 86BF              out 0x36,R24
 0192                   .dbline 146
 0192           L54:
 0192                   .dbline 146
 0192           L55:
 0192                   .dbline 146

⌨️ 快捷键说明

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