📄 time.s
字号:
; step -> R10
; temp -> R22
.even
_timecal::
xcall push_gset5
sbiw R28,3
.dbline -1
.dbline 111
; void timecal(void)
; {
.dbline 113
; unsigned char temp,step;
; ocmj_write(0xf4);
ldi R16,244
xcall _ocmj_write
.dbline 114
; hz_tran(2,1,"输入时间");
ldi R24,<L39
ldi R25,>L39
std y+0,R24
std y+1,R25
ldi R18,1
ldi R16,2
xcall _hz_tran
.dbline 115
; hz_tran(1,2,"按");
ldi R24,<L40
ldi R25,>L40
std y+0,R24
std y+1,R25
ldi R18,2
ldi R16,1
xcall _hz_tran
.dbline 116
; asc_tran(4,36,"SHIFT");
ldi R24,<L41
ldi R25,>L41
std y+0,R24
std y+1,R25
ldi R18,36
ldi R16,4
xcall _asc_tran
.dbline 117
; hz_tran(5,2,"确定");
ldi R24,<L42
ldi R25,>L42
std y+0,R24
std y+1,R25
ldi R18,2
ldi R16,5
xcall _hz_tran
.dbline 118
; asc_tran(4,52,"__:__:__");
ldi R24,<L43
ldi R25,>L43
std y+0,R24
std y+1,R25
ldi R18,52
ldi R16,4
xcall _asc_tran
.dbline 119
; for(temp=0;temp<9;temp++)
clr R22
xjmp L47
L44:
.dbline 120
.dbline 121
ldi R24,<_time
ldi R25,>_time
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldi R24,95
std z+0,R24
.dbline 122
L45:
.dbline 119
inc R22
L47:
.dbline 119
cpi R22,9
brlo L44
.dbline 123
; {
; time[temp]='_';
; }
; time[2]=':';
ldi R24,58
sts _time+2,R24
.dbline 124
; time[5]=':';
sts _time+5,R24
.dbline 125
; time[8]=0;
clr R2
sts _time+8,R2
.dbline 126
; step=0;
clr R10
L51:
.dbline 128
; do
; {
.dbline 129
; temp=keypad();
xcall _keypad
mov R22,R16
.dbline 130
; if(((temp&0x7f)!=0x7f)&((temp&0x7f)<0x0a))
mov R24,R22
andi R24,127
cpi R24,127
breq L56
ldi R24,1
ldi R25,0
movw R14,R24
xjmp L57
L56:
clr R14
clr R15
L57:
mov R24,R22
andi R24,127
cpi R24,10
brsh L58
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L59
L58:
clr R12
clr R13
L59:
movw R2,R14
and R2,R12
and R3,R13
tst R2
brne X0
tst R3
brne X3
xjmp L54
X3:
X0:
.dbline 131
; {
.dbline 132
; switch (step)
mov R20,R10
clr R21
cpi R20,0
cpc R20,R21
breq L63
X1:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L66
cpi R20,2
ldi R30,0
cpc R21,R30
brne X4
xjmp L73
X4:
cpi R20,3
ldi R30,0
cpc R21,R30
brne X5
xjmp L77
X5:
cpi R20,4
ldi R30,0
cpc R21,R30
brne X6
xjmp L79
X6:
cpi R20,5
ldi R30,0
cpc R21,R30
brne X7
xjmp L83
X7:
xjmp L60
X2:
.dbline 133
; {
L63:
.dbline 134
; case 0:{
.dbline 135
; if (temp<3)
cpi R22,3
brlo X8
xjmp L61
X8:
.dbline 136
; {
.dbline 137
; hour=temp*10;
ldi R24,10
mul R24,R22
sts _hour,R0
.dbline 138
; time[0]=temp+0x30;
mov R24,R22
subi R24,208 ; addi 48
sts _time,R24
.dbline 139
; step++;
inc R10
.dbline 140
; }
.dbline 141
; break;
xjmp L61
L66:
.dbline 143
; }
; case 1:{
.dbline 144
; if(hour<20)
lds R24,_hour
cpi R24,20
brsh L67
.dbline 145
; {
.dbline 146
; hour+=temp;
mov R2,R24
add R2,R22
sts _hour,R2
.dbline 147
; time[1]=temp+0x30;
mov R24,R22
subi R24,208 ; addi 48
sts _time+1,R24
.dbline 148
; step++;
inc R10
.dbline 149
; }
xjmp L61
L67:
.dbline 151
; else
; {
.dbline 152
; if(temp<4)
cpi R22,4
brlo X9
xjmp L61
X9:
.dbline 153
; {
.dbline 154
; hour+=temp;
lds R2,_hour
add R2,R22
sts _hour,R2
.dbline 155
; time[1]=temp+0x30;
mov R24,R22
subi R24,208 ; addi 48
sts _time+1,R24
.dbline 156
; step++;
inc R10
.dbline 157
; }
.dbline 158
; }
.dbline 159
; break;
xjmp L61
L73:
.dbline 161
; }
; case 2:{
.dbline 162
; if (temp<6)
cpi R22,6
brlo X10
xjmp L61
X10:
.dbline 163
; {
.dbline 164
; minute=temp*10;
ldi R24,10
mul R24,R22
sts _minute,R0
.dbline 165
; time[3]=temp+0x30;
mov R24,R22
subi R24,208 ; addi 48
sts _time+3,R24
.dbline 166
; step++;
inc R10
.dbline 167
; }
.dbline 168
; break;
xjmp L61
L77:
.dbline 170
; }
; case 3:{
.dbline 171
; minute+=temp;
lds R2,_minute
add R2,R22
sts _minute,R2
.dbline 172
; time[4]=temp+0x30;
mov R24,R22
subi R24,208 ; addi 48
sts _time+4,R24
.dbline 173
; step++;
inc R10
.dbline 174
; break;
xjmp L61
L79:
.dbline 176
; }
; case 4:{
.dbline 177
; if(temp<6)
cpi R22,6
brsh L61
.dbline 178
; {
.dbline 179
; second=second*10;
lds R2,_second
ldi R24,10
mul R24,R2
sts _second,R0
.dbline 180
; time[6]=temp+0x30;
mov R24,R22
subi R24,208 ; addi 48
sts _time+6,R24
.dbline 181
; step++;
inc R10
.dbline 182
; }
.dbline 183
; break;
xjmp L61
L83:
.dbline 185
; }
; case 5:{
.dbline 186
; second+=temp;
lds R2,_second
add R2,R22
sts _second,R2
.dbline 187
; time[7]=temp+0x30;
mov R24,R22
subi R24,208 ; addi 48
sts _time+7,R24
.dbline 188
; step++;
inc R10
.dbline 189
; break;
xjmp L61
L60:
.dbline 192
; }
; default:
; {
.dbline 193
; for(step=0;step<9;step++)
clr R10
xjmp L88
L85:
.dbline 194
.dbline 195
ldi R24,<_time
ldi R25,>_time
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldi R24,95
std z+0,R24
.dbline 196
L86:
.dbline 193
inc R10
L88:
.dbline 193
mov R24,R10
cpi R24,9
brlo L85
.dbline 197
; {
; time[step]='_';
; }
; time[2]=':';
ldi R24,58
sts _time+2,R24
.dbline 198
; time[5]=':';
sts _time+5,R24
.dbline 199
; time[8]=0;
clr R2
sts _time+8,R2
.dbline 200
; step=0;
clr R10
.dbline 201
; }
.dbline 202
; }
L61:
.dbline 203
; cls(0,3,1,8);
ldi R24,8
std y+2,R24
ldi R24,1
std y+0,R24
ldi R18,3
ldi R19,0
clr R16
clr R17
xcall _cls
.dbline 204
; asc_tran(4,52,time);
ldi R24,<_time
ldi R25,>_time
std y+0,R24
std y+1,R25
ldi R18,52
ldi R16,4
xcall _asc_tran
.dbline 205
; }
L54:
.dbline 206
; }
L52:
.dbline 207
; while((temp&0x80)!=0x80);
mov R24,R22
andi R24,128
cpi R24,128
breq X11
xjmp L51
X11:
.dbline -2
.dbline 208
; }
L38:
adiw R28,3
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r step 10 c
.dbsym r temp 22 c
.dbend
.area bss(ram, con, rel)
.dbfile C:\work\mega128\mix_exp\time.c
_time::
.blkb 9
.dbsym e time _time A[9:9]c
_hour::
.blkb 1
.dbsym e hour _hour c
_minute::
.blkb 1
.dbsym e minute _minute c
_second::
.blkb 1
.dbsym e second _second c
.area data(ram, con, rel)
.dbfile C:\work\mega128\mix_exp\time.c
L43:
.blkb 9
.area idata
.byte 95,95,58,95,95,58,95,95,0
.area data(ram, con, rel)
.dbfile C:\work\mega128\mix_exp\time.c
L42:
.blkb 5
.area idata
.byte 200,183,182,168,0
.area data(ram, con, rel)
.dbfile C:\work\mega128\mix_exp\time.c
L41:
.blkb 6
.area idata
.byte 'S,'H,'I,'F,'T,0
.area data(ram, con, rel)
.dbfile C:\work\mega128\mix_exp\time.c
L40:
.blkb 3
.area idata
.byte 176,180,0
.area data(ram, con, rel)
.dbfile C:\work\mega128\mix_exp\time.c
L39:
.blkb 9
.area idata
.byte 202,228,200,235,202,177,188,228,0
.area data(ram, con, rel)
.dbfile C:\work\mega128\mix_exp\time.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -