📄 keyled.s
字号:
subi R24,255 ; addi 1
sts _clock+1,R24
.dbline 140
; if(clock[1]==10)
cpi R24,10
brne L79
X27:
.dbline 141
; {
.dbline 142
; clock[1]=0;
sts _clock+1,R2
.dbline 143
; clock[2]++;
lds R24,_clock+2
subi R24,255 ; addi 1
sts _clock+2,R24
.dbline 144
; if(clock[2]==10)
cpi R24,10
brne L84
X28:
.dbline 145
; {
.dbline 146
; clock[2]=0;
sts _clock+2,R2
.dbline 147
; clock[3]++;
lds R24,_clock+3
subi R24,255 ; addi 1
sts _clock+3,R24
.dbline 148
; if(clock[3]==10)
cpi R24,10
brne L89
X29:
.dbline 149
; {
.dbline 150
; clock[3]=0;
sts _clock+3,R2
.dbline 151
; clock[0]=0;
sts _clock,R2
.dbline 152
; clock[1]=0;
sts _clock+1,R2
.dbline 153
; clock[2]=0;
sts _clock+2,R2
.dbline 154
; }
L89:
.dbline 155
; }
L84:
.dbline 156
; }
L79:
.dbline 157
; }
L76:
.dbline 158
; }
L74:
.dbline 159
; }
L72:
.dbline 161
;
; display();
xcall _display
.dbline -2
L50:
.dbline 0 ; func end
ld R0,y+
out 0x3f,R0
ld R31,y+
ld R30,y+
ld R27,y+
ld R26,y+
ld R25,y+
ld R24,y+
ld R19,y+
ld R18,y+
ld R17,y+
ld R16,y+
ld R9,y+
ld R8,y+
ld R7,y+
ld R6,y+
ld R5,y+
ld R4,y+
ld R3,y+
ld R2,y+
ld R1,y+
ld R0,y+
reti
.dbend
.dbfunc e wait _wait fV
.even
_wait::
.dbline -1
.dbline 165
; } //timer0_com_isr
;
; void wait()
; {
xjmp L97
L96:
.dbline 167
; while((PINB&0xf0)!=0xf0)
; {
.dbline 168
; delay(20);
ldi R16,20
ldi R17,0
xcall _delay
L99:
.dbline 170
; while((PINB&0xf0)!=0xf0)
; ;
L100:
.dbline 169
in R24,0x16
andi R24,240
cpi R24,240
brne L99
X30:
.dbline 171
; }
L97:
.dbline 166
in R24,0x16
andi R24,240
cpi R24,240
brne L96
X31:
.dbline -2
L95:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 174
; }
; void main()
; {
.dbline 176
; unsigned char i;
; timer2=0;
clr R2
sts _timer2,R2
.dbline 177
; timer200=0;
clr R3
sts _timer200+1,R3
sts _timer200,R2
.dbline 178
; work_state=0;
sts _work_state,R2
.dbline 179
; time_change=0x00;
sts _time_change,R2
.dbline 180
; clock_start=1; //停止跑表
ldi R24,1
sts _clock_start,R24
.dbline 182
; /* 定时器0 定时 5 ms,general mode ,溢出 interrupt */
; TCCR0=0x07; //general mode
ldi R24,7
out 0x33,R24
.dbline 184
; //TCNT0=0x05;
; TCNT0=0xd7;
ldi R24,215
out 0x32,R24
.dbline 185
; TIMSK=0x01;
ldi R24,1
out 0x37,R24
.dbline 187
;
; DDRB=0x0f; //set PB7~PB4 PULL-UP resistor
ldi R24,15
out 0x17,R24
.dbline 188
; PORTB=0xfe;
ldi R24,254
out 0x18,R24
.dbline 189
; for(i=0;i<4;i++)
clr R20
xjmp L106
L103:
.dbline 190
; {
.dbline 191
; time[i]=0;
ldi R24,<_time
ldi R25,>_time
mov R30,R20
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 192
; clock[i]=0;
ldi R24,<_clock
ldi R25,>_clock
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 193
; }
L104:
.dbline 189
inc R20
L106:
.dbline 189
cpi R20,4
brlo L103
X32:
.dbline 194
; SEI();
sei
xjmp L108
L110:
.dbline 199
; while(1)
; {
;
; while((PINB&0xf0)==0xf0)
; {
.dbline 200
; delay(20);
ldi R16,20
ldi R17,0
xcall _delay
L113:
.dbline 202
; while((PINB&0xf0)==0xf0)
; ;
L114:
.dbline 201
in R24,0x16
andi R24,240
cpi R24,240
breq L113
X33:
.dbline 203
; }
L111:
.dbline 198
in R24,0x16
andi R24,240
cpi R24,240
breq L110
X34:
.dbline 204
; temp=PINB&0xf0;
in R24,0x16
andi R24,240
sts _temp,R24
.dbline 205
; switch(temp)
mov R22,R24
clr R23
cpi R22,176
ldi R30,0
cpc R23,R30
brne X66
xjmp L143
X66:
X35:
ldi R24,176
ldi R25,0
cp R24,R22
cpc R25,R23
brlt L194
X36:
L193:
cpi R22,112
ldi R30,0
cpc R23,R30
brne X67
xjmp L169
X67:
X37:
xjmp L117
L194:
cpi R22,208
ldi R30,0
cpc R23,R30
breq L126
X38:
cpi R22,208
ldi R30,0
cpc R23,R30
brge X68
xjmp L117
X68:
X39:
L195:
cpi R22,224
ldi R30,0
cpc R23,R30
breq L119
X40:
xjmp L117
L119:
.dbline 208
; {
; case 0xe0: //key 0
; if(work_state==0)
lds R2,_work_state
tst R2
brne L120
X41:
.dbline 209
; {
.dbline 210
; work_state=1; //跑表模式
ldi R24,1
sts _work_state,R24
.dbline 211
; clock_start=1; //跑表启动
sts _clock_start,R24
.dbline 212
; for(i=0;i<4;i++)
clr R20
xjmp L125
L122:
.dbline 213
; clock[i]=0;
ldi R24,<_clock
ldi R25,>_clock
mov R30,R20
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
L123:
.dbline 212
inc R20
L125:
.dbline 212
cpi R20,4
brlo L122
X42:
.dbline 214
; }
xjmp L121
L120:
.dbline 216
; else
; work_state=0x00;
clr R2
sts _work_state,R2
L121:
.dbline 217
; clock_start=0;
clr R2
sts _clock_start,R2
.dbline 218
; wait();
xcall _wait
.dbline 219
; break;
xjmp L117
L126:
.dbline 221
; case 0xd0: //key 1
; if(work_state==0x00)
lds R2,_work_state
tst R2
brne L127
X43:
.dbline 222
; {
.dbline 223
; if(time_change==0x00)
lds R2,_time_change
tst R2
brne L129
X44:
.dbline 224
; time_change=0x01;
ldi R24,1
sts _time_change,R24
xjmp L130
L129:
.dbline 225
; else if(time_change==0x01)
lds R24,_time_change
cpi R24,1
brne L131
X45:
.dbline 226
; time_change=0x02;
ldi R24,2
sts _time_change,R24
xjmp L132
L131:
.dbline 227
; else if(time_change==0x02)
lds R24,_time_change
cpi R24,2
brne L133
X46:
.dbline 228
; time_change=0x00;
clr R2
sts _time_change,R2
L133:
L132:
L130:
.dbline 229
; }
L127:
.dbline 231
;
; if(work_state==0x01) //跑表
lds R24,_work_state
cpi R24,1
brne L135
X47:
.dbline 232
; {if(clock_start==0x0) //跑表已启动
.dbline 232
lds R2,_clock_start
tst R2
brne L137
X48:
.dbline 233
; {
.dbline 234
; for(i=0;i<4;i++)
clr R20
xjmp L142
L139:
.dbline 235
; clock[i]=0;
ldi R24,<_clock
ldi R25,>_clock
mov R30,R20
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
L140:
.dbline 234
inc R20
L142:
.dbline 234
cpi R20,4
brlo L139
X49:
.dbline 236
; }
L137:
.dbline 237
; }
L135:
.dbline 239
;
; wait();
xcall _wait
.dbline 240
; break;
xjmp L117
L143:
.dbline 242
; case 0xb0: //key 2
; if(work_state==0x0) // 计时模式
lds R2,_work_state
tst R2
brne L144
X50:
.dbline 243
; {if(time_change==0x1) //change second
.dbline 243
lds R24,_time_change
cpi R24,1
brne L146
X51:
.dbline 244
; {time[0]++;
.dbline 244
lds R24,_time
subi R24,255 ; addi 1
sts _time,R24
.dbline 245
; if(time[0]==0xa)
cpi R24,10
brne L145
X52:
.dbline 246
; {time[0]=0;
.dbline 246
clr R2
sts _time,R2
.dbline 247
; time[1]++;
lds R24,_time+1
subi R24,255 ; addi 1
sts _time+1,R24
.dbline 248
; if(time[1]==0x6)
cpi R24,6
brne L145
X53:
.dbline 249
; time[1]=0;
sts _time+1,R2
.dbline 250
; }
.dbline 251
; }
xjmp L145
L146:
.dbline 252
; else if(time_change==0x02) //change minute
lds R24,_time_change
cpi R24,2
brne L145
X54:
.dbline 253
; {
.dbline 254
; time[2]++;
lds R24,_time+2
subi R24,255 ; addi 1
sts _time+2,R24
.dbline 255
; if(time[2]==0xa)
cpi R24,10
brne L145
X55:
.dbline 256
; {time[2]=0;
.dbline 256
clr R2
sts _time+2,R2
.dbline 257
; time[3]++;
lds R24,_time+3
subi R24,255 ; addi 1
sts _time+3,R24
.dbline 258
; if(time[3]==0x6)
cpi R24,6
brne L145
X56:
.dbline 259
; time[3]=0;
sts _time+3,R2
.dbline 260
; }
.dbline 261
; }
.dbline 262
; }
xjmp L145
L144:
.dbline 263
; else if(clock_start==0x00) //跑表模式,已经启动
lds R2,_clock_start
tst R2
brne L167
X57:
.dbline 264
; clock_start=1; //暂停
ldi R24,1
sts _clock_start,R24
xjmp L168
L167:
.dbline 266
; else
; clock_start=0;
clr R2
sts _clock_start,R2
L168:
L145:
.dbline 267
; wait();
xcall _wait
.dbline 268
; break;
xjmp L117
L169:
.dbline 270
; case 0x70: //key 3
; if(work_state==0x00) // 计时模式
lds R2,_work_state
tst R2
brne L170
X58:
.dbline 271
; {
.dbline 272
; if(time_change==0x01) // 秒
lds R24,_time_change
cpi R24,1
brne L172
X59:
.dbline 273
; {
.dbline 274
; time[0]--;
lds R24,_time
subi R24,1
sts _time,R24
.dbline 275
; if(time[0]==0xff)
cpi R24,255
brne L173
X60:
.dbline 276
; {
.dbline 277
; time[0]=9;
ldi R24,9
sts _time,R24
.dbline 278
; time[1]--;
lds R24,_time+1
subi R24,1
sts _time+1,R24
.dbline 279
; if(time[1]==0xff)
cpi R24,255
brne L173
X61:
.dbline 280
; time[1]=5;
ldi R24,5
sts _time+1,R24
.dbline 281
; }
.dbline 282
; }
xjmp L173
L172:
.dbline 283
; else if(time_change==0x02) //decrease minute
lds R24,_time_change
cpi R24,2
brne L181
X62:
.dbline 284
; {
.dbline 285
; time[2]--;
lds R24,_time+2
subi R24,1
sts _time+2,R24
.dbline 286
; if(time[2]==0xff)
cpi R24,255
brne L184
X63:
.dbline 287
; {
.dbline 288
; time[2]=9;
ldi R24,9
sts _time+2,R24
.dbline 289
; time[3]--;
lds R24,_time+3
subi R24,1
sts _time+3,R24
.dbline 290
; if(time[3]==0xff)
cpi R24,255
brne L189
X64:
.dbline 291
; time[3]=5;
ldi R24,5
sts _time+3,R24
L189:
.dbline 292
; }
L184:
.dbline 293
; }
L181:
L173:
.dbline 294
; }
L170:
.dbline 295
; wait();
xcall _wait
.dbline 296
; break;
.dbline 298
; default:
; break;
L117:
.dbline 301
;
; }
; }
L108:
.dbline 195
xjmp L111
X65:
.dbline -2
L102:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\按键显示\keyled.c
_clock::
.blkb 4
.dbsym e clock _clock A[4:4]c
_time::
.blkb 4
.dbsym e time _time A[4:4]c
_clock_start::
.blkb 1
.dbsym e clock_start _clock_start c
_time_change::
.blkb 1
.dbsym e time_change _time_change c
_work_state::
.blkb 1
.dbsym e work_state _work_state c
_timer200::
.blkb 2
.dbsym e timer200 _timer200 i
_timer2::
.blkb 1
.dbsym e timer2 _timer2 c
_temp::
.blkb 1
.dbsym e temp _temp c
;
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -