📄 1602_8563.s
字号:
std y+3,R2
movw R24,R2
cpi R24,1
ldi R30,0
cpc R25,R30
breq L142
cpi R24,2
ldi R30,0
cpc R25,R30
breq L144
cpi R24,3
ldi R30,0
cpc R25,R30
breq L146
cpi R24,4
ldi R30,0
cpc R25,R30
breq L148
cpi R24,5
ldi R30,0
cpc R25,R30
breq L150
cpi R24,6
ldi R30,0
cpc R25,R30
breq L152
xjmp L139
X5:
.dbline 266
; {
L142:
.dbline 268
; case 1:
; xs_lcd("year:");
ldi R16,<L143
ldi R17,>L143
xcall _xs_lcd
.dbline 269
; set_xs1(6); //显示年
ldi R16,6
xcall _set_xs1
.dbline 270
; break;
xjmp L284
L144:
.dbline 272
; case 2:
; xs_lcd("muth:");
ldi R16,<L145
ldi R17,>L145
xcall _xs_lcd
.dbline 273
; set_xs1(5); //显示月
ldi R16,5
xcall _set_xs1
.dbline 274
; break;
xjmp L284
L146:
.dbline 276
; case 3:
; xs_lcd(" day:");
ldi R16,<L147
ldi R17,>L147
xcall _xs_lcd
.dbline 277
; set_xs1(3); //显示日
ldi R16,3
xcall _set_xs1
.dbline 278
; break;
xjmp L284
L148:
.dbline 280
; case 4:
; xs_lcd("hour:");
ldi R16,<L149
ldi R17,>L149
xcall _xs_lcd
.dbline 281
; set_xs1(2); //显示时
ldi R16,2
xcall _set_xs1
.dbline 282
; break;
xjmp L284
L150:
.dbline 284
; case 5:
; xs_lcd("mine:");
ldi R16,<L151
ldi R17,>L151
xcall _xs_lcd
.dbline 285
; set_xs1(1); //显示分
ldi R16,1
xcall _set_xs1
.dbline 286
; break;
xjmp L284
L152:
.dbline 288
; case 6:
; xs_lcd("week:");
ldi R16,<L153
ldi R17,>L153
xcall _xs_lcd
.dbline 289
; set_xs1(4); //显示周
ldi R16,4
xcall _set_xs1
.dbline 290
; break;
xjmp L284
L139:
.dbline 291
; default:set_time=0;break;
clr R22
.dbline 291
.dbline 293
; }
; }
.dbline 294
; break;
xjmp L284
L154:
.dbline 296
; case 0x04:
; if(set_flag==1)
ldd R24,y+1
cpi R24,1
breq X15
xjmp L155
X15:
.dbline 297
; {
.dbline 298
; spk(10,1);
ldi R18,1
ldi R16,10
xcall _spk
.dbline 299
; set_bh=1;
clr R0
inc R0
std y+2,R0
.dbline 300
; locate(2,7); //显示“时间调整”
ldi R18,7
ldi R16,2
xcall _locate
.dbline 301
; switch(set_time)
mov R12,R22
clr R13
movw R24,R12
cpi R24,1
ldi R30,0
cpc R25,R30
breq L160
cpi R24,2
ldi R30,0
cpc R25,R30
breq L170
cpi R24,3
ldi R30,0
cpc R25,R30
brne X16
xjmp L180
X16:
cpi R24,4
ldi R30,0
cpc R25,R30
brne X17
xjmp L190
X17:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X18
xjmp L200
X18:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X19
xjmp L210
X19:
xjmp L157
X6:
.dbline 302
; {
L160:
.dbline 304
; case 1:
; timer[6]-=0x01;
lds R24,_timer+6
subi R24,1
sts _timer+6,R24
.dbline 305
; if((timer[6]&0x0F)==0x0F)timer[6]&=0xF9;
andi R24,15
cpi R24,15
brne L162
.dbline 305
lds R24,_timer+6
andi R24,249
sts _timer+6,R24
L162:
.dbline 306
; if(timer[6]>0x99)timer[6]=0x99;
ldi R24,153
lds R2,_timer+6
cp R24,R2
brsh L166
.dbline 306
sts _timer+6,R24
L166:
.dbline 307
; set_xs1(6); //显示年
ldi R16,6
xcall _set_xs1
.dbline 308
; break;
xjmp L284
L170:
.dbline 310
; case 2:
; timer[5]-=0x01;
lds R24,_timer+5
subi R24,1
sts _timer+5,R24
.dbline 311
; if((timer[5]&0x0F)==0x0F)timer[5]&=0xF9;
andi R24,15
cpi R24,15
brne L172
.dbline 311
lds R24,_timer+5
andi R24,249
sts _timer+5,R24
L172:
.dbline 312
; if(timer[5]==0x00)timer[5]=0x12;
lds R2,_timer+5
tst R2
brne L176
.dbline 312
ldi R24,18
sts _timer+5,R24
L176:
.dbline 313
; set_xs1(5); //显示月
ldi R16,5
xcall _set_xs1
.dbline 314
; break;
xjmp L284
L180:
.dbline 316
; case 3:
; timer[3]-=0x01;
lds R24,_timer+3
subi R24,1
sts _timer+3,R24
.dbline 317
; if((timer[3]&0x0F)==0x0F)timer[3]&=0xF9;
andi R24,15
cpi R24,15
brne L182
.dbline 317
lds R24,_timer+3
andi R24,249
sts _timer+3,R24
L182:
.dbline 318
; if(timer[3]==0x00)timer[3]=0x30;
lds R2,_timer+3
tst R2
brne L186
.dbline 318
ldi R24,48
sts _timer+3,R24
L186:
.dbline 319
; set_xs1(3); //显示日
ldi R16,3
xcall _set_xs1
.dbline 320
; break;
xjmp L284
L190:
.dbline 322
; case 4:
; timer[2]-=0x01;
lds R24,_timer+2
subi R24,1
sts _timer+2,R24
.dbline 323
; if((timer[2]&0x0F)==0x0F)timer[2]&=0xF9;
andi R24,15
cpi R24,15
brne L192
.dbline 323
lds R24,_timer+2
andi R24,249
sts _timer+2,R24
L192:
.dbline 324
; if(timer[2]>0x24)timer[2]=0x23;
ldi R24,36
lds R2,_timer+2
cp R24,R2
brsh L196
.dbline 324
ldi R24,35
sts _timer+2,R24
L196:
.dbline 325
; set_xs1(2); //显示时
ldi R16,2
xcall _set_xs1
.dbline 326
; break;
xjmp L284
L200:
.dbline 328
; case 5:
; timer[1]-=0x01;
lds R24,_timer+1
subi R24,1
sts _timer+1,R24
.dbline 329
; if((timer[1]&0x0F)==0x0F)timer[1]&=0xf9;
andi R24,15
cpi R24,15
brne L202
.dbline 329
lds R24,_timer+1
andi R24,249
sts _timer+1,R24
L202:
.dbline 330
; if(timer[1]>0x59)timer[1]=0x59;
ldi R24,89
lds R2,_timer+1
cp R24,R2
brsh L206
.dbline 330
sts _timer+1,R24
L206:
.dbline 331
; set_xs1(1); //显示分
ldi R16,1
xcall _set_xs1
.dbline 332
; break;
xjmp L284
L210:
.dbline 334
; case 6:
; timer[4]-=0x01;
lds R24,_timer+4
subi R24,1
sts _timer+4,R24
.dbline 335
; if(timer[4]>6)timer[4]=0x06;
ldi R24,6
lds R2,_timer+4
cp R24,R2
brsh L212
.dbline 335
sts _timer+4,R24
L212:
.dbline 336
; set_xs1(4); //显示周
ldi R16,4
xcall _set_xs1
.dbline 337
; break;
xjmp L284
L157:
.dbline 338
; default:set_time=0;break;
clr R22
.dbline 338
.dbline 340
; }
; }
xjmp L284
L155:
.dbline 342
; else
; start_timer();
xcall _start_timer
.dbline 343
; break;
xjmp L284
L216:
.dbline 345
; case 0x08:
; if(set_flag==1)
ldd R24,y+1
cpi R24,1
breq X20
xjmp L217
X20:
.dbline 346
; {
.dbline 347
; spk(10,1);
ldi R18,1
ldi R16,10
xcall _spk
.dbline 348
; set_bh=1;
clr R0
inc R0
std y+2,R0
.dbline 349
; locate(2,7); //显示“时间调整”
ldi R18,7
ldi R16,2
xcall _locate
.dbline 350
; switch(set_time)
mov R10,R22
clr R11
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
breq L222
cpi R24,2
ldi R30,0
cpc R25,R30
breq L233
cpi R24,3
ldi R30,0
cpc R25,R30
brne X21
xjmp L244
X21:
cpi R24,4
ldi R30,0
cpc R25,R30
brne X22
xjmp L255
X22:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X23
xjmp L266
X23:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X24
xjmp L277
X24:
xjmp L219
X7:
.dbline 351
; {
L222:
.dbline 353
; case 1:
; timer[6]+=0x01;
lds R24,_timer+6
subi R24,255 ; addi 1
sts _timer+6,R24
.dbline 354
; if((timer[6]&0x0F)==0x0A)timer[6]=(timer[6]&0xF0)+0x10;
andi R24,15
cpi R24,10
brne L224
.dbline 354
lds R24,_timer+6
andi R24,240
subi R24,240 ; addi 16
sts _timer+6,R24
L224:
.dbline 355
; if(timer[6]>0x99)timer[6]=0x00;
ldi R24,153
lds R2,_timer+6
cp R24,R2
brsh L229
.dbline 355
clr R2
sts _timer+6,R2
L229:
.dbline 356
; set_xs1(6); //显示年
ldi R16,6
xcall _set_xs1
.dbline 357
; break;
xjmp L284
L233:
.dbline 359
; case 2:
; timer[5]+=0x01;
lds R24,_timer+5
subi R24,255 ; addi 1
sts _timer+5,R24
.dbline 360
; if((timer[5]&0x0F)==0x0A)timer[5]=(timer[5]&0xF0)+0x10;
andi R24,15
cpi R24,10
brne L235
.dbline 360
lds R24,_timer+5
andi R24,240
subi R24,240 ; addi 16
sts _timer+5,R24
L235:
.dbline 361
; if(timer[5]>=0x13)timer[5]=0x01;
lds R24,_timer+5
cpi R24,19
brlo L240
.dbline 361
ldi R24,1
sts _timer+5,R24
L240:
.dbline 362
; set_xs1(5); //显示月
ldi R16,5
xcall _set_xs1
.dbline 363
; break;
xjmp L284
L244:
.dbline 365
; case 3:
; timer[3]+=0x01;
lds R24,_timer+3
subi R24,255 ; addi 1
sts _timer+3,R24
.dbline 366
; if((timer[3]&0x0F)==0x0A)timer[3]=(timer[3]&0xF0)+0x10;
andi R24,15
cpi R24,10
brne L246
.dbline 366
lds R24,_timer+3
andi R24,240
subi R24,240 ; addi 16
sts _timer+3,R24
L246:
.dbline 367
; if(timer[3]>=0x31)timer[3]=0x01;
lds R24,_timer+3
cpi R24,49
brlo L251
.dbline 367
ldi R24,1
sts _timer+3,R24
L251:
.dbline 368
; set_xs1(3); //显示日
ldi R16,3
xcall _set_xs1
.dbline 369
; break;
xjmp L284
L255:
.dbline 371
; case 4:
; timer[2]+=0x01;
lds R24,_timer+2
subi R24,255 ; addi 1
sts _timer+2,R24
.dbline 372
; if((timer[2]&0x0F)==0x0A)timer[2]=(timer[2]&0xF0)+0x10;
andi R24,15
cpi R24,10
brne L257
.dbline 372
lds R24,_timer+2
andi R24,240
subi R24,240 ; addi 16
sts _timer+2,R24
L257:
.dbline 373
; if(timer[2]>=0x24)timer[2]=0x00;
lds R24,_timer+2
cpi R24,36
brlo L262
.dbline 373
clr R2
sts _timer+2,R2
L262:
.dbline 374
; set_xs1(2); //显示时
ldi R16,2
xcall _set_xs1
.dbline 375
; break;
xjmp L284
L266:
.dbline 377
; case 5:
; timer[1]+=0x01;
lds R24,_timer+1
subi R24,255 ; addi 1
sts _timer+1,R24
.dbline 378
; if((timer[1]&0x0F)==0x0A)timer[1]=(timer[1]&0xf0)+0x10;
andi R24,15
cpi R24,10
brne L268
.dbline 378
lds R24,_timer+1
andi R24,240
subi R24,240 ; addi 16
sts _timer+1,R24
L268:
.dbline 379
; if(timer[1]>0x59)timer[1]=0x00;
ldi R24,89
lds R2,_timer+1
cp R24,R2
brsh L273
.dbline 379
clr R2
sts _timer+1,R2
L273:
.dbline 380
; set_xs1(1); //显示分
ldi R16,1
xcall _set_xs1
.dbline 381
; break;
xjmp L284
L277:
.dbline 383
; case 6:
; timer[4]+=0x01;
lds R24,_timer+4
subi R24,255 ; addi 1
sts _timer+4,R24
.dbline 384
; if(timer[4]>6)timer[4]=0x00;
ldi R24,6
lds R2,_timer+4
cp R24,R2
brsh L279
.dbline 384
clr R2
sts _timer+4,R2
L279:
.dbline 385
; set_xs1(4); //显示周
ldi R16,4
xcall _set_xs1
.dbline 386
; break;
xjmp L284
L219:
.dbline 387
; default:set_time=0;break;
clr R22
.dbline 387
.dbline 389
; }
; }
xjmp L284
L217:
.dbline 391
; else
; LED_OFF; //关背光
cbi 0x18,3
.dbline 392
; break;
.dbline 393
; default:break;
.dbline 395
; }
; }
xjmp L284
L283:
.dbline 397
.dbline 398
in R24,0x13
lsr R24
ori R24,241
in R20,0x10
lsr R20
lsr R20
ori R20,254
and R20,R24
com R20
.dbline 399
ldi R16,10
ldi R17,0
xcall _delay_ms
.dbline 400
L284:
.dbline 396
; while(a!=0)
tst R20
brne L283
.dbline 401
; {
; a=KEY_RD;
; delay_ms(10);
; }
; }
L123:
.dbline 402
L121:
.dbline 226
xjmp L120
X8:
.dbline -2
L119:
adiw R28,5
.dbline 0 ; func end
ret
.dbsym r set_time 22 c
.dbsym l set_bh 2 c
.dbsym l set_flag 1 c
.dbsym l a1 0 c
.dbsym r a 20 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
_timer::
.blkb 8
.dbsym e timer _timer A[8:8]c
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L153:
.blkb 6
.area idata
.byte 'w,'e,'e,'k,58,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L151:
.blkb 6
.area idata
.byte 'm,'i,'n,'e,58,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L149:
.blkb 6
.area idata
.byte 'h,'o,'u,'r,58,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L147:
.blkb 6
.area idata
.byte 32,'d,'a,'y,58,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L145:
.blkb 6
.area idata
.byte 'm,'u,'t,'h,58,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L143:
.blkb 6
.area idata
.byte 'y,'e,'a,'r,58,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L133:
.blkb 5
.area idata
.byte 'S,'E,'T,58,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L32:
.blkb 17
.area idata
.byte 'T,'e,'l,58,48,50,56,45,56,50,56,51,52,57,52,54
.byte 0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
L31:
.blkb 7
.area idata
.byte 'T,'O,'N,'G,'H,'E,0
.area data(ram, con, rel)
.dbfile D:\PCF8563\1602_time\1602_8563.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -