📄 ac15-3.lis
字号:
01B0 84EA ldi R24,164
01B2 86BF out 0x36,R24
01B4 .dbline 179
01B4 L42:
01B4 .dbline 179
01B4 L43:
01B4 .dbline 179
01B4 ; Wait();
01B4 26B6 in R2,0x36
01B6 27FE sbrs R2,7
01B8 FDCF rjmp L42
01BA .dbline 179
01BA .dbline 179
01BA .dbline 180
01BA ; if (TestAck()!=RE_START) return 0;
01BA 81B1 in R24,0x1
01BC 887F andi R24,248
01BE 8031 cpi R24,16
01C0 11F0 breq L45
01C2 .dbline 180
01C2 0027 clr R16
01C4 1CC0 xjmp L26
01C6 L45:
01C6 .dbline 181
01C6 ; Write8Bit(rd_device_add);
01C6 .dbline 181
01C6 81EA ldi R24,161
01C8 83B9 out 0x3,R24
01CA .dbline 181
01CA 84E8 ldi R24,132
01CC 86BF out 0x36,R24
01CE .dbline 181
01CE .dbline 181
01CE .dbline 182
01CE L47:
01CE .dbline 182
01CE L48:
01CE .dbline 182
01CE ; Wait();
01CE 26B6 in R2,0x36
01D0 27FE sbrs R2,7
01D2 FDCF rjmp L47
01D4 .dbline 182
01D4 .dbline 182
01D4 .dbline 183
01D4 ; if(TestAck()!=MR_SLA_ACK) return 0;
01D4 81B1 in R24,0x1
01D6 887F andi R24,248
01D8 8034 cpi R24,64
01DA 11F0 breq L50
01DC .dbline 183
01DC 0027 clr R16
01DE 0FC0 xjmp L26
01E0 L50:
01E0 .dbline 184
01E0 ; Twi();
01E0 84E8 ldi R24,132
01E2 86BF out 0x36,R24
01E4 .dbline 185
01E4 L52:
01E4 .dbline 185
01E4 L53:
01E4 .dbline 185
01E4 ; Wait();
01E4 26B6 in R2,0x36
01E6 27FE sbrs R2,7
01E8 FDCF rjmp L52
01EA .dbline 185
01EA .dbline 185
01EA .dbline 186
01EA ; if(TestAck()!=MR_DATA_NOACK) return 0;
01EA 81B1 in R24,0x1
01EC 887F andi R24,248
01EE 8835 cpi R24,88
01F0 11F0 breq L55
01F2 .dbline 186
01F2 0027 clr R16
01F4 04C0 xjmp L26
01F6 L55:
01F6 .dbline 187
01F6 ; temp=TWDR;
01F6 43B1 in R20,0x3
01F8 .dbline 188
01F8 ; Stop();
01F8 84E9 ldi R24,148
01FA 86BF out 0x36,R24
01FC .dbline 189
01FC ; return temp;
01FC 042F mov R16,R20
01FE .dbline -2
01FE L26:
01FE 0E940000 xcall pop_gset1
0202 .dbline 0 ; func end
0202 0895 ret
0204 .dbsym r temp 20 c
0204 .dbsym r RomAddress 16 c
0204 .dbend
0204 .dbfunc e i2c_Write _i2c_Write fc
0204 ; Wdata -> R20
0204 ; RomAddress -> R22
.even
0204 _i2c_Write::
0204 0E940000 xcall push_gset2
0208 422F mov R20,R18
020A 602F mov R22,R16
020C .dbline -1
020C .dbline 198
020C ; }
020C ;
020C ; /******************************************
020C ; I2C总线写一个字节
020C ; 返回0:写成功
020C ; 返回非0:写失败
020C ; *******************************************/
020C ; unsigned char i2c_Write(unsigned char RomAddress,unsigned char Wdata)
020C ; {
020C .dbline 199
020C ; Start();
020C 84EA ldi R24,164
020E 86BF out 0x36,R24
0210 .dbline 200
0210 L58:
0210 .dbline 200
0210 L59:
0210 .dbline 200
0210 ; Wait();
0210 26B6 in R2,0x36
0212 27FE sbrs R2,7
0214 FDCF rjmp L58
0216 .dbline 200
0216 .dbline 200
0216 .dbline 201
0216 ; if(TestAck()!=START) return 1;
0216 81B1 in R24,0x1
0218 887F andi R24,248
021A 8830 cpi R24,8
021C 11F0 breq L61
021E .dbline 201
021E 01E0 ldi R16,1
0220 2BC0 xjmp L57
0222 L61:
0222 .dbline 202
0222 ; Write8Bit(wr_device_add);
0222 .dbline 202
0222 80EA ldi R24,160
0224 83B9 out 0x3,R24
0226 .dbline 202
0226 84E8 ldi R24,132
0228 86BF out 0x36,R24
022A .dbline 202
022A .dbline 202
022A .dbline 203
022A L63:
022A .dbline 203
022A L64:
022A .dbline 203
022A ; Wait();
022A 26B6 in R2,0x36
022C 27FE sbrs R2,7
022E FDCF rjmp L63
0230 .dbline 203
0230 .dbline 203
0230 .dbline 204
0230 ; if(TestAck()!=MT_SLA_ACK) return 1;
0230 81B1 in R24,0x1
0232 887F andi R24,248
0234 8831 cpi R24,24
0236 11F0 breq L66
0238 .dbline 204
0238 01E0 ldi R16,1
023A 1EC0 xjmp L57
023C L66:
023C .dbline 205
023C ; Write8Bit(RomAddress);
023C .dbline 205
023C 63B9 out 0x3,R22
023E .dbline 205
023E 84E8 ldi R24,132
0240 86BF out 0x36,R24
0242 .dbline 205
0242 .dbline 205
0242 .dbline 206
0242 L68:
0242 .dbline 206
0242 L69:
0242 .dbline 206
0242 ; Wait();
0242 26B6 in R2,0x36
0244 27FE sbrs R2,7
0246 FDCF rjmp L68
0248 .dbline 206
0248 .dbline 206
0248 .dbline 207
0248 ; if(TestAck()!=MT_DATA_ACK) return 1;
0248 81B1 in R24,0x1
024A 887F andi R24,248
024C 8832 cpi R24,40
024E 11F0 breq L71
0250 .dbline 207
0250 01E0 ldi R16,1
0252 12C0 xjmp L57
0254 L71:
0254 .dbline 208
0254 ; Write8Bit(Wdata);
0254 .dbline 208
0254 43B9 out 0x3,R20
0256 .dbline 208
0256 84E8 ldi R24,132
0258 86BF out 0x36,R24
025A .dbline 208
025A .dbline 208
025A .dbline 209
025A L73:
025A .dbline 209
025A L74:
025A .dbline 209
025A ; Wait();
025A 26B6 in R2,0x36
025C 27FE sbrs R2,7
025E FDCF rjmp L73
0260 .dbline 209
0260 .dbline 209
0260 .dbline 210
0260 ; if(TestAck()!=MT_DATA_ACK) return 1;
0260 81B1 in R24,0x1
0262 887F andi R24,248
0264 8832 cpi R24,40
0266 11F0 breq L76
0268 .dbline 210
0268 01E0 ldi R16,1
026A 06C0 xjmp L57
026C L76:
026C .dbline 211
026C ; Stop();
026C 84E9 ldi R24,148
026E 86BF out 0x36,R24
0270 .dbline 212
0270 ; delay_ms(10);
0270 0AE0 ldi R16,10
0272 10E0 ldi R17,0
0274 CDD0 xcall _delay_ms
0276 .dbline 213
0276 ; return 0;
0276 0027 clr R16
0278 .dbline -2
0278 L57:
0278 0E940000 xcall pop_gset2
027C .dbline 0 ; func end
027C 0895 ret
027E .dbsym r Wdata 20 c
027E .dbsym r RomAddress 22 c
027E .dbend
027E .dbfunc e main _main fV
027E ; key_val -> R10
027E ; rd_val -> R22
027E ; wr_val -> R20
.even
027E _main::
027E 2297 sbiw R28,2
0280 .dbline -1
0280 .dbline 218
0280 ; }
0280 ;
0280 ; //******************************************
0280 ; void main(void)
0280 ; {
0280 .dbline 219
0280 ; uchar key_val,wr_val=0,rd_val=0;
0280 4427 clr R20
0282 .dbline 219
0282 6627 clr R22
0284 .dbline 220
0284 ; port_init();
0284 60DF xcall _port_init
0286 .dbline 221
0286 ; delay_ms(400);
0286 00E9 ldi R16,400
0288 11E0 ldi R17,1
028A C2D0 xcall _delay_ms
028C .dbline 222
028C ; InitLcd();
028C 04DF xcall _InitLcd
028E .dbline 223
028E ; LcdWriteCommand(0x01,1);
028E 21E0 ldi R18,1
0290 01E0 ldi R16,1
0292 23DF xcall _LcdWriteCommand
0294 .dbline 224
0294 ; LcdWriteCommand(0x0c,1);
0294 21E0 ldi R18,1
0296 0CE0 ldi R16,12
0298 20DF xcall _LcdWriteCommand
029A .dbline 225
029A ; ePutstr(0,0,str0);
029A 80E0 ldi R24,<_str0
029C 90E0 ldi R25,>_str0
029E 9983 std y+1,R25
02A0 8883 std y+0,R24
02A2 2227 clr R18
02A4 0027 clr R16
02A6 ACDE xcall _ePutstr
02A8 .dbline 226
02A8 ; delay_ms(10);
02A8 0AE0 ldi R16,10
02AA 10E0 ldi R17,0
02AC B1D0 xcall _delay_ms
02AE .dbline 227
02AE ; ePutstr(0,1,str1);
02AE 80E0 ldi R24,<_str1
02B0 90E0 ldi R25,>_str1
02B2 9983 std y+1,R25
02B4 8883 std y+0,R24
02B6 21E0 ldi R18,1
02B8 0027 clr R16
02BA A2DE xcall _ePutstr
02BC .dbline 228
02BC ; delay_ms(10);
02BC 0AE0 ldi R16,10
02BE 10E0 ldi R17,0
02C0 A7D0 xcall _delay_ms
02C2 A3C0 xjmp L80
02C4 L79:
02C4 .dbline 231
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -