📄 ac15-4.lis
字号:
01B4 26B6 in R2,0x36
01B6 27FE sbrs R2,7
01B8 FDCF rjmp L42
01BA .dbline 191
01BA .dbline 191
01BA .dbline 192
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 192
01C2 0027 clr R16
01C4 1CC0 xjmp L26
01C6 L45:
01C6 .dbline 193
01C6 ; Write8Bit(rd_device_add);
01C6 .dbline 193
01C6 81EA ldi R24,161
01C8 83B9 out 0x3,R24
01CA .dbline 193
01CA 84E8 ldi R24,132
01CC 86BF out 0x36,R24
01CE .dbline 193
01CE .dbline 193
01CE .dbline 194
01CE L47:
01CE .dbline 194
01CE L48:
01CE .dbline 194
01CE ; Wait();
01CE 26B6 in R2,0x36
01D0 27FE sbrs R2,7
01D2 FDCF rjmp L47
01D4 .dbline 194
01D4 .dbline 194
01D4 .dbline 195
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 195
01DC 0027 clr R16
01DE 0FC0 xjmp L26
01E0 L50:
01E0 .dbline 196
01E0 ; Twi();
01E0 84E8 ldi R24,132
01E2 86BF out 0x36,R24
01E4 .dbline 197
01E4 L52:
01E4 .dbline 197
01E4 L53:
01E4 .dbline 197
01E4 ; Wait();
01E4 26B6 in R2,0x36
01E6 27FE sbrs R2,7
01E8 FDCF rjmp L52
01EA .dbline 197
01EA .dbline 197
01EA .dbline 198
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 198
01F2 0027 clr R16
01F4 04C0 xjmp L26
01F6 L55:
01F6 .dbline 199
01F6 ; temp=TWDR;
01F6 43B1 in R20,0x3
01F8 .dbline 200
01F8 ; Stop();
01F8 84E9 ldi R24,148
01FA 86BF out 0x36,R24
01FC .dbline 201
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 210
020C ; }
020C ;
020C ; /******************************************
020C ; I2C总线写一个字节
020C ; 返回0:写成功
020C ; 返回非0:写失败
020C ; *******************************************/
020C ; unsigned char i2c_Write(unsigned char RomAddress,unsigned char Wdata)
020C ; {
020C .dbline 211
020C ; Start();
020C 84EA ldi R24,164
020E 86BF out 0x36,R24
0210 .dbline 212
0210 L58:
0210 .dbline 212
0210 L59:
0210 .dbline 212
0210 ; Wait();
0210 26B6 in R2,0x36
0212 27FE sbrs R2,7
0214 FDCF rjmp L58
0216 .dbline 212
0216 .dbline 212
0216 .dbline 213
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 213
021E 01E0 ldi R16,1
0220 2BC0 xjmp L57
0222 L61:
0222 .dbline 214
0222 ; Write8Bit(wr_device_add);
0222 .dbline 214
0222 80EA ldi R24,160
0224 83B9 out 0x3,R24
0226 .dbline 214
0226 84E8 ldi R24,132
0228 86BF out 0x36,R24
022A .dbline 214
022A .dbline 214
022A .dbline 215
022A L63:
022A .dbline 215
022A L64:
022A .dbline 215
022A ; Wait();
022A 26B6 in R2,0x36
022C 27FE sbrs R2,7
022E FDCF rjmp L63
0230 .dbline 215
0230 .dbline 215
0230 .dbline 216
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 216
0238 01E0 ldi R16,1
023A 1EC0 xjmp L57
023C L66:
023C .dbline 217
023C ; Write8Bit(RomAddress);
023C .dbline 217
023C 63B9 out 0x3,R22
023E .dbline 217
023E 84E8 ldi R24,132
0240 86BF out 0x36,R24
0242 .dbline 217
0242 .dbline 217
0242 .dbline 218
0242 L68:
0242 .dbline 218
0242 L69:
0242 .dbline 218
0242 ; Wait();
0242 26B6 in R2,0x36
0244 27FE sbrs R2,7
0246 FDCF rjmp L68
0248 .dbline 218
0248 .dbline 218
0248 .dbline 219
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 219
0250 01E0 ldi R16,1
0252 12C0 xjmp L57
0254 L71:
0254 .dbline 220
0254 ; Write8Bit(Wdata);
0254 .dbline 220
0254 43B9 out 0x3,R20
0256 .dbline 220
0256 84E8 ldi R24,132
0258 86BF out 0x36,R24
025A .dbline 220
025A .dbline 220
025A .dbline 221
025A L73:
025A .dbline 221
025A L74:
025A .dbline 221
025A ; Wait();
025A 26B6 in R2,0x36
025C 27FE sbrs R2,7
025E FDCF rjmp L73
0260 .dbline 221
0260 .dbline 221
0260 .dbline 222
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 222
0268 01E0 ldi R16,1
026A 06C0 xjmp L57
026C L76:
026C .dbline 223
026C ; Stop();
026C 84E9 ldi R24,148
026E 86BF out 0x36,R24
0270 .dbline 224
0270 ; delay_ms(10);
0270 0AE0 ldi R16,10
0272 10E0 ldi R17,0
0274 CAD1 xcall _delay_ms
0276 .dbline 225
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 timer1_init _timer1_init fV
.even
027E _timer1_init::
027E .dbline -1
027E .dbline 230
027E ; }
027E ;
027E ; /*****************定时器1初始化*************/
027E ; void timer1_init(void)
027E ; {
027E .dbline 231
027E ; TCNT1H = 0xF3; //setup
027E 83EF ldi R24,243
0280 8DBD out 0x2d,R24
0282 .dbline 232
0282 ; TCNT1L = 0xCB;
0282 8BEC ldi R24,203
0284 8CBD out 0x2c,R24
0286 .dbline 233
0286 ; TCCR1B = 0x04; //start Timer
0286 84E0 ldi R24,4
0288 8EBD out 0x2e,R24
028A .dbline -2
028A L78:
028A .dbline 0 ; func end
028A 0895 ret
028C .dbend
028C .dbfunc e main _main fV
028C ; key_val -> R22
.even
028C _main::
028C 2297 sbiw R28,2
028E .dbline -1
028E .dbline 238
028E ; }
028E ;
028E ; //******************************************
028E ; void main(void)
028E ; {
028E .dbline 240
028E ; uchar key_val;
028E ; init_devices();
028E B3D1 xcall _init_devices
0290 .dbline 241
0290 ; delay_ms(400);
0290 00E9 ldi R16,400
0292 11E0 ldi R17,1
0294 BAD1 xcall _delay_ms
0296 .dbline 242
0296 ; InitLcd();
0296 FFDE xcall _InitLcd
0298 .dbline 243
0298 ; LcdWriteCommand(0x01,1);
0298 21E0 ldi R18,1
029A 01E0 ldi R16,1
029C 1EDF xcall _LcdWriteCommand
029E .dbline 244
029E ; LcdWriteCommand(0x0c,1);
029E 21E0 ldi R18,1
02A0 0CE0 ldi R16,12
02A2 1BDF xcall _LcdWriteCommand
02A4 .dbline 245
02A4 ; ePutstr(0,0,str0);
02A4 80E0 ldi R24,<_str0
02A6 90E0 ldi R25,>_str0
02A8 9983 std y+1,R25
02AA 8883 std y+0,R24
02AC 2227 clr R18
02AE 0027 clr R16
02B0 A7DE xcall _ePutstr
02B2 .dbline 246
02B2 ; delay_ms(10);
02B2 0AE0 ldi R16,10
02B4 10E0 ldi R17,0
02B6 A9D1 xcall _delay_ms
02B8 .dbline 247
02B8 ; ePutstr(0,1,str1);
02B8 80E0 ldi R24,<_str1
02BA 90E0 ldi R25,>_str1
02BC 9983 std y+1,R25
02BE 8883 std y+0,R24
02C0 21E0 ldi R18,1
02C2 0027 clr R16
02C4 9DDE xcall _ePutstr
02C6 .dbline 248
02C6 ; delay_ms(10);
02C6 0AE0 ldi R16,10
02C8 10E0 ldi R17,0
02CA 9FD1 xcall _delay_ms
02CC 42C1 xjmp L81
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -