📄 rtc.lis
字号:
0122 80930400 sts _k,R24
0126 .dbline 79
0126 ; if(k==10) //十进位
0126 8A30 cpi R24,10
0128 E0E0 ldi R30,0
012A 9E07 cpc R25,R30
012C 61F4 brne L12
012E X2:
012E .dbline 80
012E ; {i=0;j=0;k=0;}
012E .dbline 80
012E 30920100 sts _i+1,R3
0132 20920000 sts _i,R2
0136 .dbline 80
0136 30920300 sts _j+1,R3
013A 20920200 sts _j,R2
013E .dbline 80
013E 30920500 sts _k+1,R3
0142 20920400 sts _k,R2
0146 .dbline 80
0146 L12:
0146 .dbline 81
0146 ; }
0146 L10:
0146 .dbline 82
0146 ; }
0146 L8:
0146 .dbline -2
0146 L5:
0146 .dbline 0 ; func end
0146 2990 ld R2,y+
0148 2FBE out 0x3f,R2
014A F991 ld R31,y+
014C E991 ld R30,y+
014E 9991 ld R25,y+
0150 8991 ld R24,y+
0152 3990 ld R3,y+
0154 2990 ld R2,y+
0156 1895 reti
0158 .dbsym l n 1 I
0158 .dbend
0158 .dbfunc e keyScan _keyScan fV
0158 ; x -> R20,R21
0158 ; x -> R20,R21
0158 ; x -> R20,R21
0158 ; x -> R20,R21
0158 ; x -> R20,R21
0158 ; x -> R20,R21
.even
0158 _keyScan::
0158 4A93 st -y,R20
015A 5A93 st -y,R21
015C .dbline -1
015C .dbline 86
015C ; }
015C ; unsigned int adc_old;
015C ; void keyScan(void)
015C ; {
015C .dbline 87
015C ; if(adc_old!=adc_rel) //是否有键按下
015C 20900200 lds R2,_adc_rel
0160 30900300 lds R3,_adc_rel+1
0164 40900000 lds R4,_adc_old
0168 50900100 lds R5,_adc_old+1
016C 4214 cp R4,R2
016E 5304 cpc R5,R3
0170 21F0 breq L15
0172 X3:
0172 .dbline 88
0172 ; adc_old=adc_rel; //有键按下,读取键值
0172 30920100 sts _adc_old+1,R3
0176 20920000 sts _adc_old,R2
017A L15:
017A .dbline 89
017A ; display();
017A 0E940000 xcall _display
017E 4BC3 xjmp L18
0180 L17:
0180 .dbline 91
0180 ; while(s1) //是否为S1键
0180 ; { display();
0180 .dbline 91
0180 0E940000 xcall _display
0184 .dbline 92
0184 ; delay_ms(200); //按键消抖25MS
0184 08EC ldi R16,200
0186 10E0 ldi R17,0
0188 0E940000 xcall _delay_ms
018C .dbline 93
018C ; adc_old=adc_rel; //读取键值
018C 20900200 lds R2,_adc_rel
0190 30900300 lds R3,_adc_rel+1
0194 30920100 sts _adc_old+1,R3
0198 20920000 sts _adc_old,R2
019C FEC0 xjmp L21
019E L20:
019E .dbline 97
019E ;
019E ; //**********个位处理
019E ; while(!s1) //是否为S1键,不是S1时进入等待状态,并选中个位
019E ; {
019E .dbline 98
019E ; adc_old=adc_rel;
019E 20900200 lds R2,_adc_rel
01A2 30900300 lds R3,_adc_rel+1
01A6 30920100 sts _adc_old+1,R3
01AA 20920000 sts _adc_old,R2
01AE .dbline 99
01AE ; TIMSK2=0x00; //屏蔽定时器中断
01AE 2224 clr R2
01B0 20927000 sts 112,R2
01B4 .dbline 101
01B4 ;
01B4 ; PORTE=seg_table[i]&0x7f; //点亮个位及其小数点
01B4 80E0 ldi R24,<_seg_table
01B6 90E0 ldi R25,>_seg_table
01B8 E0910000 lds R30,_i
01BC F0910100 lds R31,_i+1
01C0 E80F add R30,R24
01C2 F91F adc R31,R25
01C4 8491 lpm R24,Z
01C6 8F77 andi R24,127
01C8 8EB9 out 0xe,R24
01CA .dbline 102
01CA ; PORTB=0xef; //点亮个位
01CA 8FEE ldi R24,239
01CC 85B9 out 0x5,R24
01CE .dbline 103
01CE ; delay_ms(1);
01CE 01E0 ldi R16,1
01D0 10E0 ldi R17,0
01D2 0E940000 xcall _delay_ms
01D6 .dbline 104
01D6 ; PORTE=seg_table[j]; //点亮十位
01D6 80E0 ldi R24,<_seg_table
01D8 90E0 ldi R25,>_seg_table
01DA E0910200 lds R30,_j
01DE F0910300 lds R31,_j+1
01E2 E80F add R30,R24
01E4 F91F adc R31,R25
01E6 2490 lpm R2,Z
01E8 2EB8 out 0xe,R2
01EA .dbline 105
01EA ; PORTB=0XDF; //点亮十位
01EA 8FED ldi R24,223
01EC 85B9 out 0x5,R24
01EE .dbline 106
01EE ; delay_ms(1);
01EE 01E0 ldi R16,1
01F0 10E0 ldi R17,0
01F2 0E940000 xcall _delay_ms
01F6 .dbline 107
01F6 ; PORTE=seg_table[k]; //点亮百位
01F6 80E0 ldi R24,<_seg_table
01F8 90E0 ldi R25,>_seg_table
01FA E0910400 lds R30,_k
01FE F0910500 lds R31,_k+1
0202 E80F add R30,R24
0204 F91F adc R31,R25
0206 2490 lpm R2,Z
0208 2EB8 out 0xe,R2
020A .dbline 108
020A ; PORTB=0XBF; //点亮百位
020A 8FEB ldi R24,191
020C 85B9 out 0x5,R24
020E .dbline 109
020E ; delay_ms(1);
020E 01E0 ldi R16,1
0210 10E0 ldi R17,0
0212 0E940000 xcall _delay_ms
0216 .dbline 110
0216 ; adc_old=adc_rel; //读取键值
0216 20900200 lds R2,_adc_rel
021A 30900300 lds R3,_adc_rel+1
021E 30920100 sts _adc_old+1,R3
0222 20920000 sts _adc_old,R2
0226 .dbline 111
0226 ; if(s2) //是否为S3 ,如果是S3,个位加1
0226 20900000 lds R2,_adc_old
022A 30900100 lds R3,_adc_old+1
022E 80E8 ldi R24,384
0230 91E0 ldi R25,1
0232 8215 cp R24,R2
0234 9305 cpc R25,R3
0236 08F0 brlo X33
0238 52C0 xjmp L23
023A X33:
023A X4:
023A C101 movw R24,R2
023C 8032 cpi R24,32
023E E2E0 ldi R30,2
0240 9E07 cpc R25,R30
0242 08F0 brlo X34
0244 4CC0 xjmp L23
0246 X34:
0246 X5:
0246 .dbline 112
0246 ; {
0246 .dbline 114
0246 ; int x;
0246 ; for(x=50;x>0;x--) //消抖且保证LED显示正常
0246 42E3 ldi R20,50
0248 50E0 ldi R21,0
024A L25:
024A .dbline 115
024A ; {
024A .dbline 116
024A ; PORTE=seg_table[i]&0x7f;
024A 80E0 ldi R24,<_seg_table
024C 90E0 ldi R25,>_seg_table
024E E0910000 lds R30,_i
0252 F0910100 lds R31,_i+1
0256 E80F add R30,R24
0258 F91F adc R31,R25
025A 8491 lpm R24,Z
025C 8F77 andi R24,127
025E 8EB9 out 0xe,R24
0260 .dbline 117
0260 ; PORTB=0xef;
0260 8FEE ldi R24,239
0262 85B9 out 0x5,R24
0264 .dbline 118
0264 ; delay_ms(1);
0264 01E0 ldi R16,1
0266 10E0 ldi R17,0
0268 0E940000 xcall _delay_ms
026C .dbline 119
026C ; PORTE=seg_table[j];
026C 80E0 ldi R24,<_seg_table
026E 90E0 ldi R25,>_seg_table
0270 E0910200 lds R30,_j
0274 F0910300 lds R31,_j+1
0278 E80F add R30,R24
027A F91F adc R31,R25
027C 2490 lpm R2,Z
027E 2EB8 out 0xe,R2
0280 .dbline 120
0280 ; PORTB=0XDF;
0280 8FED ldi R24,223
0282 85B9 out 0x5,R24
0284 .dbline 121
0284 ; delay_ms(1);
0284 01E0 ldi R16,1
0286 10E0 ldi R17,0
0288 0E940000 xcall _delay_ms
028C .dbline 122
028C ; PORTE=seg_table[k];
028C 80E0 ldi R24,<_seg_table
028E 90E0 ldi R25,>_seg_table
0290 E0910400 lds R30,_k
0294 F0910500 lds R31,_k+1
0298 E80F add R30,R24
029A F91F adc R31,R25
029C 2490 lpm R2,Z
029E 2EB8 out 0xe,R2
02A0 .dbline 123
02A0 ; PORTB=0XBF;
02A0 8FEB ldi R24,191
02A2 85B9 out 0x5,R24
02A4 .dbline 124
02A4 ; delay_ms(1);
02A4 01E0 ldi R16,1
02A6 10E0 ldi R17,0
02A8 0E940000 xcall _delay_ms
02AC .dbline 125
02AC ; }
02AC L26:
02AC .dbline 114
02AC 4150 subi R20,1
02AE 5040 sbci R21,0
02B0 .dbline 114
02B0 2224 clr R2
02B2 3324 clr R3
02B4 2416 cp R2,R20
02B6 3506 cpc R3,R21
02B8 0CF4 brge X35
02BA C7CF xjmp L25
02BC X35:
02BC X6:
02BC .dbline 126
02BC ; i++; //个位加1
02BC 80910000 lds R24,_i
02C0 90910100 lds R25,_i+1
02C4 0196 adiw R24,1
02C6 90930100 sts _i+1,R25
02CA 80930000 sts _i,R24
02CE .dbline 127
02CE ; if(i==10)
02CE 8A30 cpi R24,10
02D0 E0E0 ldi R30,0
02D2 9E07 cpc R25,R30
02D4 21F4 brne L29
02D6 X7:
02D6 .dbline 128
02D6 ; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -