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

📄 测试.s

📁 ISD1720芯片实现录音,定点录音,播放,定点播放等.
💻 S
📖 第 1 页 / 共 5 页
字号:
	xcall _ISD_SendData
	.dbline 132
;         SS_1;  
	sbi 0x18,4
	.dbline 133
;     delay_ms(50);  
	ldi R16,50
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L114:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ISD_Reset _ISD_Reset fV
	.even
_ISD_Reset::
	.dbline -1
	.dbline 139
; }  
; /**************************************************************************  
; *    函数原型: void ISD_Reset(void);  
; *    功    能: 复位  
; **************************************************************************/  
; void ISD_Reset(void){  
	.dbline 140
;         ISD_SendData(RESET);  
	ldi R16,19
	ldi R17,0
	xcall _ISD_SendData
	.dbline 141
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 142
;         SS_1;  
	sbi 0x18,4
	.dbline 143
;     delay_ms(50);  
	ldi R16,50
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L115:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ISD_PD _ISD_PD fV
	.even
_ISD_PD::
	.dbline -1
	.dbline 151
; }  
; 
; /**************************************************************************  
; *    函数原型: void ISD_PD(void);  
; *    功    能: 掉电  
; **************************************************************************/  
;   
; void ISD_PD(void){  
	.dbline 152
;         ISD_SendData(PD);  
	ldi R16,23
	ldi R17,0
	xcall _ISD_SendData
	.dbline 153
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 154
;         SS_1;  
	sbi 0x18,4
	.dbline -2
L116:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ClrInt _ClrInt fV
	.even
_ClrInt::
	.dbline -1
	.dbline 161
; }
; 
; /**************************************************************************  
; *    函数原型: void ClrInt(void);  
; *    功    能: 清除中断  
; **************************************************************************/  
; void ClrInt(void){  
	.dbline 162
;         ISD_SendData(CLI_INT);  
	ldi R16,20
	ldi R17,0
	xcall _ISD_SendData
	.dbline 163
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 164
;         SS_1;  
	sbi 0x18,4
	.dbline 165
;         delay_ms(10);          //延迟10ms  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L117:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ISD_WR_NVCFG _ISD_WR_NVCFG fV
	.even
_ISD_WR_NVCFG::
	.dbline -1
	.dbline 172
; }  
; /**************************************************************************  
; *    函数原型: void ISD_WR_NVCFG(void);  
; *    功    能: 永久写入寄存器  
; **************************************************************************/  
; void ISD_WR_NVCFG(void)
;        {  
	.dbline 173
;         ISD_SendData(WR_NVCFG);  
	ldi R16,86
	ldi R17,0
	xcall _ISD_SendData
	.dbline 174
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 175
;         SS_1;  
	sbi 0x18,4
	.dbline 176
;         delay_ms(10);               //延迟10ms  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L118:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ISD_ERASE _ISD_ERASE fV
	.even
_ISD_ERASE::
	.dbline -1
	.dbline 183
; }
; 
; /**************************************************************************  
; *    函数原型: ERASE(void);  
; *    功    能: 擦除当前曲目
; **************************************************************************/  
; void ISD_ERASE(void){  
	.dbline 184
;         ISD_SendData(ERASE);  
	ldi R16,82
	ldi R17,0
	xcall _ISD_SendData
	.dbline 185
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 186
;         SS_1;  
	sbi 0x18,4
	.dbline 187
;         delay_ms(10);  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L119:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Erase_All _Erase_All fV
	.even
_Erase_All::
	.dbline -1
	.dbline 194
; }
; 
; /**************************************************************************  
; *    函数原型: void Erase_All(void);  
; *    功    能: 全部删除  
; **************************************************************************/  
; void Erase_All(void){  
	.dbline 195
;         ISD_SendData(G_ERASE);  
	ldi R16,83
	ldi R17,0
	xcall _ISD_SendData
	.dbline 196
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 197
;         SS_1;  
	sbi 0x18,4
	.dbline 198
;         delay_ms(100);               //延迟10ms  
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L120:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e RdStatus _RdStatus fV
	.even
_RdStatus::
	st -y,R10
	.dbline -1
	.dbline 205
; } 
; 
; /**************************************************************************  
; *    函数原型: void RdStatus(void);  
; *    功    能: 读取状态  
; **************************************************************************/  
; void RdStatus(void){  
	.dbline 206
;         ISD_SendData(RD_STATUS);  
	ldi R16,21
	ldi R17,0
	xcall _ISD_SendData
	.dbline 207
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 208
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 209
;         SS_1;  
	sbi 0x18,4
	.dbline 210
;         delay_ms(10);               //延迟10ms  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 211
;         SR0_L =ISD_SendData(RD_STATUS);  //SR0低位
	ldi R16,21
	ldi R17,0
	xcall _ISD_SendData
	sts _SR0_L,R16
	.dbline 212
;         SR0_H =ISD_SendData(0x00);  //SRO高位
	clr R16
	clr R17
	xcall _ISD_SendData
	sts _SR0_H,R16
	.dbline 213
;         SR1 =ISD_SendData(0x00);  //SR1
	clr R16
	clr R17
	xcall _ISD_SendData
	mov R10,R16
	sts _SR1,R10
	.dbline 214
;         SS_1; 
	sbi 0x18,4
	.dbline 215
;         delay_ms(10);  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L121:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbend
	.dbfunc e ISD_REC _ISD_REC fV
	.even
_ISD_REC::
	.dbline -1
	.dbline 222
; }  
; 
; /**************************************************************************  
; *    函数原型: void REC(void);  
; *    功    能: 录音 
; **************************************************************************/  
; void ISD_REC(void){  
	.dbline 223
;         ISD_PU();
	xcall _ISD_PU
	.dbline 224
; 		Erase_All();
	xcall _Erase_All
L123:
	.dbline 225
; 		  do{  
	.dbline 226
;                 RdStatus();
	xcall _RdStatus
	.dbline 227
;         }while(SR0_L&0x01);//检查CMD_ERR
L124:
	.dbline 227
	lds R2,_SR0_L
	sbrc R2,0
	rjmp L123
X47:
	.dbline 228
; 		ClrInt();//清除中断
	xcall _ClrInt
L126:
	.dbline 229
; 		do{  
	.dbline 230
;                 RdStatus();
	xcall _RdStatus
	.dbline 231
;         }while(!(SR1&0x01));//检查RDY
L127:
	.dbline 231
	lds R2,_SR1
	sbrs R2,0
	rjmp L126
X48:
	.dbline 233
; 		
; 		ISD_SendData(REC);  
	ldi R16,81
	ldi R17,0
	xcall _ISD_SendData
	.dbline 234
;         ISD_SendData(0x00);
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 235
; 		SS_1;    
	sbi 0x18,4
	.dbline 236
;         delay_ms(10);  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L122:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e RD_DevID _RD_DevID fc
	.even
_RD_DevID::
	st -y,R10
	.dbline -1
	.dbline 242
; }
; /**************************************************************************  
; *    函数原型: void RdStatus(void);  
; *    功    能: 读取ID  
; **************************************************************************/  
; uchar RD_DevID(void){  
	.dbline 243
;         ISD_SendData(RD_DEVID);  
	ldi R16,25
	ldi R17,0
	xcall _ISD_SendData
	.dbline 244
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 245
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 246
;         SS_1;  
	sbi 0x18,4
	.dbline 247
;         delay_ms(10);               //延迟10ms  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 248
;         SR0_L=ISD_SendData(RD_DEVID);  
	ldi R16,25
	ldi R17,0
	xcall _ISD_SendData
	sts _SR0_L,R16
	.dbline 249
;         SR0_H=ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	sts _SR0_H,R16
	.dbline 250
;         ID=ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	mov R10,R16
	sts _ID,R10
	.dbline 251
;         SS_1; 
	sbi 0x18,4
	.dbline 252
;         delay_ms(10);  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 253
;         return(ID);  
	lds R16,_ID
	.dbline -2
L129:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbend
	.dbfunc e RdAPC _RdAPC fV
	.even
_RdAPC::
	st -y,R10
	.dbline -1
	.dbline 260
; }  
; 
; /**************************************************************************  
; *    函数原型: void RD_APC(void);  
; *    功    能: 读取APC  
; **************************************************************************/  
; void RdAPC(void){  
	.dbline 261
;         ISD_SendData(RD_APC);  
	ldi R16,84
	ldi R17,0
	xcall _ISD_SendData
	.dbline 262
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 263
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 264
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 265
;         SS_1;  
	sbi 0x18,4
	.dbline 266
;         delay_ms(10);        //延迟10ms  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 268
; 
;         SR0_L=ISD_SendData(RD_APC);  //SR0低位
	ldi R16,84
	ldi R17,0
	xcall _ISD_SendData
	sts _SR0_L,R16
	.dbline 269
;         SR0_H=ISD_SendData(0x00);  //SR0高位
	clr R16
	clr R17
	xcall _ISD_SendData
	sts _SR0_H,R16
	.dbline 270
;         APCL=ISD_SendData(0x00);  //APC低位
	clr R16
	clr R17
	xcall _ISD_SendData
	mov R10,R16
	sts _APCL,R10
	.dbline 271
;         APCH=ISD_SendData(0x00);  //APC高位
	clr R16
	clr R17
	xcall _ISD_SendData
	mov R10,R16
	sts _APCH,R10
	.dbline 272
;         SS_1;  
	sbi 0x18,4
	.dbline 273
;         delay_ms(10);             //延迟10ms  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L130:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbend
	.dbfunc e ISD_WR_APC2 _ISD_WR_APC2 fV
;     voiceValue -> R10
	.even
_ISD_WR_APC2::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 280
; }  
; 
; /**************************************************************************  
; *    函数原型: void ISD_WR_APC2(uchar voiceValue);  
; *    功    能: 设置APC2  
; **************************************************************************/  
; void ISD_WR_APC2(uchar voiceValue){  
	.dbline 281
;         ISD_SendData(WR_APC2);  
	ldi R16,117
	ldi R17,0
	xcall _ISD_SendData
	.dbline 282
;         ISD_SendData(0x60|voiceValue);      //0xa8声音最大,0xaf声音最小  
	mov R16,R10
	clr R17
	ori R16,96
	xcall _ISD_SendData
	.dbline 283
;         ISD_SendData(0x0d);            //开的是外部扬声器    
	ldi R16,13
	ldi R17,0
	xcall _ISD_SendData
	.dbline 286
; //D11=1,在SETPLAY模式下,执行到EOM自动结束。或者在连续两个SET_PLAY命令后,
; //执行到第一个EOM自动跳到第二段开始  
;         SS_1;  
	sbi 0x18,4
	.dbline 287
;         delay_ms(10);               //延迟10ms  
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 288
;         ISD_WR_NVCFG();                        //永久写入寄存器  
	xcall _ISD_WR_NVCFG
	.dbline -2
L131:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r voiceValue 10 c
	.dbend
	.dbfunc e SetERASE _SetERASE fV
;       Add_ED_L -> R12
;       Add_ED_H -> R10
;       Add_ST_L -> R20
;       Add_ST_H -> R14
;         Add_ED -> y+4
;         Add_ST -> y+2
;           cNum -> R10
	.even
_SetERASE::
	xcall push_xgset30FC
	mov R10,R16
	sbiw R28,6
	.dbline -1
	.dbline 296
; }  
; 
; /**************************************************************************  
; *    函数原型: void SetERASE(uchar cNum);  
; *    功    能: 定点删除,容易破坏存储结构(CMA),所以不用  
; **************************************************************************/  
;   
; void SetERASE(uchar cNum){  
	.dbline 301
; 
;         uint Add_ST,Add_ED;
; 		uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L;  
; 		
; 		GetToneAdd(cNum, &Add_ST, &Add_ED);
	movw R24,R28
	adiw R24,4
	std y+1,R25
	std y+0,R24
	movw R18,R28
	subi R18,254  ; offset = 2
	sbci R19,255
	mov R16,R10
	xcall _GetToneAdd
	.dbline 303
; 		
;         Add_ST_L=(uchar)(Add_ST&0xff);  
	ldd R20,y+2
	andi R21,0
	.dbline 304
;         Add_ST_H=(uchar)(Add_ST>>8);  
	ldd R14,y+2
	ldd R15,y+3
	mov R14,R15
	clr R15
	.dbline 305
;         Add_ED_L=(uchar)(Add_ED&0xff);  
	ldd R24,y+4
	ldd R25,y+5
	andi R25,0
	mov R12,R24
	.dbline 306
;         Add_ED_H=(uchar)(Add_ED>>8);  
	ldd R10,y+4
	ldd R11,y+5
	mov R10,R11
	clr R11
	.dbline 308
; 		 
;         ISD_SendData(SET_ERASE);  
	ldi R16,146
	ldi R17,0
	xcall _ISD_SendData
	.dbline 309
;         ISD_SendData(0x00);  
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 310
;         ISD_SendData(Add_ST_L);          //S7:S0  开始地址  
	mov R16,R20
	clr R17
	xcall _ISD_SendData
	.dbline 311
;         ISD_SendData(Add_ST_H);          //S10:S8  
	mov R16,R14
	clr R17
	xcall _ISD_SendData
	.dbline 312
;         ISD_SendData(Add_ED_L);          //E7:E0  结束地址  
	mov R16,R12
	clr R17
	xcall _ISD_SendData
	.dbline 313
;         ISD_SendData(Add_ED_H);          //E10:E8  
	mov R16,R10
	clr R17
	xcall _ISD_SendData
	.dbline 314
;         ISD_SendData(0x00);
	clr R16
	clr R17
	xcall _ISD_SendData
	.dbline 315
; 		SS_1;
	sbi 0x18,4
	.dbline 316
; 		delay_ms(120);  
	ldi R16,1

⌨️ 快捷键说明

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