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

📄 mainsrc.lst

📁 DTMF信号产生原程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
     529 01ba be04                  APAC
     530 01bb 98af                  SACH            *+ , 0 , AR7
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   13

     531 01bc e322                  BCND            GOERTZEL_2_COL_COMPUTE_EN , OV     ;如果溢出则开始计算能量值
         01bd 01c0' 
     532 01be 7b9a                  BANZ            GOERTZEL_2_COL_ADD1 , *- , AR2          
         01bf 01b4' 
     533            
     534                    
     535 01c0       GOERTZEL_2_COL_COMPUTE_EN:
     536 01c0 0245                  LAR                     AR2 , MAIN_TEMP_0
     537 01c1 bf09                  LAR                     AR1 , #(GOERTZEL_EN+11H)
         01c2 0311  
     538                            
     539 01c3 7a8a                  CALL        FUN_GOERTZEL_EN , * , AR2
         01c4 02b6' 
     540                            
     541 01c5 732d                  LT                      DEC_COL_MAX_EN  
     542 01c6 cc00                  MPY                     #0C00H    
     543                            ;MPY                    #0600H 
     544 01c7 be05                  SPAC            
     545 01c8 be05                  SPAC  
     546 01c9 e38c                  BCND            CHANGE_DECT_SEC , GEQ
         01ca 01cf' 
     547                    
     548                    ;确认的确检测到数据,则取出数据进行处理 
     549                    ;***************************************************
     550 01cb 7a80          CALL        FUN_CHECK_NUM , *           
         01cc 0211' 
     551 01cd 7980          B           NEXT_TIMESLOT_DEC  
         01ce 01d8' 
     552                    
     553 01cf       CHANGE_DECT_SEC: ;二次滤波不成工进行第二次计算  
     554 01cf 1075                  LACC        DIV_VALUE_VAR
     555 01d0 e308                  BCND            NO_DTMF_SEND , NEQ
         01d1 01d6' 
     556                            
     557 01d2 ae75                  SPLK        #1, DIV_VALUE_VAR    
         01d3 0001  
     558 01d4 7980                  B           FUN_DEC_DTMF
         01d5 00f0' 
     559                    
     560                    
     561 01d6       NO_DTMF_SEND:  
     562                            ;没有检测到数据进行的处理
     563 01d6 7a80                  CALL             FUN_NO_DTMF_PRO, * 
         01d7 0285' 
     564                            
     565 01d8       NEXT_TIMESLOT_DEC:       
     566 01d8 101f          LACC            DEC_TIMESLOT_INDEX
     567 01d9 b801          ADD                     #1H 
     568 01da 901f          SACL            DEC_TIMESLOT_INDEX
     569 01db 731f          LT                      DEC_TIMESLOT_INDEX
     570 01dc c066          MPY                     #VAL_SLOTBUF_LONG
     571 01dd be03          PAC                     
     572 01de bf90          ADD                     #0B21H , 0   
         01df 0b21  
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   14

     573 01e0 903e          SACL            GOERTZEL_DEC_DATA_PTR  ;初始化下一检测时隙指针  
     574 01e1 ae75          SPLK        #0 , DIV_VALUE_VAR
         01e2 0000  
     575 01e3 101f          LACC            DEC_TIMESLOT_INDEX  ;1F,指示当前检测时隙指针
     576 01e4 ba20          SUB                     #20H
     577 01e5 e308          BCND            FUN_DEC_DTMF ,NEQ   
         01e6 00f0' 
     578            
     579                            ;所有缓冲区数据检测完成  ,初始化重新开始获取数据
     580                            ;***********************************************  
     581 01e7 ae75                  SPLK        #0H , DIV_VALUE_VAR    
         01e8 0000  
     582 01e9 ae20          SPLK            #0FFFFH , REC_DEC_STATE
         01ea ffff  
     583 01eb ae3e          SPLK            #RECDATA_BUF , GOERTZEL_DEC_DATA_PTR
         01ec 0b20  
     584 01ed ae1f          SPLK            #0H , DEC_TIMESLOT_INDEX  
         01ee 0000  
     585 01ef ae1a          SPLK            #VAL_SLOTBUF_LONG , REC_PCMDATA_COUNT
         01f0 0066  
     586 01f1 ae1b          SPLK            #RECDATA_BUF , REC_FTS_PCMDATA_PTR 
         01f2 0b20  
     587 01f3 ae5e          SPLK            #0H , BEGIN_REC_PCMDATA_FLAG  
         01f4 0000  
     588                         
     589 01f5 7980          B                       MAIN_LOOP 
         01f6 00e8' 
     590 01f7 ef00          RET    
     591              
     592            
     593             ;异步串口处理函数              
     594 01f8       FUN_ASP_PRO:   ;02CD
     595 01f8 af45              IN                  MAIN_TEMP_0 , IOSR
         01f9 fff6  
     596 01fa 1045              LACC                MAIN_TEMP_0
     597 01fb bfb0              AND                 #800H , 0    ;如果发送为空          
         01fc 0800  
     598 01fd e388              BCND        _ASP_PRO_END , EQ
         01fe 0210' 
     599            
     600 01ff       _ASP_PRO_0:             
     601                            ;!DEBUG  
     602                            ;SPLK        #55H , MAIN_TEMP_0
     603                            ;OUT         MAIN_TEMP_0  ,ADTR 
     604                            ;RET
     605                            
     606 01ff 1061                  LACC            ASP_SEND_W_PTR
     607 0200 3060                  SUB                     ASP_SEND_R_PTR  
     608 0201 e308                  BCND            _ASP_SEND , NEQ   ;发送缓冲区为空 
         0202 0204' 
     609 0203 ef00                  RET      
     610                            
     611 0204       _ASP_SEND:              
     612 0204 1060                  LACC        ASP_SEND_R_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   15

     613 0205 bf90                  ADD                     #ASP_SEND_BUF
         0206 0380  
     614 0207 9062                  SACL            ASP_POINTER
     615 0208 0162                  LAR                     AR1 ,  ASP_POINTER   ;读出一个字写入串口中
     616 0209 0c80                  OUT                     * , ADTR
         020a fff4  
     617                            
     618 020b 1060                  LACC        ASP_SEND_R_PTR
     619 020c b801                  ADD                     #1H
     620 020d bfb0                  AND                     #3FH
         020e 003f  
     621 020f 9060                  SACL            ASP_SEND_R_PTR          
     622 0210       _ASP_PRO_END:
     623 0210 ef00                  RET   
     624            **********************************************************   
     625            ***FUN_CHECK_NUM:  
     626            ***根据输入,检测出当前发送的DTMF数据,并将该数据写入指定的时隙中
     627            ***输入变量DEC_ROW_INDEX ,DEC_COL_INDEX  
     628            ***高时隙在低位,低时隙为高位
     629            **********************************************************              
     630 0211       FUN_CHECK_NUM:   
     631 0211 8b89                  MAR             * , AR1 
     632                            
     633                            ;查询找出DTMF数据   
     634                            ;*************************************************
     635 0212 732a                  LT                      DEC_ROW_INDEX
     636 0213 c004                  MPY                     #4H
     637 0214 be03                  PAC                     
     638 0215 202b                  ADD                     DEC_COL_INDEX 
     639 0216 bf90                  ADD                     #GET_DTMF_TBL           
         0217 01be+ 
     640 0218 a645                  TBLR            MAIN_TEMP_0   
     641                            
     642                            ;取出当前检测的时隙数字    
     643                            ;*************************************************
     644 0219 101f                  LACC            DEC_TIMESLOT_INDEX
     645 021a bf90                  ADD                     #TIME_SLOT_TBL , 0 
         021b 01ce+ 
     646 021c a646                  TBLR            MAIN_TEMP_1             
     647                            
     648 021d 1046                  LACC            MAIN_TEMP_1 
     649 021e bf90                  ADD                     #RECIEVE_DTMF_BUF 
         021f 0810  
     650 0220 9047                  SACL            MAIN_TEMP_2
     651 0221 0147                  LAR                     AR1 , MAIN_TEMP_2  
     652                            
     653                            ;查询是否已经收到过同样的DTMF
     654 0222 1080                  LACC            * 
     655 0223 bfb0                  AND                     #0FFH
         0224 00ff  
     656 0225 3045                  SUB                     MAIN_TEMP_0     
     657 0226 e388                  BCND            _CHECK_NUM_SEC , EQ   
         0227 022c' 
     658                            
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   16

     659                            ;第一次检测到DTMF保存DTMF
     660 0228 1045                  LACC            MAIN_TEMP_0
     661 0229 9080                  SACL            *  
     662 022a 7980                  B           _CHECK_NUM_END 
         022b 0284' 
     663                             
     664                            
     665 022c       _CHECK_NUM_SEC: 
     666                            ;已经收到过数据了,最高位为1则表示已经收到数据 并正在发送改数据
     667 022c 4080                  BIT                     * , 0
     668 022d e100                  BCND            _CHECK_NUM_END , TC 
         022e 0284' 
     669                            
     670 022f 1045                  LACC            MAIN_TEMP_0   
     671 0230 9044                  SACL            MAIN_TEMP_3
     672 0231 bfc0                  OR                      #8000H
         0232 8000  
     673 0233 9080                  SACL            *  
     674                                            
     675                            ;发送DTMF到交换矩阵
     676                            ;*************************************************              
     677 0234 1445                  LACC            MAIN_TEMP_0 , 4
     678 0235 bfb0                  AND             #0F0H
         0236 00f0  
     679 0237 bfc0                  OR                      #08H
         0238 0008  
     680 0239 9045                  SACL            MAIN_TEMP_0     
     681                            
     682 023a 1046                  LACC            MAIN_TEMP_1
     683 023b be0a                  SFR
     684 023c bf90                  ADD                     #SEND_DTMF_BUF
         023d 0800  
     685 023e 9047                  SACL            MAIN_TEMP_2
     686                            
     687 023f 0147                  LAR                     AR1 ,  MAIN_TEMP_2 
     688 0240 1080                  LACC            *         
     689                            
     690                            ;低时隙,高8位,高时隙低8位       
     691 0241 4f46                  BIT                 MAIN_TEMP_1 , 15
     692 0242 e100                  BCND            DTMF_IN_HIGH , TC 
         0243 024c' 
     693                                            
     694 0244 bfb0                  AND                     #0FFH
         0245 00ff  
     695 0246 9047                  SACL            MAIN_TEMP_2  
     696 0247 1845                  LACC            MAIN_TEMP_0 , 8
     697 0248 2047                  ADD         MAIN_TEMP_2                 
     698 0249 9080                  SACL            *    
     699 024a 7980                  B           _CHECK_NUM_CLR_DTMF
         024b 0250' 
     700                            
     701 024c       DTMF_IN_HIGH:           

⌨️ 快捷键说明

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