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

📄 main.s

📁 ISD1700语音芯片放音的ISP实现
💻 S
📖 第 1 页 / 共 2 页
字号:
	sts _data4,R2
	.dbline 127
; 	
; 	if(data4==0x0c)
	mov R24,R2
	cpi R24,12
	brne L61
X16:
	.dbline 128
; 		RUN2_ON();
	sbi 0x18,6
L61:
	.dbline 130
;         
; 	for(i=0;i<100;i++)
	clr R16
	clr R17
L63:
	.dbline 131
;     	;
L64:
	.dbline 130
	subi R16,255  ; offset = 1
	sbci R17,255
	.dbline 130
	cpi R16,100
	ldi R30,0
	cpc R17,R30
	brlt L63
X17:
	.dbline 132
;     PORTB |= (1<<PB0);	//SS=1
	sbi 0x18,0
	.dbline -2
L44:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 I
	.dbend
	.dbfunc e Sound_Flay _Sound_Flay fV
;              i -> R16,R17
	.even
_Sound_Flay::
	.dbline -1
	.dbline 136
; }
; 
; void Sound_Flay(void)
; {
	.dbline 138
;     int i;
;     PORTB &= ~(1<<PB0);	//SS=0
	cbi 0x18,0
	.dbline 139
;     for(i=0;i<100;i++)
	clr R16
	clr R17
L68:
	.dbline 140
;     	;
L69:
	.dbline 139
	subi R16,255  ; offset = 1
	sbci R17,255
	.dbline 139
	cpi R16,100
	ldi R30,0
	cpc R17,R30
	brlt L68
X18:
	.dbline 141
;     SPDR = 0x10+0x40;
	ldi R24,80
	out 0xf,R24
L72:
	.dbline 143
;     while (!(SPSR &(1 << SPIF)))
;         ;
L73:
	.dbline 142
	sbis 0xe,7
	rjmp L72
X19:
	.dbline 144
; 	data1=SPDR;
	in R2,0xf
	sts _data1,R2
	.dbline 145
;     SPDR = 0x00;
	clr R2
	out 0xf,R2
L75:
	.dbline 147
;     while (!(SPSR &(1 << SPIF)))
;         ;
L76:
	.dbline 146
	sbis 0xe,7
	rjmp L75
X20:
	.dbline 148
; 	data2=SPDR;
	in R2,0xf
	sts _data2,R2
	.dbline 150
;         
; 	for(i=0;i<100;i++)
	clr R16
	clr R17
L78:
	.dbline 151
;     	;
L79:
	.dbline 150
	subi R16,255  ; offset = 1
	sbci R17,255
	.dbline 150
	cpi R16,100
	ldi R30,0
	cpc R17,R30
	brlt L78
X21:
	.dbline 152
;     PORTB |= (1<<PB0);	//SS=1
	sbi 0x18,0
	.dbline -2
L67:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 I
	.dbend
	.dbfunc e Sound_SetFlay _Sound_SetFlay fV
;              i -> R20,R21
;       startAdd -> R16,R17
	.even
_Sound_SetFlay::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 156
; }
; 
; void Sound_SetFlay(unsigned int startAdd)
; {
	.dbline 158
;     int i;
;     PORTB &= ~(1<<PB0);	//SS=0
	cbi 0x18,0
	.dbline 159
;     for(i=0;i<100;i++)
	clr R20
	clr R21
L83:
	.dbline 160
;     	;
L84:
	.dbline 159
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 159
	cpi R20,100
	ldi R30,0
	cpc R21,R30
	brlt L83
X22:
	.dbline 161
;     SPDR = 0x10+0x80;					//cmd
	ldi R24,144
	out 0xf,R24
L87:
	.dbline 163
;     while (!(SPSR &(1 << SPIF)))
;         ;
L88:
	.dbline 162
	sbis 0xe,7
	rjmp L87
X23:
	.dbline 164
;     SPDR = 0x00;					//data
	clr R2
	out 0xf,R2
L90:
	.dbline 166
;     while (!(SPSR &(1 << SPIF)))
;         ;
L91:
	.dbline 165
	sbis 0xe,7
	rjmp L90
X24:
	.dbline 167
; 	SPDR = (unsigned char)startAdd;	//start add,LSB
	out 0xf,R16
L93:
	.dbline 169
;     while (!(SPSR &(1 << SPIF)))
;         ;
L94:
	.dbline 168
	sbis 0xe,7
	rjmp L93
X25:
	.dbline 170
; 	SPDR = (unsigned char)(startAdd>>8);	//start add,MSB
	movw R2,R16
	mov R2,R3
	clr R3
	out 0xf,R2
L96:
	.dbline 172
;     while (!(SPSR &(1 << SPIF)))
;         ;
L97:
	.dbline 171
	sbis 0xe,7
	rjmp L96
X26:
	.dbline 173
; 	SPDR = 0x00;					//end add
	clr R2
	out 0xf,R2
L99:
	.dbline 175
;     while (!(SPSR &(1 << SPIF)))
;         ;
L100:
	.dbline 174
	sbis 0xe,7
	rjmp L99
X27:
	.dbline 176
;     SPDR = 0x00;					//end add
	clr R2
	out 0xf,R2
L102:
	.dbline 178
;     while (!(SPSR &(1 << SPIF)))
;         ;
L103:
	.dbline 177
	sbis 0xe,7
	rjmp L102
X28:
	.dbline 179
;     SPDR = 0x00;					//end add
	clr R2
	out 0xf,R2
L105:
	.dbline 181
;     while (!(SPSR &(1 << SPIF)))
;         ;
L106:
	.dbline 180
	sbis 0xe,7
	rjmp L105
X29:
	.dbline 182
; 	for(i=0;i<100;i++)
	clr R20
	clr R21
L108:
	.dbline 183
;     	;
L109:
	.dbline 182
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 182
	cpi R20,100
	ldi R30,0
	cpc R21,R30
	brlt L108
X30:
	.dbline 184
;     PORTB |= (1<<PB0);	//SS=1
	sbi 0x18,0
	.dbline -2
L82:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 I
	.dbsym r startAdd 16 i
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\AVR\ISD1700_ISP\src\main.c
L113:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\AVR\ISD1700_ISP\src\main.c
	.area text(rom, con, rel)
	.dbfile E:\AVR\ISD1700_ISP\src\main.c
	.dbfunc e main _main fV
	.dbsym s secondcount L113 c
;      soundFlag -> R20
;              t -> R22,R23
	.even
_main::
	.dbline -1
	.dbline 189
; }
; 
; //主函数
; void main(void)
; {
	.dbline 191
;     static unsigned char secondcount=0;
;     unsigned char soundFlag=0;
	clr R20
	.dbline 195
;     
;     unsigned int t;
;     
;     init_devices(); //全局初始化
	xcall _init_devices
	.dbline 196
;     RUN2_OFF();
	cbi 0x18,6
	.dbline 198
;     
;     iProgRunCount=GetTime();
	xcall _GetTime
	sts _iProgRunCount+1,R17
	sts _iProgRunCount,R16
	xjmp L115
L114:
	.dbline 200
;     while(1)
;     {
	.dbline 201
;     	WDR();
	wdr
	.dbline 202
;     	t=GetPassTime(iProgRunCount);
	lds R16,_iProgRunCount
	lds R17,_iProgRunCount+1
	xcall _GetPassTime
	movw R22,R16
	.dbline 203
; 		if(t>=100)
	cpi R16,100
	ldi R30,0
	cpc R17,R30
	brlo L117
X31:
	.dbline 204
; 		{
	.dbline 205
; 			isd1700_init();
	xcall _isd1700_init
	.dbline 206
; 			break;
	xjmp L116
L117:
	.dbline 208
; 		}
;     }
L115:
	.dbline 199
	xjmp L114
L116:
	.dbline 210
;     
;     Read_APC();
	xcall _Read_APC
	.dbline 212
; 
; 	Sound_SetFlay(0x10);
	ldi R16,16
	ldi R17,0
	xcall _Sound_SetFlay
	.dbline 213
; 	soundTime=GetTime();
	xcall _GetTime
	movw R10,R16
	sts _soundTime+1,R11
	sts _soundTime,R10
	xjmp L120
L119:
	.dbline 215
;     while (1)
;     {
	.dbline 216
;         WDR(); //内部watchdog
	wdr
	.dbline 217
; 		if(GetPassTime(soundTime)>=1000)
	lds R16,_soundTime
	lds R17,_soundTime+1
	xcall _GetPassTime
	movw R22,R16
	cpi R16,232
	ldi R30,3
	cpc R17,R30
	brlo L122
X32:
	.dbline 218
;         {
	.dbline 219
;         	soundTime=GetTime();
	xcall _GetTime
	movw R10,R16
	sts _soundTime+1,R11
	sts _soundTime,R10
	.dbline 220
;         	secondcount++;
	lds R24,L113
	subi R24,255    ; addi 1
	sts L113,R24
	.dbline 221
;         	if(secondcount>=20)
	cpi R24,20
	brlo L124
X33:
	.dbline 222
;         	{
	.dbline 223
;         		secondcount=0;
	clr R2
	sts L113,R2
	.dbline 224
;         		soundFlag=1;
	ldi R20,1
	.dbline 225
;         	}
L124:
	.dbline 226
;         	RUN1();
	ldi R24,32
	in R2,0x18
	eor R2,R24
	out 0x18,R2
	.dbline 227
;         }
L122:
	.dbline 229
;         
;         if(soundFlag)
	tst R20
	breq L126
X34:
	.dbline 230
;         {
	.dbline 231
;         	soundFlag=0;
	clr R20
	.dbline 233
;         	//Sound_Flay();
;         	Sound_SetFlay(0x10);
	ldi R16,16
	ldi R17,0
	xcall _Sound_SetFlay
	.dbline 234
;         }
L126:
	.dbline 235
;     }
L120:
	.dbline 214
	xjmp L119
X35:
	.dbline -2
L112:
	.dbline 0 ; func end
	ret
	.dbsym r soundFlag 20 c
	.dbsym r t 22 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\AVR\ISD1700_ISP\src\main.c
_data4::
	.blkb 1
	.dbsym e data4 _data4 c
_data3::
	.blkb 1
	.dbsym e data3 _data3 c
_data2::
	.blkb 1
	.dbsym e data2 _data2 c
_data1::
	.blkb 1
	.dbsym e data1 _data1 c
; }

⌨️ 快捷键说明

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