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

📄 mainsrc.lst

📁 DTMF信号产生原程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
     702 024c bfb0                  AND                     #0FF00H
         024d ff00  
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Mon Aug  2 11:21:40 2004
Copyright (c) 1987-1999  Texas Instruments Incorporated 
mainsrc.asm                                                          PAGE   17

     703 024e 6d45                  OR                      MAIN_TEMP_0
     704 024f 9080                  SACL            *               
     705                            
     706 0250       _CHECK_NUM_CLR_DTMF:
     707                            ;将NO_DTMF_COUNT计数清零
     708 0250 1046                  LACC            MAIN_TEMP_1   
     709 0251 bf90                  ADD                     #NO_DTMF_COUNT
         0252 0830  
     710 0253 9047                  SACL            MAIN_TEMP_2
     711 0254 0147                  LAR                     AR1 , MAIN_TEMP_2
     712                            
     713 0255 1080                  LACC            *  
     714 0256 9047                  SACL            MAIN_TEMP_2
     715                            
     716 0257 bf80                  LACC            #0H 
         0258 0000  
     717 0259 9080                  SACL            * , 0;                   
     718                                                 
     719 025a 7980                  B                       _CHECK_NUM_END
         025b 0284' 
     720                            ;!DEBUG
     721 025c 1061                  LACC        ASP_SEND_W_PTR  
     722 025d bf90                  ADD                     #ASP_SEND_BUF
         025e 0380  
     723 025f 9062                  SACL            ASP_POINTER
     724 0260 0162                  LAR                     AR1 ,  ASP_POINTER  
     725 0261 1046                  LACC            MAIN_TEMP_1 
     726 0262 bfb0                  AND                     #0FFH
         0263 00ff  
     727 0264 9080                  SACL            *
     728                            
     729 0265 1061                  LACC        ASP_SEND_W_PTR
     730 0266 b801                  ADD                     #1H
     731 0267 bfb0                  AND                     #3FH
         0268 003f  
     732 0269 9061                  SACL            ASP_SEND_W_PTR  
     733                            
     734 026a 1061                  LACC        ASP_SEND_W_PTR  
     735 026b bf90                  ADD                     #ASP_SEND_BUF
         026c 0380  
     736 026d 9062                  SACL            ASP_POINTER
     737 026e 0162                  LAR                     AR1 ,  ASP_POINTER   
     738 026f 1044                  LACC            MAIN_TEMP_3 
     739 0270 bfb0                  AND                     #0FFH
         0271 00ff  
     740 0272 9080                  SACL            *
     741                            
     742 0273 1061                  LACC        ASP_SEND_W_PTR
     743 0274 b801                  ADD                     #1H
     744 0275 bfb0                  AND                     #3FH
         0276 003f  
     745 0277 9061                  SACL            ASP_SEND_W_PTR
     746                            
     747 0278 1061                  LACC        ASP_SEND_W_PTR  
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Mon Aug  2 11:21:40 2004
Copyright (c) 1987-1999  Texas Instruments Incorporated 
mainsrc.asm                                                          PAGE   18

     748 0279 bf90                  ADD                     #ASP_SEND_BUF
         027a 0380  
     749 027b 9062                  SACL            ASP_POINTER
     750 027c 0162                  LAR                     AR1 ,  ASP_POINTER   
     751 027d 1047                  LACC            MAIN_TEMP_2 
     752 027e 9080                  SACL            *
     753                            
     754 027f 1061                  LACC        ASP_SEND_W_PTR
     755 0280 b801                  ADD                     #1H
     756 0281 bfb0                  AND                     #3FH
         0282 003f  
     757 0283 9061                  SACL            ASP_SEND_W_PTR  
     758                            
     759 0284       _CHECK_NUM_END:                 
     760 0284 ef00                  RET  
     761            
     762            ;**********************************************************
     763            ;***清除1f指定的时隙的数据缓冲区为0 ,并设定发送到cpu的清    
     764            ;***没有检测到数据,而且一次发送已经完成后就清除发送   
     765            ;***#acc0 缓冲的数据低4位为mfc  
     766            ;**********************************************************
     767 0285       FUN_NO_DTMF_PRO:
     768                    ;取出当前检测的时隙数字    
     769                            ;*************************************************    
     770 0285 8b89                  MAR                     * , AR1 
     771 0286 101f                  LACC            DEC_TIMESLOT_INDEX
     772 0287 bf90                  ADD                     #TIME_SLOT_TBL , 0 
         0288 01ce+ 
     773 0289 a646                  TBLR            MAIN_TEMP_1   
     774                            
     775 028a 1046                  LACC            MAIN_TEMP_1 
     776 028b bf90                  ADD                     #RECIEVE_DTMF_BUF 
         028c 0810  
     777 028d 9047                  SACL            MAIN_TEMP_2
     778 028e 0147                  LAR                     AR1 , MAIN_TEMP_2  
     779                            
     780 028f 1080                  LACC            *
     781 0290 bfa0                  SUB                     #07FFFH
         0291 7fff  
     782 0292 e388                  BCND            NO_DTMF_END , EQ  
         0293 02b5' 
     783                            
     784                            ;统计NO_DTMF_COUNT
     785 0294 1046                  LACC            MAIN_TEMP_1 
     786 0295 bf90                  ADD                     #NO_DTMF_COUNT 
         0296 0830  
     787 0297 9044                  SACL            MAIN_TEMP_3
     788 0298 0144                  LAR                     AR1 , MAIN_TEMP_3  
     789                            
     790 0299 1080                  LACC            *
     791 029a b801                  ADD                     #1H
     792 029b 9080                  SACL            *
     793                            
     794 029c ba02                  SUB                     #VAL_NO_DTMF_MAX
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Mon Aug  2 11:21:40 2004
Copyright (c) 1987-1999  Texas Instruments Incorporated 
mainsrc.asm                                                          PAGE   19

     795 029d e344                  BCND            NO_DTMF_END , LT 
         029e 02b5' 
     796                            
     797 029f 0147                  LAR                     AR1 , MAIN_TEMP_2
     798                             
     799                            ;将数据设为没有发送数据
     800 02a0 bf80                  LACC            #07FFFH
         02a1 7fff  
     801 02a2 9080                  SACL            * 
     802                            
     803                            ;发送DTMF到交换矩阵
     804                            ;*************************************************      
     805 02a3 1046                  LACC            MAIN_TEMP_1
     806 02a4 be0a                  SFR
     807 02a5 bf90                  ADD                     #SEND_DTMF_BUF
         02a6 0800  
     808 02a7 9047                  SACL            MAIN_TEMP_2
     809                            
     810 02a8 0147                  LAR                     AR1 ,  MAIN_TEMP_2 
     811 02a9 1080                  LACC            *               
     812                                    
     813                            ;低时隙,高8位,高时隙低8位     
     814 02aa 4f46                  BIT                     MAIN_TEMP_1 , 15        
     815 02ab e100                  BCND            NO_DTMF_HIGH , TC  
         02ac 02b2' 
     816                                            
     817 02ad bfb0                  AND                     #0FFH
         02ae 00ff  
     818 02af 9080                  SACL            *
     819 02b0 7980                  B                   NO_DTMF_END   
         02b1 02b5' 
     820                            
     821 02b2       NO_DTMF_HIGH:                   
     822 02b2 bfb0                  AND                     #0FF00H
         02b3 ff00  
     823 02b4 9080                  SACL            *
     824                                            
     825 02b5       NO_DTMF_END:
     826                            
     827 02b5 ef00                  RET    
     828            
     829            **********************************************************
     830            *** Goerztel能量计算
     831            ***     ;f(n)*f(n)-2*cosf*f(n)*f(n-1)+f(n-1)*f(n-1) 
     832            ***     =(f(n)-f(n-1)) * (f(n)-f(n-1))-2*f(n)*f(n-1)*(1+cosf)
     833            *** 临时变量VAR_GOERZTEL    
     834            *** 不变量1ch=#1    
     835            *** 返回时计算结果保存在acc并且ar1=ar1-1
     836            **********************************************************              
     837 02b6       FUN_GOERTZEL_EN:
     838                            ;Fx=(1+cosf)
     839                            ;VAR_GOERZTEL = (1+cosf)
     840                            ;***************************   
     841 02b6 bf8f                  LACC            #8000H , 15    ;1,作为定点算法的Q15
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Mon Aug  2 11:21:40 2004
Copyright (c) 1987-1999  Texas Instruments Incorporated 
mainsrc.asm                                                          PAGE   20

         02b7 8000  
     842 02b8 2f99                  ADD                     *- , 15 , AR1 
     843 02b9 9829                  SACH            VAR_GOERZTEL 
     844                            
     845                            ;VAR_GOERZTEL=fx=2*(1+cosf)*f(n-1)
     846                            ;****************************           
     847 02ba 7390                  LT                      *-                
     848 02bb 5429                  MPY                     VAR_GOERZTEL
     849 02bc be03                  PAC             
     850 02bd 9929                  SACH            VAR_GOERZTEL , 1   
     851                            
     852                            ;VAR_GOERZTEL=fx=2*(1+cosf)*f(n-2)*f(n-1) 
     853                            ;*****************************
     854 02be 73a0                  LT                      *+               
     855 02bf 5429                  MPY                     VAR_GOERZTEL 
     856 02c0 be03                  PAC                     
     857 02c1 9929                  SACH            VAR_GOERZTEL , 1    
     858                            
     859                            ;Fx=abs(f(n-1)-f(n-2))          
     860 02c2 1f90                  LACC            *- , 15          
     861 02c3 3f80                  SUB                     * , 15
     862 02c4 be00                  ABS                     
     863 02c5 9880                  SACH            * , 0     
     864                            
     865                            ; (abs(f(n-1)-f(n-2)))^2-2*2*(1+cosf)*f(n-2)*f(n-1)             
     866 02c6 7380                  LT                      *                
     867 02c7 5480                  MPY                     * 
     868 02c8 be03                  PAC                      ;注意数据保存在低位
     869 02c9 3f29                  SUB                     VAR_GOERZTEL , 15         ;返回时计算结果保存在acc并且ar1=ar1-1
     870 02ca ef00                  RET
     871                            
     872            *******************************************************
     873            ***GOERTZEL算法中的(f(n-2)与f(n-1))计算 
     874            *** f(n)=2*f(n-1)*cosf-f(n-2)+x(n) 
     875            ***输入参数: ar7,每次运算循环个数 一次滤波时应该是102个
     876            ***          ar1,f(n)(第一个),f(n-1)(第二个)的起始地址
     877            ***                      27H,运算的次数 =8次,
     878            ***              后向运算应该为4次对应于4个后向频率 ,二次滤波应该为1次 
     879            ***                      ar3,cosf的起始地址,为#100H  二次滤波应该为9
     880            ***                      ar2,数据缓冲区指针       
     881            ***                     全局变量GOERTZEL_DEC_COUNT,GOERTZEL_DEC_DATA_PTR  
     882            *******************************************************                      
     883 02cb       FUN_GOERTZEL_ADD:
     884 02cb 738a                  LT                      * , AR2  
     885 02cc 1075                  LACC            DIV_VALUE_VAR   
     886 02cd e308                  BCND        _GOERTZEL_ADD1 , NEQ
         02ce 02db' 
     887                            
     888 02cf       _GOERTZEL_ADD:
     889 02cf 1aa9                  LACC            *+ , VAL_VALUE_DIV , AR1   ;x(n)-f(n-2)+2*f(n-1)*cosf
     890 02d0 6590                  SUB                     *- , 16
     891 02d1 548

⌨️ 快捷键说明

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