📄 语音1.lis
字号:
008A 8A01 movw R16,R20
008C .dbline -2
008C L10:
008C 0E940000 xcall pop_gset3
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbsym r k 20 i
0092 .dbsym r i 22 c
0092 .dbsym r data 10 c
0092 .dbend
0092 .dbfunc e status_address_pointer _status_address_pointer fL
0092 ; j -> R20
0092 ; k -> y+0
0092 ; i -> R22
0092 ; data -> R10
.even
0092 _status_address_pointer::
0092 0E940000 xcall push_gset3
0096 A02E mov R10,R16
0098 2497 sbiw R28,4
009A .dbline -1
009A .dbline 98
009A ; }
009A ; //*************************************************************
009A ; long status_address_pointer(unsigned char data)//读取状态寄存器,当前地址和播放指针
009A ; {
009A L15:
009A .dbline 102
009A ; unsigned char i,j;
009A ; long k;
009A ; do
009A ; {
009A .dbline 103
009A ; i=SPI(data);//发送命令
009A 0A2D mov R16,R10
009C 1127 clr R17
009E BBDF xcall _SPI
00A0 602F mov R22,R16
00A2 .dbline 104
00A2 ; }
00A2 L16:
00A2 .dbline 105
00A2 ; while((i=SPI(0x00))&0x01);//检测发送的命令是否接收了上一个命令
00A2 0027 clr R16
00A4 1127 clr R17
00A6 B7DF xcall _SPI
00A8 602F mov R22,R16
00AA 60FD sbrc R22,0
00AC F6CF rjmp L15
00AE .dbline 106
00AE ; j=SPI(0x00);//读当前地址
00AE 0027 clr R16
00B0 1127 clr R17
00B2 B1DF xcall _SPI
00B4 402F mov R20,R16
00B6 .dbline 107
00B6 ; k=SPI(0x00);//读播放指针
00B6 0027 clr R16
00B8 1127 clr R17
00BA ADDF xcall _SPI
00BC 202E mov R2,R16
00BE 3324 clr R3
00C0 4424 clr R4
00C2 5524 clr R5
00C4 FE01 movw R30,R28
00C6 2082 std z+0,R2
00C8 3182 std z+1,R3
00CA 4282 std z+2,R4
00CC 5382 std z+3,R5
00CE .dbline 108
00CE ; k=(8<<k)+j;//低位是状态,高位是地址
00CE FE01 movw R30,R28
00D0 2081 ldd R18,z+0
00D2 3181 ldd R19,z+1
00D4 08E0 ldi R16,8
00D6 10E0 ldi R17,0
00D8 0E940000 xcall lsl16
00DC 1801 movw R2,R16
00DE 442E mov R4,R20
00E0 5524 clr R5
00E2 240C add R2,R4
00E4 351C adc R3,R5
00E6 4424 clr R4
00E8 37FC sbrc R3,7
00EA 4094 com R4
00EC 5524 clr R5
00EE 47FC sbrc R4,7
00F0 5094 com R5
00F2 FE01 movw R30,R28
00F4 2082 std z+0,R2
00F6 3182 std z+1,R3
00F8 4282 std z+2,R4
00FA 5382 std z+3,R5
00FC .dbline 109
00FC ; k=(8<<k)+i;//低位是状态,中间是地址,高位是播放指针
00FC FE01 movw R30,R28
00FE 2081 ldd R18,z+0
0100 3181 ldd R19,z+1
0102 08E0 ldi R16,8
0104 10E0 ldi R17,0
0106 0E940000 xcall lsl16
010A 1801 movw R2,R16
010C 462E mov R4,R22
010E 5524 clr R5
0110 240C add R2,R4
0112 351C adc R3,R5
0114 4424 clr R4
0116 37FC sbrc R3,7
0118 4094 com R4
011A 5524 clr R5
011C 47FC sbrc R4,7
011E 5094 com R5
0120 FE01 movw R30,R28
0122 2082 std z+0,R2
0124 3182 std z+1,R3
0126 4282 std z+2,R4
0128 5382 std z+3,R5
012A .dbline 110
012A ; return k;
012A FE01 movw R30,R28
012C 0081 ldd R16,z+0
012E 1181 ldd R17,z+1
0130 2281 ldd R18,z+2
0132 3381 ldd R19,z+3
0134 .dbline -2
0134 L14:
0134 2496 adiw R28,4
0136 0E940000 xcall pop_gset3
013A .dbline 0 ; func end
013A 0895 ret
013C .dbsym r j 20 c
013C .dbsym l k 0 L
013C .dbsym r i 22 c
013C .dbsym r data 10 c
013C .dbend
013C .dbfunc e command_data _command_data fc
013C ; n -> R20
013C ; m -> R22
013C ; j -> R10
013C ; k -> R12
013C ; i -> R14
013C ; data2 -> y+14
013C ; data1 -> R20,R21
013C ; command -> y+10
.even
013C _command_data::
013C 0E940000 xcall push_arg4
0140 0E940000 xcall push_gset5
0144 A901 movw R20,R18
0146 .dbline -1
0146 .dbline 114
0146 ; }
0146 ; //*************************************************************
0146 ; unsigned char command_data(unsigned char command,unsigned int data1,unsigned int data2)
0146 ; {
0146 .dbline 116
0146 ; unsigned char i,j,k,m,n;
0146 ; j=data1/256;k=data1%256;
0146 5A01 movw R10,R20
0148 AB2C mov R10,R11
014A BB24 clr R11
014C .dbline 116
014C CA01 movw R24,R20
014E 9070 andi R25,0
0150 C82E mov R12,R24
0152 .dbline 117
0152 ; m=data2/256;n=data2%256;
0152 6E85 ldd R22,y+14
0154 7F85 ldd R23,y+15
0156 672F mov R22,R23
0158 7727 clr R23
015A .dbline 117
015A 4E85 ldd R20,y+14
015C 5F85 ldd R21,y+15
015E 5070 andi R21,0
0160 L19:
0160 .dbline 119
0160 ; do
0160 ; {
0160 .dbline 120
0160 ; i=SPI(command);//发送命令
0160 0A85 ldd R16,y+10
0162 1127 clr R17
0164 58DF xcall _SPI
0166 E02E mov R14,R16
0168 .dbline 121
0168 ; }
0168 L20:
0168 .dbline 122
0168 ; while((i=SPI(0x00))&0x01);//检测发送的命令是否接收了上一个命令
0168 0027 clr R16
016A 1127 clr R17
016C 54DF xcall _SPI
016E E02E mov R14,R16
0170 E0FC sbrc R14,0
0172 F6CF rjmp L19
0174 .dbline 123
0174 ; k=SPI(k);k=SPI(j);
0174 0C2D mov R16,R12
0176 1127 clr R17
0178 4EDF xcall _SPI
017A .dbline 123
017A 0A2D mov R16,R10
017C 1127 clr R17
017E 4BDF xcall _SPI
0180 .dbline 124
0180 ; k=SPI(n);k=SPI(m);
0180 042F mov R16,R20
0182 1127 clr R17
0184 48DF xcall _SPI
0186 .dbline 124
0186 062F mov R16,R22
0188 1127 clr R17
018A 45DF xcall _SPI
018C C02E mov R12,R16
018E .dbline 125
018E ; return i;
018E 0E2D mov R16,R14
0190 .dbline -2
0190 L18:
0190 0E940000 xcall pop_gset5
0194 2496 adiw R28,4
0196 .dbline 0 ; func end
0196 0895 ret
0198 .dbsym r n 20 c
0198 .dbsym r m 22 c
0198 .dbsym r j 10 c
0198 .dbsym r k 12 c
0198 .dbsym r i 14 c
0198 .dbsym l data2 14 i
0198 .dbsym r data1 20 i
0198 .dbsym l command 10 c
0198 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -