📄 mainsrc.lst
字号:
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 + -