📄 clock.lis
字号:
; }
03AE L82:
03AE .dbline 0 ; func end
03AE 0895 ret
03B0 .dbfunc s main _main fI
; temp -> R22
; bpflag -> R20
.even
03B0 _main::
03B0 .dbline -1
03B0 .dbline 231
; /*启动时为正计时,按shift键进行正计时和倒计时切换 */
; /*启动时允许整点报时,按0~F中任意键一次关闭,二次打开*/
; void main(void)
; {
03B0 .dbline 232
; unsigned char temp,bpflag=0;
03B0 4427 clr R20
03B2 .dbline 233
; MCUCR=0x00;
03B2 2224 clr R2
03B4 25BE out 0x35,R2
03B6 .dbline 234
; DDRC=0b00011101;
03B6 8DE1 ldi R24,29
03B8 84BB out 0x14,R24
03BA .dbline 235
; PORTC=0b00010001;
03BA 81E1 ldi R24,17
03BC 85BB out 0x15,R24
03BE .dbline 236
; delay_ms(30);
03BE 0EE1 ldi R16,30
03C0 10E0 ldi R17,0
03C2 00D0 rcall _delay_ms
03C4 .dbline 237
; send_byte(0xa4);
03C4 04EA ldi R16,164
03C6 3CDE rcall _send_byte
03C8 .dbline 238
; setcs;
03C8 AC9A sbi 0x15,4
03CA .dbline 238
03CA .dbline 239
; initdis();
03CA 67DE rcall _initdis
03CC .dbline 240
; opentime();
03CC 5BDF rcall _opentime
03CE 4DC0 rjmp L97
03D0 L96:
03D0 .dbline 242
; while(1)
; {
03D0 .dbline 243
; if(flag==0x01)
03D0 80910000 lds R24,_flag
03D4 8130 cpi R24,1
03D6 59F4 brne L99
03D8 .dbline 244
; {
03D8 .dbline 245
; if(dflag==0)
03D8 20900100 lds R2,_dflag
03DC 2220 tst R2
03DE 11F4 brne L101
03E0 .dbline 246
; inctime();
03E0 94DF rcall _inctime
03E2 01C0 rjmp L102
03E4 L101:
03E4 .dbline 248
; else
; dectime();
03E4 BADF rcall _dectime
03E6 L102:
03E6 .dbline 249
; display();
03E6 60DF rcall _display
03E8 .dbline 250
; flag=0;
03E8 2224 clr R2
03EA 20920000 sts _flag,R2
03EE .dbline 251
; }
03EE L99:
03EE .dbline 252
; if((PINC&0x02)==0)//检查shift按键
03EE 9999 sbic 0x13,1
03F0 19C0 rjmp L103
03F2 .dbline 253
; {
03F2 .dbline 254
; send_byte(0x15);
03F2 05E1 ldi R16,21
03F4 25DE rcall _send_byte
03F6 .dbline 255
; temp=receive_byte();
03F6 04DE rcall _receive_byte
03F8 202E mov R2,R16
03FA 312E mov R3,R17
03FC 622D mov R22,R2
03FE .dbline 256
; setcs;
03FE AC9A sbi 0x15,4
0400 .dbline 256
0400 .dbline 257
; if(temp==0x17)
0400 6731 cpi R22,23
0402 61F4 brne L105
0404 .dbline 258
; {
0404 .dbline 259
; if (dflag==0)
0404 20900100 lds R2,_dflag
0408 2220 tst R2
040A 21F4 brne L107
040C .dbline 260
; dflag=1;
040C 81E0 ldi R24,1
040E 80930100 sts _dflag,R24
0412 06C0 rjmp L110
0414 L107:
0414 .dbline 262
; else
; dflag=0;
0414 2224 clr R2
0416 20920100 sts _dflag,R2
041A .dbline 263
; }
041A 02C0 rjmp L110
041C L105:
041C .dbline 265
; else
; bpflag^=0x01;
041C 81E0 ldi R24,1
041E 4827 eor R20,R24
0420 L109:
0420 .dbline 267
0420 L110:
0420 .dbline 266
; while((PINC&0x02)==0)//按键释放检查
0420 999B sbis 0x13,1
0422 FECF rjmp L109
0424 .dbline 268
; ;
; }
0424 L103:
0424 .dbline 269
; if ((time.minute==0)&(bpflag==0))
0424 20900300 lds R2,_time+1
0428 2220 tst R2
042A 29F4 brne L115
042C 81E0 ldi R24,1
042E 90E0 ldi R25,0
0430 C82E mov R12,R24
0432 D92E mov R13,R25
0434 02C0 rjmp L116
0436 L115:
0436 CC24 clr R12
0438 DD24 clr R13
043A L116:
043A 4423 tst R20
043C 29F4 brne L117
043E 81E0 ldi R24,1
0440 90E0 ldi R25,0
0442 A82E mov R10,R24
0444 B92E mov R11,R25
0446 02C0 rjmp L118
0448 L117:
0448 AA24 clr R10
044A BB24 clr R11
044C L118:
044C 2C2C mov R2,R12
044E 3D2C mov R3,R13
0450 2A20 and R2,R10
0452 3B20 and R3,R11
0454 2220 tst R2
0456 11F4 brne X11
0458 3320 tst R3
045A 21F0 breq L112
045C X11:
045C .dbline 270
; TIMSK|=0x01; //整点报时
045C 89B7 in R24,0x39
045E 8160 ori R24,1
0460 89BF out 0x39,R24
0462 03C0 rjmp L113
0464 L112:
0464 .dbline 272
; else
; TIMSK&=0xfe;
0464 89B7 in R24,0x39
0466 8E7F andi R24,254
0468 89BF out 0x39,R24
046A L113:
046A .dbline 273
046A L97:
046A .dbline 241
046A B2CF rjmp L96
046C X10:
046C .dbline -2
046C .dbline 274
; }
; }
046C L95:
046C .dbline 0 ; func end
046C 0895 ret
046E .dbsym r temp 22 c
046E .dbsym r bpflag 20 c
046E .dbfunc s timer1_ovf _timer1_ovf fI
.even
046E _timer1_ovf::
046E 8A93 st -y,R24
0470 9A93 st -y,R25
0472 8FB7 in R24,0x3f
0474 8A93 st -y,R24
0476 .dbline -1
0476 .dbline 276
; void timer1_ovf() //溢出中断子程序
; {
0476 .dbline 277
; TCNT1=0x85ee;
0476 8EEE ldi R24,-31250
0478 95E8 ldi R25,-123
047A 90934D00 sts 76+1,R25
047E 80934C00 sts 76,R24
0482 .dbline 278
; flag=0x01;
0482 81E0 ldi R24,1
0484 80930000 sts _flag,R24
0488 .dbline -2
0488 .dbline 279
; }
0488 L119:
0488 8991 ld R24,y+
048A 8FBF out 0x3f,R24
048C 9991 ld R25,y+
048E 8991 ld R24,y+
0490 .dbline 0 ; func end
0490 1895 reti
.area bss(ram, con, rel)
0000 .dbfile D:\sl279\8535\clock.c
0000 L121:
0000 .blkb 2
.area text(rom, con, rel)
0492 .dbfile D:\sl279\8535\clock.c
0492 .dbfunc s timer0_ovf _timer0_ovf fI
0492 .dbsym s i L121 i
.even
0492 _timer0_ovf::
0492 2A92 st -y,R2
0494 3A92 st -y,R3
0496 8A93 st -y,R24
0498 9A93 st -y,R25
049A EA93 st -y,R30
049C 2FB6 in R2,0x3f
049E 2A92 st -y,R2
04A0 .dbline -1
04A0 .dbline 281
; void timer0_ovf()
; {
04A0 .dbline 283
; static unsigned int i;
; TCNT0=0x83;
04A0 83E8 ldi R24,131
04A2 82BF out 0x32,R24
04A4 .dbline 284
; i++;
04A4 90910100 lds R25,L121+1
04A8 80910000 lds R24,L121
04AC 0196 adiw R24,1
04AE 90930100 sts L121+1,R25
04B2 80930000 sts L121,R24
04B6 .dbline 285
; if(i<400)
04B6 8039 cpi R24,144
04B8 E1E0 ldi R30,1
04BA 9E07 cpc R25,R30
04BC 20F4 brsh L122
04BE .dbline 286
; {
04BE .dbline 287
; PORTC^=0X01;
04BE 81E0 ldi R24,1
04C0 25B2 in R2,0x15
04C2 2826 eor R2,R24
04C4 25BA out 0x15,R2
04C6 .dbline 288
; }
04C6 L122:
04C6 .dbline 289
04C6 80E2 ldi R24,800
04C8 93E0 ldi R25,3
04CA 30900100 lds R3,L121+1
04CE 20900000 lds R2,L121
04D2 8215 cp R24,R2
04D4 9305 cpc R25,R3
04D6 30F4 brsh L124
04D8 .dbline 290
04D8 2224 clr R2
04DA 3324 clr R3
04DC 30920100 sts L121+1,R3
04E0 20920000 sts L121,R2
04E4 L124:
04E4 .dbline -2
04E4 .dbline 291
; if(i>800)
; i=0;
; }
04E4 L120:
04E4 2990 ld R2,y+
04E6 2FBE out 0x3f,R2
04E8 E991 ld R30,y+
04EA 9991 ld R25,y+
04EC 8991 ld R24,y+
04EE 3990 ld R3,y+
04F0 2990 ld R2,y+
04F2 .dbline 0 ; func end
04F2 1895 reti
.area bss(ram, con, rel)
0002 .dbfile D:\sl279\8535\clock.c
0002 _time::
0002 .blkb 3
0005 .dbsym s time _time X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -