⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asm

📁 用凌阳的十六位单片机SPCE061A做得语音开发板,可以录播WMA格式的音乐,外挂ST39VF040存储,可以存几十首歌,有音频编解码代码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	.dw 0x0d,0x0a
.text
LM104:
	R1=[_recvdata1]	// QImode move
	CMP R1,2	// QImode compare
	NSJNZ L44	//QImode NE
.debug
	.dw '.stabn 0x44,0,158,',0,0
	.dd LM105-_IRQ7
	.dw 0x0d,0x0a
.text
LM105:
	call _SACM_DVR1600_Stop	// call without return value
.debug
	.dw '.stabn 0x44,0,159,',0,0
	.dd LM106-_IRQ7
	.dw 0x0d,0x0a
.text
LM106:
	R1=_recvdata1	// QImode move
	[SP--]=R1	// QImode move
	call _uartrecvchar	// call with return value
	SP = SP + 1	//SP
	CMP R1,0	// QImode test
	NSJNZ L45	//QImode NE
.debug
	.dw '.stabn 0x44,0,160,',0,0
	.dd LM107-_IRQ7
	.dw 0x0d,0x0a
.text
LM107:
	pc=L38	// Indirect jump
L45:
.debug
	.dw '.stabn 0x44,0,161,',0,0
	.dd LM108-_IRQ7
	.dw 0x0d,0x0a
.text
LM108:
	R1=1	// QImode move
	[_playflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,162,',0,0
	.dd LM109-_IRQ7
	.dw 0x0d,0x0a
.text
LM109:
	R1=0	// QImode move
	[_loopflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,163,',0,0
	.dd LM110-_IRQ7
	.dw 0x0d,0x0a
.text
LM110:
	R1=[_recvdata1]	// QImode move
	[_SndIdx]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,164,',0,0
	.dd LM111-_IRQ7
	.dw 0x0d,0x0a
.text
LM111:
	R1=128	// QImode move
	[28705]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,165,',0,0
	.dd LM112-_IRQ7
	.dw 0x0d,0x0a
.text
LM112:
	pc=L38	// Indirect jump
.debug
	.dw '.stabn 0x44,0,166,',0,0
	.dd LM113-_IRQ7
	.dw 0x0d,0x0a
.text
LM113:
	pc=L43	// Indirect jump
L44:
.debug
	.dw '.stabn 0x44,0,167,',0,0
	.dd LM114-_IRQ7
	.dw 0x0d,0x0a
.text
LM114:
	R1=[_recvdata1]	// QImode move
	CMP R1,3	// QImode compare
	NSJNZ L47	//QImode NE
.debug
	.dw '.stabn 0x44,0,169,',0,0
	.dd LM115-_IRQ7
	.dw 0x0d,0x0a
.text
LM115:
	call _SACM_DVR1600_Stop	// call without return value
.debug
	.dw '.stabn 0x44,0,170,',0,0
	.dd LM116-_IRQ7
	.dw 0x0d,0x0a
.text
LM116:
	R1=0	// QImode move
	[_playstate]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,171,',0,0
	.dd LM117-_IRQ7
	.dw 0x0d,0x0a
.text
LM117:
	R1=0	// QImode move
	[_playflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,172,',0,0
	.dd LM118-_IRQ7
	.dw 0x0d,0x0a
.text
LM118:
	R1=0	// QImode move
	[_loopflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,173,',0,0
	.dd LM119-_IRQ7
	.dw 0x0d,0x0a
.text
LM119:
	R1=128	// QImode move
	[28705]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,174,',0,0
	.dd LM120-_IRQ7
	.dw 0x0d,0x0a
.text
LM120:
	pc=L38	// Indirect jump
.debug
	.dw '.stabn 0x44,0,175,',0,0
	.dd LM121-_IRQ7
	.dw 0x0d,0x0a
.text
LM121:
	pc=L43	// Indirect jump
L47:
.debug
	.dw '.stabn 0x44,0,176,',0,0
	.dd LM122-_IRQ7
	.dw 0x0d,0x0a
.text
LM122:
	R1=[_recvdata1]	// QImode move
	CMP R1,4	// QImode compare
	NSJNZ L49	//QImode NE
.debug
	.dw '.stabn 0x44,0,178,',0,0
	.dd LM123-_IRQ7
	.dw 0x0d,0x0a
.text
LM123:
	R1=[_VolumeIdx]	// QImode move
	R2=1	// QImode move
	[_VolumeIdx]=R1+R2  //addqi3_Qrr
.debug
	.dw '.stabn 0x44,0,179,',0,0
	.dd LM124-_IRQ7
	.dw 0x0d,0x0a
.text
LM124:
	R1=[_VolumeIdx]	// QImode move
	CMP R1,15	// QImode compare
	NSJNA L50	//QImode LEU
.debug
	.dw '.stabn 0x44,0,180,',0,0
	.dd LM125-_IRQ7
	.dw 0x0d,0x0a
.text
LM125:
	R1=0	// QImode move
	[_VolumeIdx]=R1	// QImode move
L50:
.debug
	.dw '.stabn 0x44,0,181,',0,0
	.dd LM126-_IRQ7
	.dw 0x0d,0x0a
.text
LM126:
	R1=[_VolumeIdx]	// QImode move
	[SP--]=R1	// QImode move
	call _SACM_DVR1600_Volume	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,182,',0,0
	.dd LM127-_IRQ7
	.dw 0x0d,0x0a
.text
LM127:
	R1=128	// QImode move
	[28705]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,183,',0,0
	.dd LM128-_IRQ7
	.dw 0x0d,0x0a
.text
LM128:
	pc=L38	// Indirect jump
.debug
	.dw '.stabn 0x44,0,184,',0,0
	.dd LM129-_IRQ7
	.dw 0x0d,0x0a
.text
LM129:
	pc=L43	// Indirect jump
L49:
.debug
	.dw '.stabn 0x44,0,185,',0,0
	.dd LM130-_IRQ7
	.dw 0x0d,0x0a
.text
LM130:
	R1=[_recvdata1]	// QImode move
	CMP R1,5	// QImode compare
	NSJNZ L52	//QImode NE
.debug
	.dw '.stabn 0x44,0,187,',0,0
	.dd LM131-_IRQ7
	.dw 0x0d,0x0a
.text
LM131:
	R1=[_VolumeIdx]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L53	//QImode EQ
.debug
	.dw '.stabn 0x44,0,188,',0,0
	.dd LM132-_IRQ7
	.dw 0x0d,0x0a
.text
LM132:
	R1=[_VolumeIdx]	// QImode move
	R2=(-1)	// QImode move
	[_VolumeIdx]=R1+R2  //addqi3_Qrr
L53:
.debug
	.dw '.stabn 0x44,0,189,',0,0
	.dd LM133-_IRQ7
	.dw 0x0d,0x0a
.text
LM133:
	R1=[_VolumeIdx]	// QImode move
	[SP--]=R1	// QImode move
	call _SACM_DVR1600_Volume	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,190,',0,0
	.dd LM134-_IRQ7
	.dw 0x0d,0x0a
.text
LM134:
	R1=128	// QImode move
	[28705]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,191,',0,0
	.dd LM135-_IRQ7
	.dw 0x0d,0x0a
.text
LM135:
	pc=L38	// Indirect jump
.debug
	.dw '.stabn 0x44,0,192,',0,0
	.dd LM136-_IRQ7
	.dw 0x0d,0x0a
.text
LM136:
	pc=L43	// Indirect jump
L52:
.debug
	.dw '.stabn 0x44,0,193,',0,0
	.dd LM137-_IRQ7
	.dw 0x0d,0x0a
.text
LM137:
	R1=[_recvdata1]	// QImode move
	CMP R1,6	// QImode compare
	NSJNZ L55	//QImode NE
.debug
	.dw '.stabn 0x44,0,195,',0,0
	.dd LM138-_IRQ7
	.dw 0x0d,0x0a
.text
LM138:
	call _SACM_DVR1600_Stop	// call without return value
.debug
	.dw '.stabn 0x44,0,196,',0,0
	.dd LM139-_IRQ7
	.dw 0x0d,0x0a
.text
LM139:
	R1=1	// QImode move
	[_writeflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,197,',0,0
	.dd LM140-_IRQ7
	.dw 0x0d,0x0a
.text
LM140:
	call _ERASE_ST39VF040	// call without return value
.debug
	.dw '.stabn 0x44,0,198,',0,0
	.dd LM141-_IRQ7
	.dw 0x0d,0x0a
.text
LM141:
	pc=L43	// Indirect jump
L55:
.debug
	.dw '.stabn 0x44,0,201,',0,0
	.dd LM142-_IRQ7
	.dw 0x0d,0x0a
.text
LM142:
	R1=128	// QImode move
	[28705]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,202,',0,0
	.dd LM143-_IRQ7
	.dw 0x0d,0x0a
.text
LM143:
	pc=L38	// Indirect jump
L56:
L54:
L51:
L48:
L46:
L43:
.debug
	.dw '.stabn 0x44,0,205,',0,0
	.dd LM144-_IRQ7
	.dw 0x0d,0x0a
.text
LM144:
	R1=0	// QImode move
	[_sendflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,206,',0,0
	.dd LM145-_IRQ7
	.dw 0x0d,0x0a
.text
LM145:
	//split R1, 0
	R1=0	// QImode move
	R2=0	// QImode move
	//split [_flashaddr], R1
	[_flashaddr]=R1	// QImode move
	[_flashaddr+1]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,207,',0,0
	.dd LM146-_IRQ7
	.dw 0x0d,0x0a
.text
LM146:
L57:
	pc=L59	// Indirect jump
	pc=L58	// Indirect jump
L59:
.debug
	.dw '.stabn 0x44,0,209,',0,0
	.dd LM147-_IRQ7
	.dw 0x0d,0x0a
.text
LM147:
	//split R1, [_flashaddr]
	R1=[_flashaddr]	// QImode move
	R2=[_flashaddr+1]	// QImode move
	R3=R1+1	// HImode RD=RS+#IMM16
	R4=R2+0, Carry
	//split [_flashaddr], R3
	[_flashaddr]=R3	// QImode move
	[_flashaddr+1]=R4	// QImode move
.debug
	.dw '.stabn 0x44,0,210,',0,0
	.dd LM148-_IRQ7
	.dw 0x0d,0x0a
.text
LM148:
	R1=_recvdata1	// QImode move
	[SP--]=R1	// QImode move
	call _uartrecvchar	// call with return value
	SP = SP + 1	//SP
	CMP R1,0	// QImode test
	NSJNZ L60	//QImode NE
.debug
	.dw '.stabn 0x44,0,212,',0,0
	.dd LM149-_IRQ7
	.dw 0x0d,0x0a
.text
LM149:
	R1=[_sendflag]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L61	//QImode EQ
	R1=[_writeflag]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L61	//QImode EQ
.debug
	.dw '.stabn 0x44,0,214,',0,0
	.dd LM150-_IRQ7
	.dw 0x0d,0x0a
.text
LM150:
	R1=[_recvdata2]	// QImode move
	[SP--]=R1	// QImode move
	//split R1, [_flashaddr]
	R1=[_flashaddr]	// QImode move
	R2=[_flashaddr+1]	// QImode move
	push R1,R2 to [sp]	// pushhi
	call _Write_ST39VF040_One_Word	// call without return value
	SP = SP + 3	//SP
L61:
.debug
	.dw '.stabn 0x44,0,216,',0,0
	.dd LM151-_IRQ7
	.dw 0x0d,0x0a
.text
LM151:
	pc=L58	// Indirect jump
.debug
	.dw '.stabn 0x44,0,217,',0,0
	.dd LM152-_IRQ7
	.dw 0x0d,0x0a
.text
LM152:
	pc=L38	// Indirect jump
L60:
.debug
	.dw '.stabn 0x44,0,219,',0,0
	.dd LM153-_IRQ7
	.dw 0x0d,0x0a
.text
LM153:
	R1=[_sendflag]	// QImode move
	CMP R1,0	// QImode test
	NSJNZ L62	//QImode NE
.debug
	.dw '.stabn 0x44,0,221,',0,0
	.dd LM154-_IRQ7
	.dw 0x0d,0x0a
.text
LM154:
	R1=1	// QImode move
	[_sendflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,222,',0,0
	.dd LM155-_IRQ7
	.dw 0x0d,0x0a
.text
LM155:
	R1=[_recvdata1]	// QImode move
	[_recvdata2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,223,',0,0
	.dd LM156-_IRQ7
	.dw 0x0d,0x0a
.text
LM156:
	pc=L63	// Indirect jump
L62:
.debug
	.dw '.stabn 0x44,0,226,',0,0
	.dd LM157-_IRQ7
	.dw 0x0d,0x0a
.text
LM157:
	R1=0	// QImode move
	[_sendflag]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,227,',0,0
	.dd LM158-_IRQ7
	.dw 0x0d,0x0a
.text
LM158:
	R1=[_recvdata1]	// QImode move
	R2=R1 lsl 4
	R2=R2 lsl 4
	[_recvdata1]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,228,',0,0
	.dd LM159-_IRQ7
	.dw 0x0d,0x0a
.text
LM159:
	R1=[_recvdata1]	// QImode move
	R2=[_recvdata2]	// QImode move
	[_recvdata1]=R1+R2  //addqi3_Qrr
.debug
	.dw '.stabn 0x44,0,229,',0,0
	.dd LM160-_IRQ7
	.dw 0x0d,0x0a
.text
LM160:
	R1=[_recvdata1]	// QImode move
	[SP--]=R1	// QImode move
	//split R1, [_flashaddr]
	R1=[_flashaddr]	// QImode move
	R2=[_flashaddr+1]	// QImode move
	push R1,R2 to [sp]	// pushhi
	call _Write_ST39VF040_One_Word	// call without return value
	SP = SP + 3	//SP
L63:
.debug
	.dw '.stabn 0x44,0,239,',0,0
	.dd LM161-_IRQ7
	.dw 0x0d,0x0a
.text
LM161:
	R1=1	// QImode move
	[28690]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,240,',0,0
	.dd LM162-_IRQ7
	.dw 0x0d,0x0a
.text
LM162:
	pc=L57	// Indirect jump
L58:
.debug
	.dw '.stabn 0x44,0,241,',0,0
	.dd LM163-_IRQ7
	.dw 0x0d,0x0a
.text
LM163:
.debug
	.dw '.stabn 0x44,0,241,',0,0
	.dd LM164-_IRQ7
	.dw 0x0d,0x0a
.text
LM164:
L38:

	sp+=1
	// ISR ATTRIBUTE FUNCTION, POP r1,bp
	pop r1,bp from [sp]
	reti
	.endp	// end of IRQ7

.debug
	.dw '.stabf ',0,0
	.dd LME9-_IRQ7
	.dw 0x0d,0x0a
.text
LME9:
.iram
.public _ext2flag
_ext2flag:
	.dw 0
.iram
.public _recvdata1
_recvdata1:
	.dw 0
.iram
.public _recvdata2
_recvdata2:
	.dw 0
.iram
.public _sendflag
_sendflag:
	.dw 0
.iram
.public _playflag
_playflag:
	.dw 0
.iram
.public _playstate
_playstate:
	.dw 0
.iram
.public _SOUND_NUM
_SOUND_NUM:
	.dw 0
.iram
.public _VolumeIdx
_VolumeIdx:
	.dw 0
.iram
.public _writeflag
_writeflag:
	.dw 0
.iram
.public _loopflag
_loopflag:
	.dw 0
.iram
.public _flashaddr
_flashaddr:
	.dw 2 dup(0)
.iram
.public _timedelay
_timedelay:
	.dw 2 dup(0)
.iram
.public _SndIdx
_SndIdx:
	.dw 0
.external _Write_ST39VF040_One_Word
.external _ERASE_ST39VF040
.external _SACM_DVR1600_Stop
.external _SACM_DVR1600_ISR
.external _SACM_DVR1600_Volume
.external _Read_ST39VF040_One_Word
.external _SACM_DVR1600_Play
.external _SACM_DVR1600_ServiceLoop
.external _SACM_DVR1600_Status
.external _SACM_DVR1600_Rec
.external _SACM_DVR1600_Initial
	.end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -