📄 clock.lis
字号:
01FC 0AE0 ldi R16,10
01FE 162F mov R17,R22
0200 00D0 rcall mpy8s
0202 202E mov R2,R16
0204 2A0C add R2,R10
0206 80E0 ldi R24,<_time
0208 90E0 ldi R25,>_time
020A E42F mov R30,R20
020C FF27 clr R31
020E E80F add R30,R24
0210 F91F adc R31,R25
0212 2082 std z+0,R2
0214 .dbline 107
0214 242E mov R2,R20
0216 3324 clr R3
0218 220C lsl R2
021A 331C rol R3
021C 84E0 ldi R24,4
021E 90E0 ldi R25,0
0220 8219 sub R24,R2
0222 9309 sbc R25,R3
0224 E0E0 ldi R30,<_ledbuff
0226 F0E0 ldi R31,>_ledbuff
0228 8E0F add R24,R30
022A 9F1F adc R25,R31
022C 282E mov R2,R24
022E 392E mov R3,R25
0230 E22D mov R30,R2
0232 F32D mov R31,R3
0234 8081 ldd R24,z+0
0236 8F77 andi R24,127
0238 8083 std z+0,R24
023A .dbline 108
023A F6DE rcall _hextobcd
023C .dbline 109
023C L14:
023C .dbline 74
023C 4395 inc R20
023E L16:
023E .dbline 74
023E 4330 cpi R20,3
0240 08F4 brsh X1
0242 66CF rjmp L13
0244 X1:
0244 .dbline 110}
; while (t2==t3);
; t3=time[t1]/10;
; time[t1]=t3*10+t2;
; ledbuff[4-2*t1]&=0x7f;
; hextobcd();
; }
; }
0244 L12:
0244 00D0 rcall pop_gset3
0246 0895 ret
0248 .dbsym r t1 20 c
0248 .dbsym r t3 22 c
0248 .dbsym r t2 10 c
0248 .dbfunc s main _main fI
; i -> R20
; j -> R22
.even
0248 _main::
0248 .dbline 115{
; /*****************************************
; 主程序功能:演示了电脑时钟程序的工作过程
; *****************************************/
; void main(void)
; {
0248 .dbline 117
; unsigned char i,j;
; MCUCR=0;
0248 2224 clr R2
024A 25BE out 0x35,R2
024C .dbline 118
; flag=0;
024C 20920900 sts _flag,R2
0250 .dbline 119
; port_init(); //端口初始化
0250 D7DE rcall _port_init
0252 .dbline 120
; i=scan_key();
0252 00D0 rcall _scan_key
0254 202E mov R2,R16
0256 312E mov R3,R17
0258 422D mov R20,R2
025A 3AC0 rjmp L31
025C L30:
025C .dbline 122
; while(1)
; {
025C .dbline 123
; i=scan_key();
025C 00D0 rcall _scan_key
025E 202E mov R2,R16
0260 312E mov R3,R17
0262 422D mov R20,R2
0264 .dbline 124
; if (i!=0x7f)
0264 4F37 cpi R20,127
0266 61F0 breq L33
0268 .dbline 125
; {
0268 L35:
0268 .dbline 127
; do
; {
0268 .dbline 128
; j=scan_key();
0268 00D0 rcall _scan_key
026A 202E mov R2,R16
026C 312E mov R3,R17
026E 622D mov R22,R2
0270 .dbline 129
; display();
0270 2FDF rcall _display
0272 .dbline 130
; }
0272 L36:
0272 .dbline 131
; while (i==j);
0272 4617 cp R20,R22
0274 C9F3 breq L35
0276 .dbline 132
; if ((i&0x80)==0x80)
0276 842F mov R24,R20
0278 8078 andi R24,128
027A 8038 cpi R24,128
027C 09F4 brne L38
027E .dbline 133
; settime();//设定时间
027E 45DF rcall _settime
0280 L38:
0280 .dbline 134
; }
0280 L33:
0280 .dbline 135
; if(flag==1)
0280 80910900 lds R24,_flag
0284 8130 cpi R24,1
0286 19F5 brne L40
0288 .dbline 136
; {
0288 .dbline 137
; flag=0;
0288 2224 clr R2
028A 20920900 sts _flag,R2
028E .dbline 138
; if (time[2]>=60)
028E 80910800 lds R24,_time+2
0292 8C33 cpi R24,60
0294 40F0 brlo L42
0296 .dbline 139
; {
0296 .dbline 140
; time[2]-=60;
0296 8C53 subi R24,60
0298 80930800 sts _time+2,R24
029C .dbline 141
; time[1]++;
029C 80910700 lds R24,_time+1
02A0 8F5F subi R24,255 ; addi 1
02A2 80930700 sts _time+1,R24
02A6 .dbline 142
; }
02A6 L42:
02A6 .dbline 143
; if (time[1]>=60)
02A6 80910700 lds R24,_time+1
02AA 8C33 cpi R24,60
02AC 40F0 brlo L47
02AE .dbline 144
; {
02AE .dbline 145
; time[1]-=60;
02AE 8C53 subi R24,60
02B0 80930700 sts _time+1,R24
02B4 .dbline 146
; time[0]++;
02B4 80910600 lds R24,_time
02B8 8F5F subi R24,255 ; addi 1
02BA 80930600 sts _time,R24
02BE .dbline 147
; }
02BE L47:
02BE .dbline 148
; if (time[0]>=24)
02BE 80910600 lds R24,_time
02C2 8831 cpi R24,24
02C4 18F0 brlo L51
02C6 .dbline 149
; {
02C6 .dbline 150
; time[0]-=24;
02C6 8851 subi R24,24
02C8 80930600 sts _time,R24
02CC .dbline 151
; }
02CC L51:
02CC .dbline 152
; hextobcd();
02CC ADDE rcall _hextobcd
02CE .dbline 153
; }
02CE L40:
02CE .dbline 154
02CE 00DF rcall _display
02D0 .dbline 155
02D0 L31:
02D0 .dbline 121
02D0 C5CF rjmp L30
02D2 X2:
02D2 .dbline 156}
; display();
; }
; }
02D2 L29:
02D2 0895 ret
02D4 .dbsym r i 20 c
02D4 .dbsym r j 22 c
02D4 .dbfunc s timer1 _timer1 fI
.even
02D4 _timer1::
02D4 8A93 st -y,R24
02D6 9A93 st -y,R25
02D8 8FB7 in R24,0x3f
02DA 8A93 st -y,R24
02DC .dbline 161{
; /*****************************************
; T1溢出中断
; *****************************************/
; void timer1(void)
; {
02DC .dbline 162
; flag=1;
02DC 81E0 ldi R24,1
02DE 80930900 sts _flag,R24
02E2 .dbline 163
; time[2]++;
02E2 80910800 lds R24,_time+2
02E6 8F5F subi R24,255 ; addi 1
02E8 80930800 sts _time+2,R24
02EC .dbline 164
; TCNT1=0x85ee;
02EC 8EEE ldi R24,-31250
02EE 95E8 ldi R25,-123
02F0 90934D00 sts 76+1,R25
02F4 80934C00 sts 76,R24
02F8 .dbline 165}
; }
02F8 L53:
02F8 8991 ld R24,y+
02FA 8FBF out 0x3f,R24
02FC 9991 ld R25,y+
02FE 8991 ld R24,y+
0300 1895 reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -