📄 rtc.s
字号:
ldi R25,>_seg_table
lds R30,_j
lds R31,_j+1
add R30,R24
adc R31,R25
lpm R24,Z
andi R24,127
out 0xe,R24
.dbline 164
; PORTB=0XDF; //点亮十位
ldi R24,223
out 0x5,R24
.dbline 165
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 166
; PORTE=seg_table[k]; //点亮百位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_k
lds R31,_k+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 167
; PORTB=0XBF; //点亮百位
ldi R24,191
out 0x5,R24
.dbline 168
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 169
; adc_old=adc_rel;
lds R2,_adc_rel
lds R3,_adc_rel+1
sts _adc_old+1,R3
sts _adc_old,R2
.dbline 170
; if(s2)
lds R20,_adc_old
lds R21,_adc_old+1
ldi R24,384
ldi R25,1
cp R24,R20
cpc R25,R21
brlo X40
xjmp L42
X40:
X13:
cpi R20,32
ldi R30,2
cpc R21,R30
brlo X41
xjmp L42
X41:
X14:
.dbline 171
; {
.dbline 173
; int x;
; for(x=50;x>0;x--)
ldi R20,50
ldi R21,0
L44:
.dbline 175
; //display();
; {
.dbline 176
; PORTE=seg_table[i];
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_i
lds R31,_i+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 177
; PORTB=0xef;
ldi R24,239
out 0x5,R24
.dbline 178
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 179
; PORTE=seg_table[j]&0x7f;
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_j
lds R31,_j+1
add R30,R24
adc R31,R25
lpm R24,Z
andi R24,127
out 0xe,R24
.dbline 180
; PORTB=0XDF;
ldi R24,223
out 0x5,R24
.dbline 181
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 182
; PORTE=seg_table[k];
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_k
lds R31,_k+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 183
; PORTB=0XBF;
ldi R24,191
out 0x5,R24
.dbline 184
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 185
; }
L45:
.dbline 173
subi R20,1
sbci R21,0
.dbline 173
clr R2
clr R3
cp R2,R20
cpc R3,R21
brge X42
xjmp L44
X42:
X15:
.dbline 186
; j++; //加1
lds R24,_j
lds R25,_j+1
adiw R24,1
sts _j+1,R25
sts _j,R24
.dbline 187
; if(j==6)
cpi R24,6
ldi R30,0
cpc R25,R30
brne L48
X16:
.dbline 188
; {
.dbline 189
; j=0;
sts _j+1,R3
sts _j,R2
.dbline 190
; }
L48:
.dbline 191
; }
L42:
.dbline 192
; if(s4)
lds R20,_adc_old
lds R21,_adc_old+1
ldi R24,720
ldi R25,2
cp R24,R20
cpc R25,R21
brlo X43
xjmp L50
X43:
X17:
cpi R20,16
ldi R30,3
cpc R21,R30
brlo X44
xjmp L50
X44:
X18:
.dbline 193
; {
.dbline 195
; int x;
; for(x=50;x>0;x--) //消抖且保证LED显示正常
ldi R20,50
ldi R21,0
L52:
.dbline 196
; {
.dbline 197
; PORTE=seg_table[i]; //点亮个位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_i
lds R31,_i+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 198
; PORTB=0xef; //点亮个位
ldi R24,239
out 0x5,R24
.dbline 199
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 200
; PORTE=seg_table[j]&0x7f; //点亮十位及其小数点
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_j
lds R31,_j+1
add R30,R24
adc R31,R25
lpm R24,Z
andi R24,127
out 0xe,R24
.dbline 201
; PORTB=0XDF; //点亮十位
ldi R24,223
out 0x5,R24
.dbline 202
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 203
; PORTE=seg_table[k]; //点亮百位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_k
lds R31,_k+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 204
; PORTB=0XBF; //点亮百位
ldi R24,191
out 0x5,R24
.dbline 205
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 206
; }
L53:
.dbline 195
subi R20,1
sbci R21,0
.dbline 195
clr R2
clr R3
cp R2,R20
cpc R3,R21
brge X45
xjmp L52
X45:
X19:
.dbline 207
; j--; //减1
lds R24,_j
lds R25,_j+1
sbiw R24,1
sts _j+1,R25
sts _j,R24
.dbline 208
; if(j==-1)
cpi R24,255
ldi R30,255
cpc R25,R30
brne L56
X20:
.dbline 209
; {
.dbline 210
; j=5;
ldi R24,5
ldi R25,0
sts _j+1,R25
sts _j,R24
.dbline 211
; }
L56:
.dbline 212
; }
L50:
.dbline 213
; }
L40:
.dbline 156
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,3
ldi R30,0
cpc R25,R30
brlo X46
xjmp L39
X46:
X21:
.dbline 214
; delay_ms(200);
ldi R16,200
ldi R17,0
xcall _delay_ms
.dbline 215
; adc_old=adc_rel;
lds R2,_adc_rel
lds R3,_adc_rel+1
sts _adc_old+1,R3
sts _adc_old,R2
xjmp L59
L58:
.dbline 219
;
; //******百位处理
; while(!s1) //同上
; {
.dbline 220
; adc_old=adc_rel;
lds R2,_adc_rel
lds R3,_adc_rel+1
sts _adc_old+1,R3
sts _adc_old,R2
.dbline 221
; TIMSK2=0x00;
clr R2
sts 112,R2
.dbline 222
; PORTE=seg_table[i]; //点亮个位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_i
lds R31,_i+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 223
; PORTB=0xef; //点亮个位
ldi R24,239
out 0x5,R24
.dbline 224
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 225
; PORTE=seg_table[j]; //点亮十位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_j
lds R31,_j+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 226
; PORTB=0XDF; //点亮十位
ldi R24,223
out 0x5,R24
.dbline 227
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 228
; PORTE=seg_table[k]&0x7f; //点亮百位及其小数点
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_k
lds R31,_k+1
add R30,R24
adc R31,R25
lpm R24,Z
andi R24,127
out 0xe,R24
.dbline 229
; PORTB=0XBF; //点亮百位
ldi R24,191
out 0x5,R24
.dbline 230
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 231
; adc_old=adc_rel;
lds R2,_adc_rel
lds R3,_adc_rel+1
sts _adc_old+1,R3
sts _adc_old,R2
.dbline 232
; if(s2)
lds R20,_adc_old
lds R21,_adc_old+1
ldi R24,384
ldi R25,1
cp R24,R20
cpc R25,R21
brlo X47
xjmp L61
X47:
X22:
cpi R20,32
ldi R30,2
cpc R21,R30
brlo X48
xjmp L61
X48:
X23:
.dbline 233
; {
.dbline 235
; int x;
; for(x=50;x>0;x--)
ldi R20,50
ldi R21,0
L63:
.dbline 236
; {
.dbline 237
; PORTE=seg_table[i]; //点亮个位及其小数点
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_i
lds R31,_i+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 238
; PORTB=0xef; //点亮个位
ldi R24,239
out 0x5,R24
.dbline 239
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 240
; PORTE=seg_table[j]; //点亮十位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_j
lds R31,_j+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 241
; PORTB=0XDF; //点亮十位
ldi R24,223
out 0x5,R24
.dbline 242
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 243
; PORTE=seg_table[k]&0x7f; //点亮百位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_k
lds R31,_k+1
add R30,R24
adc R31,R25
lpm R24,Z
andi R24,127
out 0xe,R24
.dbline 244
; PORTB=0XBF; //点亮百位
ldi R24,191
out 0x5,R24
.dbline 245
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 246
; }
L64:
.dbline 235
subi R20,1
sbci R21,0
.dbline 235
clr R2
clr R3
cp R2,R20
cpc R3,R21
brge X49
xjmp L63
X49:
X24:
.dbline 247
; k++; //加1
lds R24,_k
lds R25,_k+1
adiw R24,1
sts _k+1,R25
sts _k,R24
.dbline 248
; if(k==10)
cpi R24,10
ldi R30,0
cpc R25,R30
brne L67
X25:
.dbline 249
; {
.dbline 250
; k=0;
sts _k+1,R3
sts _k,R2
.dbline 251
; }
L67:
.dbline 252
; }
L61:
.dbline 253
; if(s4)
lds R20,_adc_old
lds R21,_adc_old+1
ldi R24,720
ldi R25,2
cp R24,R20
cpc R25,R21
brlo X50
xjmp L69
X50:
X26:
cpi R20,16
ldi R30,3
cpc R21,R30
brlo X51
xjmp L69
X51:
X27:
.dbline 254
; {int x;
.dbline 255
; for(x=50;x>0;x--)
ldi R20,50
ldi R21,0
L71:
.dbline 256
; {
.dbline 257
; PORTE=seg_table[i]; //点亮个位及其小数点
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_i
lds R31,_i+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 258
; PORTB=0xef; //点亮个位
ldi R24,239
out 0x5,R24
.dbline 259
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 260
; PORTE=seg_table[j]; //点亮十位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_j
lds R31,_j+1
add R30,R24
adc R31,R25
lpm R2,Z
out 0xe,R2
.dbline 261
; PORTB=0XDF; //点亮十位
ldi R24,223
out 0x5,R24
.dbline 262
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 263
; PORTE=seg_table[k]&0x7f; //点亮百位
ldi R24,<_seg_table
ldi R25,>_seg_table
lds R30,_k
lds R31,_k+1
add R30,R24
adc R31,R25
lpm R24,Z
andi R24,127
out 0xe,R24
.dbline 264
; PORTB=0XBF; //点亮百位
ldi R24,191
out 0x5,R24
.dbline 265
; delay_ms(1);
ldi R16,1
ldi R17,0
xcall _delay_ms
.dbline 266
; }
L72:
.dbline 255
subi R20,1
sbci R21,0
.dbline 255
clr R2
clr R3
cp R2,R20
cpc R3,R21
brge X52
xjmp L71
X52:
X28:
.dbline 267
; k--; //减1
lds R24,_k
lds R25,_k+1
sbiw R24,1
sts _k+1,R25
sts _k,R24
.dbline 268
; if(k==-1)
cpi R24,255
ldi R30,255
cpc R25,R30
brne L75
X29:
.dbline 269
; {
.dbline 270
; k=9;
ldi R24,9
ldi R25,0
sts _k+1,R25
sts _k,R24
.dbline 271
; }
L75:
.dbline 272
; }
L69:
.dbline 273
; }
L59:
.dbline 218
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,3
ldi R30,0
cpc R25,R30
brlo X53
xjmp L58
X53:
X30:
xjmp L78
L77:
.dbline 275
; //***********
; while(s1){adc_old=adc_rel;} //跳出
.dbline 275
lds R2,_adc_rel
lds R3,_adc_rel+1
sts _adc_old+1,R3
sts _adc_old,R2
.dbline 275
L78:
.dbline 275
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,3
ldi R30,0
cpc R25,R30
brlo L77
X31:
.dbline 276
; }
L18:
.dbline 90
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,3
ldi R30,0
cpc R25,R30
brsh X54
xjmp L17
X54:
X32:
.dbline -2
L14:
.dbline 0 ; func end
ld R21,y+
ld R20,y+
ret
.dbsym r x 20 I
.dbsym r x 20 I
.dbsym r x 20 I
.dbsym r x 20 I
.dbsym r x 20 I
.dbsym r x 20 I
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 279
; }
; void main(void)
; {
.dbline 280
; adc_init();//AD初始化
xcall _adc_init
.dbline 281
; timer2_init();//定时器初始化
xcall _timer2_init
.dbline 282
; portE_B();
xcall _portE_B
.dbline 283
; TIMSK2=1;
ldi R24,1
sts 112,R24
.dbline 284
; SEI();//使能全局中断
sei
xjmp L82
L81:
.dbline 286
; while(1)
; {
.dbline 287
; TIMSK2=1;
ldi R24,1
sts 112,R24
.dbline 288
; display(); //显示
xcall _display
.dbline 289
; keyScan(); //键值扫描
xcall _keyScan
.dbline 290
; }
L82:
.dbline 285
xjmp L81
X55:
.dbline -2
L80:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile C:\TDdownload\zxy\169demo\169RTC\rtc.c
_adc_old::
.blkb 2
.dbsym e adc_old _adc_old i
_adc_rel::
.blkb 2
.dbsym e adc_rel _adc_rel i
; }
;
;
;
;
;
;
;
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -