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

📄 测试.lst

📁 ISD1720芯片实现录音,定点录音,播放,定点播放等.
💻 LST
📖 第 1 页 / 共 5 页
字号:
     663 9508      RET
_RD_DevID:
     664 92AA      ST	R10,-Y
(0237) }
(0238) /**************************************************************************  
(0239) *    函数原型: void RdStatus(void);  
(0240) *    功    能: 读取ID  
(0241) **************************************************************************/  
(0242) uchar RD_DevID(void){  
(0243)         ISD_SendData(RD_DEVID);  
     665 E109      LDI	R16,0x19
     666 E010      LDI	R17,0
     667 DF20      RCALL	_ISD_SendData
(0244)         ISD_SendData(0x00);  
     668 2700      CLR	R16
     669 2711      CLR	R17
     66A DF1D      RCALL	_ISD_SendData
(0245)         ISD_SendData(0x00);  
     66B 2700      CLR	R16
     66C 2711      CLR	R17
     66D DF1A      RCALL	_ISD_SendData
(0246)         SS_1;  
     66E 9AC4      SBI	0x18,4
(0247)         delay_ms(10);               //延迟10ms  
     66F E00A      LDI	R16,0xA
     670 E010      LDI	R17,0
     671 DD1E      RCALL	_delay_ms
(0248)         SR0_L=ISD_SendData(RD_DEVID);  
     672 E109      LDI	R16,0x19
     673 E010      LDI	R17,0
     674 DF13      RCALL	_ISD_SendData
     675 9300 00D9 STS	SR0_L,R16
(0249)         SR0_H=ISD_SendData(0x00);  
     677 2700      CLR	R16
     678 2711      CLR	R17
     679 DF0E      RCALL	_ISD_SendData
     67A 9300 00D8 STS	SR0_H,R16
(0250)         ID=ISD_SendData(0x00);  
     67C 2700      CLR	R16
     67D 2711      CLR	R17
     67E DF09      RCALL	_ISD_SendData
     67F 2EA0      MOV	R10,R16
     680 92A0 00D6 STS	ID,R10
(0251)         SS_1; 
     682 9AC4      SBI	0x18,4
(0252)         delay_ms(10);  
     683 E00A      LDI	R16,0xA
     684 E010      LDI	R17,0
     685 DD0A      RCALL	_delay_ms
(0253)         return(ID);  
     686 9100 00D6 LDS	R16,ID
     688 90A9      LD	R10,Y+
     689 9508      RET
_RdAPC:
     68A 92AA      ST	R10,-Y
(0254) }  
(0255) 
(0256) /**************************************************************************  
(0257) *    函数原型: void RD_APC(void);  
(0258) *    功    能: 读取APC  
(0259) **************************************************************************/  
(0260) void RdAPC(void){  
(0261)         ISD_SendData(RD_APC);  
     68B E504      LDI	R16,0x54
     68C E010      LDI	R17,0
     68D DEFA      RCALL	_ISD_SendData
(0262)         ISD_SendData(0x00);  
     68E 2700      CLR	R16
     68F 2711      CLR	R17
     690 DEF7      RCALL	_ISD_SendData
(0263)         ISD_SendData(0x00);  
     691 2700      CLR	R16
     692 2711      CLR	R17
     693 DEF4      RCALL	_ISD_SendData
(0264)         ISD_SendData(0x00);  
     694 2700      CLR	R16
     695 2711      CLR	R17
     696 DEF1      RCALL	_ISD_SendData
(0265)         SS_1;  
     697 9AC4      SBI	0x18,4
(0266)         delay_ms(10);        //延迟10ms  
     698 E00A      LDI	R16,0xA
     699 E010      LDI	R17,0
     69A DCF5      RCALL	_delay_ms
(0267) 
(0268)         SR0_L=ISD_SendData(RD_APC);  //SR0低位
     69B E504      LDI	R16,0x54
     69C E010      LDI	R17,0
     69D DEEA      RCALL	_ISD_SendData
     69E 9300 00D9 STS	SR0_L,R16
(0269)         SR0_H=ISD_SendData(0x00);  //SR0高位
     6A0 2700      CLR	R16
     6A1 2711      CLR	R17
     6A2 DEE5      RCALL	_ISD_SendData
     6A3 9300 00D8 STS	SR0_H,R16
(0270)         APCL=ISD_SendData(0x00);  //APC低位
     6A5 2700      CLR	R16
     6A6 2711      CLR	R17
     6A7 DEE0      RCALL	_ISD_SendData
     6A8 2EA0      MOV	R10,R16
     6A9 92A0 00D4 STS	APCL,R10
(0271)         APCH=ISD_SendData(0x00);  //APC高位
     6AB 2700      CLR	R16
     6AC 2711      CLR	R17
     6AD DEDA      RCALL	_ISD_SendData
     6AE 2EA0      MOV	R10,R16
     6AF 92A0 00D5 STS	APCH,R10
(0272)         SS_1;  
     6B1 9AC4      SBI	0x18,4
(0273)         delay_ms(10);             //延迟10ms  
     6B2 E00A      LDI	R16,0xA
     6B3 E010      LDI	R17,0
     6B4 DCDB      RCALL	_delay_ms
     6B5 90A9      LD	R10,Y+
     6B6 9508      RET
_ISD_WR_APC2:
  voiceValue           --> R10
     6B7 92AA      ST	R10,-Y
     6B8 2EA0      MOV	R10,R16
(0274) }  
(0275) 
(0276) /**************************************************************************  
(0277) *    函数原型: void ISD_WR_APC2(uchar voiceValue);  
(0278) *    功    能: 设置APC2  
(0279) **************************************************************************/  
(0280) void ISD_WR_APC2(uchar voiceValue){  
(0281)         ISD_SendData(WR_APC2);  
     6B9 E705      LDI	R16,0x75
     6BA E010      LDI	R17,0
     6BB DECC      RCALL	_ISD_SendData
(0282)         ISD_SendData(0x60|voiceValue);      //0xa8声音最大,0xaf声音最小  
     6BC 2D0A      MOV	R16,R10
     6BD 2711      CLR	R17
     6BE 6600      ORI	R16,0x60
     6BF DEC8      RCALL	_ISD_SendData
(0283)         ISD_SendData(0x0d);            //开的是外部扬声器    
     6C0 E00D      LDI	R16,0xD
     6C1 E010      LDI	R17,0
     6C2 DEC5      RCALL	_ISD_SendData
(0284) //D11=1,在SETPLAY模式下,执行到EOM自动结束。或者在连续两个SET_PLAY命令后,
(0285) //执行到第一个EOM自动跳到第二段开始  
(0286)         SS_1;  
     6C3 9AC4      SBI	0x18,4
(0287)         delay_ms(10);               //延迟10ms  
     6C4 E00A      LDI	R16,0xA
     6C5 E010      LDI	R17,0
     6C6 DCC9      RCALL	_delay_ms
(0288)         ISD_WR_NVCFG();                        //永久写入寄存器  
     6C7 DF3F      RCALL	_ISD_WR_NVCFG
     6C8 90A9      LD	R10,Y+
     6C9 9508      RET
_SetERASE:
  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
     6CA 940E 09A5 CALL	push_xgset30FC
     6CC 2EA0      MOV	R10,R16
     6CD 9726      SBIW	R28,6
(0289) }  
(0290) 
(0291) /**************************************************************************  
(0292) *    函数原型: void SetERASE(uchar cNum);  
(0293) *    功    能: 定点删除,容易破坏存储结构(CMA),所以不用  
(0294) **************************************************************************/  
(0295)   
(0296) void SetERASE(uchar cNum){  
(0297) 
(0298)         uint Add_ST,Add_ED;
(0299) 		uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L;  
(0300) 		
(0301) 		GetToneAdd(cNum, &Add_ST, &Add_ED);
     6CE 01CE      MOVW	R24,R28
     6CF 9604      ADIW	R24,4
     6D0 8399      STD	Y+1,R25
     6D1 8388      STD	Y+0,R24
     6D2 019E      MOVW	R18,R28
     6D3 5F2E      SUBI	R18,0xFE
     6D4 4F3F      SBCI	R19,0xFF
     6D5 2D0A      MOV	R16,R10
     6D6 DEBC      RCALL	_GetToneAdd
(0302) 		
(0303)         Add_ST_L=(uchar)(Add_ST&0xff);  
     6D7 814A      LDD	R20,Y+2
     6D8 7050      ANDI	R21,0
(0304)         Add_ST_H=(uchar)(Add_ST>>8);  
     6D9 80EA      LDD	R14,Y+2
     6DA 80FB      LDD	R15,Y+3
     6DB 2CEF      MOV	R14,R15
     6DC 24FF      CLR	R15
(0305)         Add_ED_L=(uchar)(Add_ED&0xff);  
     6DD 818C      LDD	R24,Y+4
     6DE 819D      LDD	R25,Y+5
     6DF 7090      ANDI	R25,0
     6E0 2EC8      MOV	R12,R24
(0306)         Add_ED_H=(uchar)(Add_ED>>8);  
     6E1 80AC      LDD	R10,Y+4
     6E2 80BD      LDD	R11,Y+5
     6E3 2CAB      MOV	R10,R11
     6E4 24BB      CLR	R11
(0307) 		 
(0308)         ISD_SendData(SET_ERASE);  
     6E5 E902      LDI	R16,0x92
     6E6 E010      LDI	R17,0
     6E7 DEA0      RCALL	_ISD_SendData
(0309)         ISD_SendData(0x00);  
     6E8 2700      CLR	R16
     6E9 2711      CLR	R17
     6EA DE9D      RCALL	_ISD_SendData
(0310)         ISD_SendData(Add_ST_L);          //S7:S0  开始地址  
     6EB 2F04      MOV	R16,R20
     6EC 2711      CLR	R17
     6ED DE9A      RCALL	_ISD_SendData
(0311)         ISD_SendData(Add_ST_H);          //S10:S8  
     6EE 2D0E      MOV	R16,R14
     6EF 2711      CLR	R17
     6F0 DE97      RCALL	_ISD_SendData
(0312)         ISD_SendData(Add_ED_L);          //E7:E0  结束地址  
     6F1 2D0C      MOV	R16,R12
     6F2 2711      CLR	R17
     6F3 DE94      RCALL	_ISD_SendData
(0313)         ISD_SendData(Add_ED_H);          //E10:E8  
     6F4 2D0A      MOV	R16,R10
     6F5 2711      CLR	R17
     6F6 DE91      RCALL	_ISD_SendData
(0314)         ISD_SendData(0x00);
     6F7 2700      CLR	R16
     6F8 2711      CLR	R17
     6F9 DE8E      RCALL	_ISD_SendData
(0315) 		SS_1;
     6FA 9AC4      SBI	0x18,4
(0316) 		delay_ms(120);  
     6FB E708      LDI	R16,0x78
     6FC E010      LDI	R17,0
     6FD DC92      RCALL	_delay_ms
(0317) 	do{ 
(0318)                 RdStatus();
     6FE DF29      RCALL	_RdStatus
(0319)        // }while((SR0_L&0x01)||((SR1&0x08)));        //if(SR0_L^0==1){system Err}<CMD_Err==1>  
(0320)         }while((SR0_L&0x11)&&(!(SR1&0x01)));        //if(SR0_L^0==1){system Err}<CMD_Err==1>     
     6FF 9180 00D9 LDS	R24,SR0_L
     701 7181      ANDI	R24,0x11
     702 F021      BEQ	0x0707
     703 9020 00D7 LDS	R2,SR1
     705 FE20      SBRS	R2,0
     706 CFF7      RJMP	0x06FE
     707 9626      ADIW	R28,6
     708 940C 098F JMP	pop_xgset30FC
_SetPLAY:
  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
     70A 940E 09A5 CALL	push_xgset30FC
     70C 2EA0      MOV	R10,R16
     70D 9726      SBIW	R28,6
(0321) }
(0322) 
(0323) /**************************************************************************  
(0324) *    函数原型: void SetPLAY(uchar cNum);  
(0325) *    功    能: 定点播放  
(0326) **************************************************************************/  
(0327) void SetPLAY(uchar cNum)
(0328) {  
(0329)         uint Add_ST,Add_ED;
(0330) 		uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L;  
(0331) 
(0332)         do{  
(0333)                 RdStatus(); 
     70E DF19      RCALL	_RdStatus
(0334)         }while(SR0_L&0x01);        
     70F 9020 00D9 LDS	R2,SR0_L
     711 FC20      SBRC	R2,0
     712 CFFB      RJMP	0x070E
(0335) 		//if(SR0_L^0==1){system Err}<CMD_Err==1>  
(0336) 
(0337)         ClrInt();//清除中断
     713 DEE8      RCALL	_ClrInt
(0338) 		do{  
(0339)                 RdStatus(); 
     714 DF13      RCALL	_RdStatus
(0340)         }while(!(SR1&0x01)); 
     715 9020 00D7 LDS	R2,SR1
     717 FE20      SBRS	R2,0
     718 CFFB      RJMP	0x0714
(0341) 		
(0342) 		GetToneAdd(cNum, &Add_ST, &Add_ED);//取得播放地址
     719 01CE      MOVW	R24,R28
     71A 9604      ADIW	R24,4
     71B 8399      STD	Y+1,R25
     71C 8388      STD	Y+0,R24
     71D 019E      MOVW	R18,R28
     71E 5F2E      SUBI	R18,0xFE
     71F 4F3F      SBCI	R19,0xFF
     720 2D0A      MOV	R16,R10
     721 DE71      RCALL	_GetToneAdd
(0343) 		
(0344)         Add_ST_L=(uchar)(Add_ST&0x00ff);  //开始播放的地址
     722 814A      LDD	R20,Y+2
     723 7050      ANDI	R21,0
(0345)         Add_ST_H=(uchar)((Add_ST>>8)&0x00ff);  
     724 818A      LDD	R24,Y+2
     725 819B      LDD	R25,Y+3
     726 2F89      MOV	R24,R25
     727 2799      CLR	R25
     728 7090      ANDI	R25,0
     729 2EE8      MOV	R14,R24
(0346)         Add_ED_L=(uchar)(Add_ED&0x00ff);  //播放结束地址
     72A 818C      LDD	R24,Y+4
     72B 819D      LDD	R25,Y+5
     72C 7090      ANDI	R25,0
     72D 2EC8      MOV	R12,R24
(0347)         Add_ED_H=(uchar)((Add_ED>>8)&0x00ff);
     72E 818C      LDD	R24,Y+4
     72F 819D      LDD	R25,Y+5
     730 2F89      MOV	R24,R25
     731 2799      CLR	R25
     732 7090      ANDI	R25,0
     733 2EA8      MOV	R10,R24
(0348) 		  
(0349)         ISD_SendData(SET_PLAY);  
     734 E900      LDI	R16,0x90
     735 E010      LDI	R17,0
     736 DE51      RCALL	_ISD_SendData
(0350)         ISD_SendData(0x00);  
     737 2700      CLR	R16
     738 2711      CLR	R17
     739 DE4E      RCALL	_ISD_SendData
(0351)         ISD_SendData(Add_ST_L);                 //S7:S0  开始地址  
     73A 2F04      MOV	R16,R20
     73B 2711      CLR	R17
     73C DE4B      RCALL	_ISD_SendData
(0352)         ISD_SendData(Add_ST_H);                  //S10:S8  
     73D 2D0E      MOV	R16,R14
     73E 2711      CLR	R17
     73F DE48      RCALL	_ISD_SendData
(0353)         ISD_SendData(Add_ED_L);                  //E7:E0  结束地址  
     740 2D0C      MOV	R16,R12
     741 2711      CLR	R17
     742 DE45      RCALL	_ISD_SendData
(0354)         ISD_SendData(Add_ED_H);                  //E10:E8  
     743 2D0A      MOV	R16,R10
     744 2711      CLR	R17
     745 DE42      RCALL	_ISD_SendData
(0355)         ISD_SendData(0x00);  
     746 2700      CLR	R16
  

⌨️ 快捷键说明

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