📄 playedit.s
字号:
.module playedit.c
.area text(rom, con, rel)
.dbfile E:\software\MP3程序\PlayEdit\playedit.c
.dbfunc e Del_Edit _Del_Edit fV
; move -> R14
; point -> R22,R23
; temp -> y+272
; FILE -> y+16
; active -> y+8
; day -> R10
; data -> R20
.even
_Del_Edit::
xcall push_gset5
mov R20,R16
sbiw R28,63
sbiw R28,63
sbiw R28,63
sbiw R28,63
sbiw R28,23 ; offset = 275
.dbline -1
.dbline 27
; #include <iom64v.h>
; #include <macros.h>
; #include <string.h>
; #include <stdio.h>
; #include "../Vs1003/vs1003.h"
; #include "../Ch375b/375interface.h"
; #include "../Keyboard/key.h"
; #include "../Ds1302/ds1302.h"
; #include <eeprom.h>
; extern uchar keybuf;
; extern uchar const nAsciiDot[];
; extern uchar const please_time[];
; extern unsigned char const full[];
; extern unsigned char const show_main[];
;
; typedef struct fileinfor{ //当前时间的数据结构
; uchar filename[28]; //文件名
; uchar active; //有效标志
; uchar hour; /*时*/
; uchar min; /*分*/
; uchar sec; /*秒*/
; };
; /*
; 删除文件
; */
; void Del_Edit(uchar data)
; {
L2:
.dbline 36
; uchar day;
; uchar temp;
; uchar active[8];
; uchar move;
; struct fileinfor FILE[8];
; uint point;
; //检查空间
; RELOAD:
; point = 0;
clr R22
clr R23
.dbline 37
; point += 8*data*sizeof(FILE[0]);
ldi R24,8
mul R24,R20
ldi R24,32
mul R24,R0
add R22,R0
adc R23,R1
.dbline 39
;
; for(day=0; day<8; day++)
clr R10
xjmp L6
L3:
.dbline 40
.dbline 41
subi R22,224 ; offset = 32
sbci R23,255
.dbline 42
ldi R24,32
ldi R25,0
std y+1,R25
std y+0,R24
mul R24,R10
movw R18,R0
movw R24,R28
adiw R24,16
add R18,R24
adc R19,R25
movw R16,R22
xcall _EEPROMReadBytes
.dbline 43
L4:
.dbline 39
inc R10
L6:
.dbline 39
mov R24,R10
cpi R24,8
brlo L3
.dbline 44
; {
; point += sizeof(FILE[day]);
; EEPROMReadBytes(point,&FILE[day],sizeof(FILE[day]));
; }
; day = 0;
clr R10
.dbline 45
; for(temp=0; temp<8; temp++)
clr R0
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R0
xjmp L10
L7:
.dbline 46
; {
.dbline 47
; if(FILE[temp].active == 0x55) {active[day] = temp;day++;}
ldi R24,32
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
ldd R0,z+0
mul R24,R0
movw R30,R0
movw R24,R28
adiw R24,44
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,85
brne L11
.dbline 47
.dbline 47
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
movw R26,R28
subi R26,240 ; addi 272
sbci R27,254
ld R0,x
std z+0,R0
.dbline 47
inc R10
.dbline 47
L11:
.dbline 48
L8:
.dbline 45
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
ldd R0,z+0
inc R0
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R0
L10:
.dbline 45
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
ldd R24,z+0
cpi R24,8
brlo L7
.dbline 49
; }
; active[day] = 0xff;
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldi R24,255
std z+0,R24
.dbline 50
; Print_val(day);
mov R16,R10
clr R17
xcall _Print_val
.dbline 51
; day = 0;
clr R10
.dbline 52
; temp = 0;
clr R0
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R0
xjmp L15
L14:
.dbline 53
; while(1){ //显示出来
.dbline 54
; show_clear();
xcall _show_clear
.dbline 55
; show_lcd(0, 0, 192, 2, &show_main[0],0);
clr R2
clr R3
std y+7,R3
std y+6,R2
ldi R24,<_show_main
ldi R25,>_show_main
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,192
std y+1,R25
std y+0,R24
clr R18
clr R19
clr R16
clr R17
xcall _show_lcd
.dbline 56
; move = 0;
clr R14
.dbline 57
; if(active[day] == 0xff) goto NEXT;
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
brne L17
.dbline 57
xjmp L19
L17:
.dbline 58
; if(active[day] != 0xff){move += 1;
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
breq L20
.dbline 58
.dbline 58
inc R14
.dbline 59
; show_name(&FILE[active[day]],2,0);
clr R2
clr R3
std y+1,R3
std y+0,R2
ldi R18,2
ldi R19,0
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R16,R0
movw R24,R28
adiw R24,16
add R16,R24
adc R17,R25
xcall _show_name
.dbline 60
; }
L20:
.dbline 61
; if(active[day+1] == 0xff) goto NEXT;
movw R24,R28
adiw R24,9
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
brne L22
.dbline 61
xjmp L19
L22:
.dbline 62
; if(active[day+1] != 0xff) {move += 1;
movw R24,R28
adiw R24,9
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
breq L25
.dbline 62
.dbline 62
inc R14
.dbline 63
; show_name(&FILE[active[day+1]],4,0);
clr R2
clr R3
std y+1,R3
std y+0,R2
ldi R18,4
ldi R19,0
movw R24,R28
adiw R24,9
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R16,R0
movw R24,R28
adiw R24,16
add R16,R24
adc R17,R25
xcall _show_name
.dbline 64
; }
L25:
.dbline 65
; if(active[day+2] == 0xff) goto NEXT;
movw R24,R28
adiw R24,10
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
brne L29
.dbline 65
xjmp L19
L29:
.dbline 66
; if(active[day+2] != 0xff) {move += 1;
movw R24,R28
adiw R24,10
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
breq L32
.dbline 66
.dbline 66
inc R14
.dbline 67
; show_name(&FILE[active[day+2]],6,0);
clr R2
clr R3
std y+1,R3
std y+0,R2
ldi R18,6
ldi R19,0
movw R24,R28
adiw R24,10
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R16,R0
movw R24,R28
adiw R24,16
add R16,R24
adc R17,R25
xcall _show_name
.dbline 68
; }
L32:
L19:
.dbline 70
; NEXT:
; if(move != 0){
tst R14
brne X4
xjmp L36
X4:
.dbline 70
.dbline 71
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
ldd R12,z+0
clr R13
tst R12
brne X0
tst R13
breq L41
X0:
movw R24,R12
cpi R24,1
ldi R30,0
cpc R25,R30
breq L42
cpi R24,2
ldi R30,0
cpc R25,R30
brne X5
xjmp L44
X5:
xjmp L38
X1:
.dbline 71
; switch(temp){
L41:
.dbline 72
; case 0:show_name(&FILE[active[day]],2,1);break;
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,2
ldi R19,0
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R16,R0
movw R24,R28
adiw R24,16
add R16,R24
adc R17,R25
xcall _show_name
.dbline 72
xjmp L39
L42:
.dbline 73
; case 1:show_name(&FILE[active[day+1]],4,1);break;
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,4
ldi R19,0
movw R24,R28
adiw R24,9
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R16,R0
movw R24,R28
adiw R24,16
add R16,R24
adc R17,R25
xcall _show_name
.dbline 73
xjmp L39
L44:
.dbline 74
; case 2:show_name(&FILE[active[day+2]],6,1);break;
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,6
ldi R19,0
movw R24,R28
adiw R24,10
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R16,R0
movw R24,R28
adiw R24,16
add R16,R24
adc R17,R25
xcall _show_name
.dbline 74
L38:
L39:
.dbline 76
; }
; }
L36:
.dbline 77
; KEYBUF_NULL;
clr R2
sts _keybuf,R2
.dbline 77
L46:
.dbline 78
L47:
.dbline 78
; while(keybuf == NULL);
lds R2,_keybuf
tst R2
breq L46
.dbline 79
; if(keybuf == K_UP){
mov R24,R2
cpi R24,3
brne L49
.dbline 79
.dbline 80
; if(--temp == 255){
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
ldd R24,z+0
subi R24,1
mov R2,R24
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R2
cpi R24,255
brne L51
.dbline 80
.dbline 81
; temp = 0;
clr R0
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R0
.dbline 82
; if(day != 0) {day -= 3;temp=2;}
tst R10
breq L53
.dbline 82
.dbline 82
mov R24,R10
subi R24,3
mov R10,R24
.dbline 82
ldi R24,2
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R24
.dbline 82
L53:
.dbline 83
; }
L51:
.dbline 84
; }
L49:
.dbline 85
; if(keybuf == K_DOWN){
lds R24,_keybuf
cpi R24,1
brne L55
.dbline 85
.dbline 86
; if(move !=0){
tst R14
breq L57
.dbline 86
.dbline 87
; if(++temp == move){
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
ldd R24,z+0
subi R24,255 ; addi 1
mov R2,R24
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R2
cp R24,R14
brne L59
.dbline 87
.dbline 88
; temp = 0;
clr R0
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
std z+0,R0
.dbline 89
; if(move == 3) day += 3;
mov R24,R14
cpi R24,3
brne L61
.dbline 89
mov R24,R10
subi R24,253 ; addi 3
mov R10,R24
L61:
.dbline 90
L59:
.dbline 90
; } }
L57:
.dbline 91
; }
L55:
.dbline 92
; if(keybuf == K_ESC) break;
lds R24,_keybuf
cpi R24,5
brne L63
.dbline 92
xjmp L16
L63:
.dbline 93
; if(keybuf != K_ENTER) continue;
lds R24,_keybuf
cpi R24,4
breq L65
.dbline 93
xjmp L15
L65:
.dbline 95
;
; point = 0;
clr R22
clr R23
.dbline 96
; point += 8*data*sizeof(FILE[0]);
ldi R24,8
mul R24,R20
ldi R24,32
mul R24,R0
add R22,R0
adc R23,R1
.dbline 97
; point += sizeof(FILE[0]);
subi R22,224 ; offset = 32
sbci R23,255
.dbline 98
movw R30,R28
subi R30,240 ; addi 272
sbci R31,254
ldd R2,z+0
clr R3
movw R30,R28
subi R30,239 ; addi 273
sbci R31,254
std z+1,R3
std z+0,R2
movw R0,R2
tst R2
brne X2
tst R3
breq L70
X2:
movw R30,R28
subi R30,239 ; addi 273
sbci R31,254
ldd R24,z+0
ldd R25,z+1
cpi R24,1
ldi R30,0
cpc R25,R30
brne X6
xjmp L72
X6:
cpi R24,2
ldi R30,0
cpc R25,R30
brne X7
xjmp L77
X7:
cpi R24,3
ldi R30,0
cpc R25,R30
brne X8
xjmp L82
X8:
xjmp L2
X3:
.dbline 98
; switch(temp){
L70:
.dbline 99
; case 0:FILE[active[day]].active = 0xff;
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R30,R0
movw R24,R28
adiw R24,44
add R30,R24
adc R31,R25
ldi R24,255
std z+0,R24
.dbline 100
; point += active[day]*sizeof(FILE[0]);
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
add R22,R0
adc R23,R1
.dbline 101
; EEPROMWriteBytes(point,&FILE[active[day]],sizeof(FILE[0]));
clr R25
std y+1,R25
std y+0,R24
movw R24,R28
adiw R24,8
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R18,R0
movw R24,R28
adiw R24,16
add R18,R24
adc R19,R25
movw R16,R22
xcall _EEPROMWriteBytes
.dbline 102
; break;
xjmp L2
L72:
.dbline 103
; case 1:FILE[active[day+1]].active = 0xff;
movw R24,R28
adiw R24,9
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R30,R0
movw R24,R28
adiw R24,44
add R30,R24
adc R31,R25
ldi R24,255
std z+0,R24
.dbline 104
; point += active[day+1]*sizeof(FILE[0]);
movw R24,R28
adiw R24,9
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
add R22,R0
adc R23,R1
.dbline 105
; EEPROMWriteBytes(point,&FILE[active[day+1]],sizeof(FILE[0]));
clr R25
std y+1,R25
std y+0,R24
movw R24,R28
adiw R24,9
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R18,R0
movw R24,R28
adiw R24,16
add R18,R24
adc R19,R25
movw R16,R22
xcall _EEPROMWriteBytes
.dbline 106
; break;
xjmp L2
L77:
.dbline 107
; case 2:FILE[active[day+2]].active = 0xff;
movw R24,R28
adiw R24,10
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,32
mul R24,R2
movw R30,R0
movw R24,R28
adiw R24,44
add R30,R24
adc R31,R25
ldi R24,255
std z+0,R24
.dbline 108
; point += active[day+2]*sizeof(FILE[0]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -