📄 ac15-3.lis
字号:
0192 ; Wait();
0192 26B6 in R2,0x36
0194 27FE sbrs R2,7
0196 FDCF rjmp L54
0198 .dbline 146
0198 .dbline 146
0198 .dbline 147
0198 ; if(TestAck()!=START) return 1;
0198 81B1 in R24,0x1
019A 887F andi R24,248
019C 8830 cpi R24,8
019E 11F0 breq L57
01A0 .dbline 147
01A0 01E0 ldi R16,1
01A2 2BC0 xjmp L53
01A4 L57:
01A4 .dbline 148
01A4 ; Write8Bit(wr_device_add);
01A4 .dbline 148
01A4 80EA ldi R24,160
01A6 83B9 out 0x3,R24
01A8 .dbline 148
01A8 84E8 ldi R24,132
01AA 86BF out 0x36,R24
01AC .dbline 148
01AC .dbline 148
01AC .dbline 149
01AC L59:
01AC .dbline 149
01AC L60:
01AC .dbline 149
01AC ; Wait();
01AC 26B6 in R2,0x36
01AE 27FE sbrs R2,7
01B0 FDCF rjmp L59
01B2 .dbline 149
01B2 .dbline 149
01B2 .dbline 150
01B2 ; if(TestAck()!=MT_SLA_ACK) return 1;
01B2 81B1 in R24,0x1
01B4 887F andi R24,248
01B6 8831 cpi R24,24
01B8 11F0 breq L62
01BA .dbline 150
01BA 01E0 ldi R16,1
01BC 1EC0 xjmp L53
01BE L62:
01BE .dbline 151
01BE ; Write8Bit(RomAddress);
01BE .dbline 151
01BE 63B9 out 0x3,R22
01C0 .dbline 151
01C0 84E8 ldi R24,132
01C2 86BF out 0x36,R24
01C4 .dbline 151
01C4 .dbline 151
01C4 .dbline 152
01C4 L64:
01C4 .dbline 152
01C4 L65:
01C4 .dbline 152
01C4 ; Wait();
01C4 26B6 in R2,0x36
01C6 27FE sbrs R2,7
01C8 FDCF rjmp L64
01CA .dbline 152
01CA .dbline 152
01CA .dbline 153
01CA ; if(TestAck()!=MT_DATA_ACK) return 1;
01CA 81B1 in R24,0x1
01CC 887F andi R24,248
01CE 8832 cpi R24,40
01D0 11F0 breq L67
01D2 .dbline 153
01D2 01E0 ldi R16,1
01D4 12C0 xjmp L53
01D6 L67:
01D6 .dbline 154
01D6 ; Write8Bit(Wdata);
01D6 .dbline 154
01D6 43B9 out 0x3,R20
01D8 .dbline 154
01D8 84E8 ldi R24,132
01DA 86BF out 0x36,R24
01DC .dbline 154
01DC .dbline 154
01DC .dbline 155
01DC L69:
01DC .dbline 155
01DC L70:
01DC .dbline 155
01DC ; Wait();
01DC 26B6 in R2,0x36
01DE 27FE sbrs R2,7
01E0 FDCF rjmp L69
01E2 .dbline 155
01E2 .dbline 155
01E2 .dbline 156
01E2 ; if(TestAck()!=MT_DATA_ACK) return 1;
01E2 81B1 in R24,0x1
01E4 887F andi R24,248
01E6 8832 cpi R24,40
01E8 11F0 breq L72
01EA .dbline 156
01EA 01E0 ldi R16,1
01EC 06C0 xjmp L53
01EE L72:
01EE .dbline 157
01EE ; Stop();
01EE 84E9 ldi R24,148
01F0 86BF out 0x36,R24
01F2 .dbline 158
01F2 ; delay_ms(10);
01F2 0AE0 ldi R16,10
01F4 10E0 ldi R17,0
01F6 17DF xcall _delay_ms
01F8 .dbline 159
01F8 ; return 0;
01F8 0027 clr R16
01FA .dbline -2
01FA L53:
01FA 0E940000 xcall pop_gset2
01FE .dbline 0 ; func end
01FE 0895 ret
0200 .dbsym r Wdata 20 c
0200 .dbsym r RomAddress 22 c
0200 .dbend
0200 .dbfunc e twi_init _twi_init fV
.even
0200 _twi_init::
0200 .dbline -1
0200 .dbline 164
0200 ; }
0200 ;
0200 ;
0200 ; void twi_init(void)
0200 ; {
0200 .dbline 165
0200 ; TWCR= 0X00; //disable twi
0200 2224 clr R2
0202 26BE out 0x36,R2
0204 .dbline 166
0204 ; TWBR= 0x12; //set bit rate
0204 82E1 ldi R24,18
0206 80B9 out 0x0,R24
0208 .dbline 167
0208 ; TWSR= 0x01; //set prescale
0208 81E0 ldi R24,1
020A 81B9 out 0x1,R24
020C .dbline 168
020C ; TWCR= 0x04; //enable twi
020C 84E0 ldi R24,4
020E 86BF out 0x36,R24
0210 .dbline -2
0210 L74:
0210 .dbline 0 ; func end
0210 0895 ret
0212 .dbend
0212 .dbfunc e main _main fV
0212 ; i -> <dead>
0212 ; key_val -> <dead>
0212 ; wr_val -> R20
0212 ; j -> R20
0212 ; rd_val -> R22
0212 ; k -> R10,R11
.even
0212 _main::
0212 .dbline -1
0212 .dbline 175
0212 ;
0212 ;
0212 ;
0212 ; }
0212 ; //******************************************
0212 ; void main(void)
0212 ; {
0212 .dbline 176
0212 ; uchar key_val,wr_val=0,rd_val,i,j;
0212 4427 clr R20
0214 .dbline 178
0214 ; uint k;
0214 ; port_init();
0214 61DF xcall _port_init
0216 .dbline 179
0216 ; CS_OFF();
0216 C39A sbi 0x18,3
0218 .dbline 180
0218 ; delay_ms(10);
0218 0AE0 ldi R16,10
021A 10E0 ldi R17,0
021C 04DF xcall _delay_ms
021E .dbline 181
021E ; delay_ms(10);
021E 0AE0 ldi R16,10
0220 10E0 ldi R17,0
0222 01DF xcall _delay_ms
0224 16C0 xjmp L77
0226 L76:
0226 .dbline 184
0226 ; //twi_init();
0226 ; while(1)
0226 ; {
0226 .dbline 185
0226 ; rd_val=12;
0226 6CE0 ldi R22,12
0228 .dbline 196
0228 ;
0228 ; //for(i=1; i<255;i++)
0228 ; //{
0228 ; // i2c_Write(i,i);
0228 ; // _delay_us(20);
0228 ;
0228 ; //adc_to_disbuffer1(16);
0228 ;
0228 ; //
0228 ; //}
0228 ; for( j=1; j<255;j++)
0228 41E0 ldi R20,1
022A 11C0 xjmp L82
022C L79:
022C .dbline 197
022C ; {
022C .dbline 198
022C ; for( k=1; k<1025;k++)
022C 81E0 ldi R24,1
022E 90E0 ldi R25,0
0230 5C01 movw R10,R24
0232 07C0 xjmp L86
0234 L83:
0234 .dbline 199
0234 .dbline 200
0234 042F mov R16,R20
0236 57DF xcall _i2c_Read
0238 602F mov R22,R16
023A .dbline 201
023A 14DF xcall _display
023C .dbline 204
023C L84:
023C .dbline 198
023C C501 movw R24,R10
023E 0196 adiw R24,1
0240 5C01 movw R10,R24
0242 L86:
0242 .dbline 198
0242 C501 movw R24,R10
0244 8130 cpi R24,1
0246 E4E0 ldi R30,4
0248 9E07 cpc R25,R30
024A A0F3 brlo L83
024C .dbline 205
024C L80:
024C .dbline 196
024C 4395 inc R20
024E L82:
024E .dbline 196
024E 4F3F cpi R20,255
0250 68F3 brlo L79
0252 .dbline 206
0252 L77:
0252 .dbline 183
0252 E9CF xjmp L76
0254 X1:
0254 .dbline -2
0254 L75:
0254 .dbline 0 ; func end
0254 0895 ret
0256 .dbsym l i 1 c
0256 .dbsym l key_val 1 c
0256 .dbsym r wr_val 20 c
0256 .dbsym r j 20 c
0256 .dbsym r rd_val 22 c
0256 .dbsym r k 10 i
0256 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\programe\AVR实验\I2C\TWI-at2401\ac15-3.c
0000 _posit::
0000 .blkb 1
0001 .dbsym e posit _posit c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -