📄 lin.s
字号:
; mp3 -> R20
.even
_adjust_cheng::
xcall push_gset2
mov R20,R16
.dbline -1
.dbline 22
; #include <iom64v.h>
; #include <macros.h>
; #include <string.h>
; #include <stdio.h>
; #include "./lin.h"
; #include <eeprom.h>
; #include "../Keyboard/key.h"
; #include <eeprom.h>
;
; #define uchar unsigned char
; #define uint unsigned int
;
; #define CONFIG_1 2047 //通道存储器地址
; /*
; *通道自动调节
; *当有播放任务时自动切换MP3通道
; */
; #define SING_A 7
; #define SING_B 6
; #define SING_C 5
; void adjust_cheng(uchar mp3) //当MP3不为0时为一个强制参数打开MP3通道
; {
.dbline 24
; uchar ii;
; DDRE |= (1<<5)|(1<<6)|(1<<7);
in R24,0x2
ori R24,224
out 0x2,R24
.dbline 25
; PORTE &= 0x1f;
in R24,0x3
andi R24,31
out 0x3,R24
.dbline 26
; if(mp3 != 0) {PORTE |= 1<<SING_C; PORTF |= 1<<3; return;}
tst R20
breq L2
.dbline 26
.dbline 26
sbi 0x3,5
.dbline 26
lds R24,98
ori R24,8
sts 98,R24
.dbline 26
xjmp L1
L2:
.dbline 27
; ii = EEPROMread(CONFIG_1);
ldi R16,2047
ldi R17,7
xcall _EEPROMread
mov R20,R16
.dbline 28
mov R22,R20
clr R23
cpi R22,0
cpc R22,R23
breq L7
X0:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L8
cpi R22,2
ldi R30,0
cpc R23,R30
breq L9
cpi R22,3
ldi R30,0
cpc R23,R30
breq L10
xjmp L4
X1:
.dbline 28
; switch(ii){
L7:
.dbline 30
; case 0:
; PORTE |= 1<<SING_C; //MP3
sbi 0x3,5
.dbline 31
; break;
xjmp L5
L8:
.dbline 33
; case 1:
; PORTE |= (1<<SING_B)|(1<<SING_A); //话筒
in R24,0x3
ori R24,192
out 0x3,R24
.dbline 34
; break;
xjmp L5
L9:
.dbline 36
; case 2:
; PORTE |= (1<<SING_B); //收音机
sbi 0x3,6
.dbline 37
; break;
xjmp L5
L10:
.dbline 39
; case 3:
; PORTE |= (1<<SING_A); //CD机
sbi 0x3,7
.dbline 40
; break;
L4:
L5:
.dbline 42
; }
; open_close(ii);//开启相应的电源设备
mov R16,R20
clr R17
xcall _open_close
.dbline -2
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r ii 20 c
.dbsym r mp3 20 c
.dbend
.dbfunc e Line_in _Line_in fV
; ii -> R20
.even
_Line_in::
xcall push_gset2
sbiw R28,8
.dbline -1
.dbline 47
; }
;
; extern uchar keybuf;
; void Line_in(void)
; {
.dbline 49
; uchar ii;
; ii = EEPROMread(CONFIG_1);
ldi R16,2047
ldi R17,7
xcall _EEPROMread
mov R20,R16
.dbline 50
; if(ii > 3) ii = 0;
ldi R24,3
cp R24,R16
brsh L12
.dbline 50
clr R20
L12:
.dbline 51
; show_clear();
xcall _show_clear
.dbline 52
; show_lcd(0, 0, 192, 2, &lin_menu[0],0);
clr R2
clr R3
std y+7,R3
std y+6,R2
ldi R24,<_lin_menu
ldi R25,>_lin_menu
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
xjmp L15
L14:
.dbline 53
; while(1){
.dbline 54
; show_lcd(3, 0, 80, 2, &lin_in4[0],0);//MP3
clr R2
clr R3
std y+7,R3
std y+6,R2
ldi R24,<_lin_in4
ldi R25,>_lin_in4
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
clr R18
clr R19
ldi R16,3
ldi R17,0
xcall _show_lcd
.dbline 55
; show_lcd(3, 80+25, 80, 2, &lin_in1[0],0); //话筒输入
clr R2
clr R3
std y+7,R3
std y+6,R2
ldi R24,<_lin_in1
ldi R25,>_lin_in1
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
ldi R18,105
ldi R19,0
ldi R16,3
ldi R17,0
xcall _show_lcd
.dbline 56
; show_lcd(6, 0, 80, 2, &lin_in2[0],0);//收音机
clr R2
clr R3
std y+7,R3
std y+6,R2
ldi R24,<_lin_in2
ldi R25,>_lin_in2
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
clr R18
clr R19
ldi R16,6
ldi R17,0
xcall _show_lcd
.dbline 57
; show_lcd(6, 80+25,80, 2, &lin_in3[0],0);//CD机
clr R2
clr R3
std y+7,R3
std y+6,R2
ldi R24,<_lin_in3
ldi R25,>_lin_in3
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
ldi R18,105
ldi R19,0
ldi R16,6
ldi R17,0
xcall _show_lcd
.dbline 59
;
; switch(ii)
mov R22,R20
clr R23
cpi R22,0
cpc R22,R23
breq L20
X2:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L21
cpi R22,2
ldi R30,0
cpc R23,R30
breq L22
cpi R22,3
ldi R30,0
cpc R23,R30
brne X4
xjmp L23
X4:
xjmp L17
X3:
.dbline 60
; {
L20:
.dbline 61
; case 0: show_lcd(3, 0, 80, 2, &lin_in4[0],1);
ldi R24,1
ldi R25,0
std y+7,R25
std y+6,R24
ldi R24,<_lin_in4
ldi R25,>_lin_in4
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
clr R18
clr R19
ldi R16,3
ldi R17,0
xcall _show_lcd
.dbline 62
; break;
xjmp L18
L21:
.dbline 63
; case 1: show_lcd(3, 80+25, 80, 2, &lin_in1[0],1);
ldi R24,1
ldi R25,0
std y+7,R25
std y+6,R24
ldi R24,<_lin_in1
ldi R25,>_lin_in1
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
ldi R18,105
ldi R19,0
ldi R16,3
ldi R17,0
xcall _show_lcd
.dbline 64
; break;
xjmp L18
L22:
.dbline 65
; case 2: show_lcd(6, 0, 80, 2, &lin_in2[0],1);
ldi R24,1
ldi R25,0
std y+7,R25
std y+6,R24
ldi R24,<_lin_in2
ldi R25,>_lin_in2
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
clr R18
clr R19
ldi R16,6
ldi R17,0
xcall _show_lcd
.dbline 66
; break;
xjmp L18
L23:
.dbline 67
; case 3: show_lcd(6, 80+25, 80, 2, &lin_in3[0], 1);
ldi R24,1
ldi R25,0
std y+7,R25
std y+6,R24
ldi R24,<_lin_in3
ldi R25,>_lin_in3
std y+5,R25
std y+4,R24
ldi R24,2
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,80
std y+1,R25
std y+0,R24
ldi R18,105
ldi R19,0
ldi R16,6
ldi R17,0
xcall _show_lcd
.dbline 68
; break;
L17:
L18:
.dbline 70
; }
; KEYBUF_NULL;
clr R2
sts _keybuf,R2
.dbline 70
L24:
.dbline 71
L25:
.dbline 71
; while(keybuf == NULL);
lds R2,_keybuf
tst R2
breq L24
.dbline 72
mov R24,R2
cpi R24,1
brne L27
.dbline 72
.dbline 72
mov R24,R20
subi R24,255 ; addi 1
mov R20,R24
cpi R20,4
brne L30
clr R20
xjmp L30
L30:
.dbline 72
; if(keybuf == K_DOWN){(++ii == 4) ? (ii = 0) : 0;}
L27:
.dbline 73
lds R24,_keybuf
cpi R24,3
brne L31
.dbline 73
.dbline 73
mov R24,R20
subi R24,1
mov R20,R24
cpi R20,255
brne L34
ldi R20,3
xjmp L34
L34:
.dbline 73
; if(keybuf == K_UP){(--ii == 255) ? (ii = 3) : 0;}
L31:
.dbline 74
lds R24,_keybuf
cpi R24,2
brne L35
.dbline 74
.dbline 74
mov R24,R20
subi R24,255 ; addi 1
mov R20,R24
cpi R20,4
brne L38
clr R20
xjmp L38
L38:
.dbline 74
; if(keybuf == K_LIFT){(++ii == 4) ? (ii = 0) : 0;}
L35:
.dbline 75
lds R24,_keybuf
cpi R24,6
brne L39
.dbline 75
.dbline 75
mov R24,R20
subi R24,1
mov R20,R24
cpi R20,255
brne L42
ldi R20,3
xjmp L42
L42:
.dbline 75
; if(keybuf == K_RIFT){(--ii == 255) ? (ii = 3) : 0;}
L39:
.dbline 76
; if(keybuf == K_ESC) break;
lds R24,_keybuf
cpi R24,5
brne L43
.dbline 76
xjmp L16
L43:
.dbline 77
; if(keybuf != K_ENTER) continue;
lds R24,_keybuf
cpi R24,4
breq L45
.dbline 77
xjmp L15
L45:
.dbline 78
mov R18,R20
ldi R16,2047
ldi R17,7
xcall _EEPROMwrite
.dbline 79
clr R16
xcall _adjust_cheng
.dbline 80
xjmp L16
L15:
.dbline 53
xjmp L14
L16:
.dbline -2
L11:
adiw R28,8
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r ii 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -