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

📄 cid.lst

📁 cid file. the prgram is used to get caller id
💻 LST
📖 第 1 页 / 共 5 页
字号:
                     <      	
00008DC4 04 71 10 00 <      	         .DW    P_Seg4, B_Com4, P_Seg4, B_Com5, P_Seg4, B_Com6;
         04 71 20 00
         04 71 40 00
00008DCA 05 71 10 00 <      	         .DW    P_Seg5, B_Com4, P_Seg5, B_Com5, P_Seg5, B_Com6, P_Seg5, B_Com7,0;
         05 71 20 00
         05 71 40 00
         05 71 80 00
         00 00      
                     <      	//-----------------------------------------------------------------------
                            	//----------------------------------------------------------------------
00008DD3                    	.Code
                            	_main:
00008DD3 40 F1              	        INT     OFF;                    //Disable Interrupt
00008DD4 09 93 AA 55        	        R1 = 0x55AA;
00008DD6 19 D3 16 70        	        [P_WatchdogClr] = R1            // reset watchdog
00008DD8 40 92              	        R1 = 0;
00008DD9 19 D3 12 70        	        [P_WakeUp] = R1;
00008DDB 19 D3 10 70        	        [P_Int] = R1;
00008DDD 19 D3 14 70        	        [P_IoaWakeUp] = R1;
00008DDF 42 92              	        R1 = B_NormalCpuClock;
00008DE0 19 D3 15 70        	        [P_SystemClock] = R1;
                            	
00008DE2 09 93 AA 55        	        r1 = 0x55aa;                    //clear Watchdog
00008DE4 19 D3 16 70        	        [P_WatchdogClr] = r1;
00008DE6 08 91 FF 03        	        sp = 0x03FF;                    //Initial stack
00008DE8 09 93 5D C0        	        r1 = B_2Hz+B_128Hz+B_512Hz+B_8KHz+B_Enable32768+B_Strong32768;
00008DEA 19 D3 18 70        	        [P_TimeBaseSet] = r1;           //Initial TimeBaseSet
00008DEC 11 93 13 70        	        r1 = [P_WakeUpClr];
00008DEE 19 D3 13 70        	        [P_WakeUpClr] = r1;             //clear Wake Up Register
                            	
00008DF0 40 92              	        r1 = 0;                         //Set IOA0~IOA7 as input port
00008DF1 19 D3 02 70        	        [P_IOA_Dir] = r1;
00008DF3 09 93 FF 00        	        r1 = 0x00FF;                    //Set IOB0~7 as output port
00008DF5 19 D3 07 70        	        [P_IOB_Dir] = r1;
00008DF7 09 93 00 FF        	        r1 = 0xFF00;                    //Enable Internal Pull-High for IOA0~7
00008DF9 19 D3 03 70        	        [P_IOA_PullR] = r1;
                            	
00008DFB 09 93 FF 00        	        R1 = 0x00FF;
00008DFD 19 D3 0A 70        	        [P_IOC_Dir] = R1;
00008DFF 19 D3 0D 70        	        [P_IOD_Dir] = R1;
                            	
00008E01 09 93 80 00        	        R1 = 0x0080;                    //B_HFO -> 0,  B_Mute -> 0, B_DP -> 1
00008E03 19 D3 05 70        	        [P_IOB_Data] = R1;
                            	
00008E05 40 92              	        R1 = 0;
00008E06 19 D3 08 70        	        [P_IOC_Data] = R1;
00008E08 19 D3 0B 70        	        [P_IOD_Data] = R1;
                            	
00008E0A 19 D3 2E 70        	        [P_LineDetCtrl] = R1;
                            	
00008E0C 09 93 83 00        	        R1 = B_EnRiDet+0x0003;
00008E0E 19 D3 28 70        	        [P_RiDet] = R1;
00008E10 43 92              	        R1 = 0x0003;
00008E11 19 D3 0E 70        	        [P_IOCD_Ctrl] = R1;
                            	
00008E13 40 94              	        r2 = 0;
00008E14 40 92              	        R1 = 0;
                            	ClrRAMLoop:
00008E15 D1 D4              	        [R1++] = R2;
00008E16 09 43 FF 03        	        CMP     R1,0x03FF;
00008E18 44 8E              	        JBE     ClrRAMLoop;
                            	
00008E19 40 F0 4E 8C        	        CALL    F_ClrLcd;
00008E1B 09 93 CF 00        	        r1 = 0x00cf;                    //Enable Lcd Display
00008E1D 19 D3 20 70        	        [P_LcdCtrl] = r1;
                            	
00008E1F 11 93 C5 00        	        R1 = [CidNumber];
00008E21 40 F0 D9 8B        	        CALL    F_ShowCidNumber;
                            	
00008E23 42 92              	        R1 = 2;
00008E24 0D 9B A2 8C        	        BP = Digit4;
00008E26 40 F0 3B 8C        	        CALL    F_ShowDigit;
00008E28 4A 92              	        R1 = 0x000A;
00008E29 0D 9B B1 8C        	        BP = Digit5;
00008E2B 40 F0 3B 8C        	        CALL    F_ShowDigit;
00008E2D 4A 92              	        R1 = 0x000A;
00008E2E 0D 9B C0 8C        	        BP = Digit6;
00008E30 40 F0 3B 8C        	        CALL    F_ShowDigit;
00008E32 45 92              	        R1 = 5;
00008E33 0D 9B CF 8C        	        BP = Digit7;
00008E35 40 F0 3B 8C        	        CALL    F_ShowDigit;
                            	
00008E37 60 92              	        R1 = B_T2KHzInt;
00008E38 19 D3 10 70        	        [P_Int] = r1;
00008E3A 43 F1              	        INT     FIQ,IRQ;                //Enable FIQ and IRQ
                            	//----------------------------------------------------------------------
                            	MainLoop:
00008E3B 09 93 AA 55        	        R1 = 0x55AA;
00008E3D 19 D3 16 70        	        [P_WatchdogClr] = R1            // reset watchdog
                            	
00008E3F 12 95 0C 70        	        R2 = [P_IOD_Buf];
00008E41 0A B5 F3 FF        	        R2 &= 0xFFF3;
00008E43 C0 93              	        R1 = [CidFlag];
00008E44 09 C3 00 80        	        TEST    R1,B_CidIsFsk;
00008E46 01 5E              	        JZ      MainLoop_10;
00008E47 44 A4              	        R2 |= 0x0004;
                            	MainLoop_10:
00008E48 09 C3 00 40        	        TEST    R1,B_CidIsDtmf;
00008E4A 01 5E              	        JZ      MainLoop_15;
00008E4B 48 A4              	        R2 |= 0x0008;
                            	MainLoop_15:
00008E4C 1A D5 0B 70        	        [P_IOD_Data] = R2;
                            	
00008E4E 40 F0 53 8E        	        call    F_DecodeCid
00008E50 56 EE              	        jmp     MainLoop
                            	
                            	//-----------------------------------------------------------------------
                            	V_DecodeCid:
00008E51 59 8E              	V_WaitCid:              .DW           F_WaitCid;
                            	.const   S_WaitCid                  = V_WaitCid - V_DecodeCid;
00008E52 69 8E              	V_ReceiveCid:           .DW           F_ReceiveCid;
                            	.const   S_ReceiveCid               = V_ReceiveCid - V_DecodeCid;
                            	
                            	//-----------------------------------------------------------------------
                            	F_DecodeCid:
00008E53 11 93 C0 00        	        R1 = [CidState];
00008E55 09 03 51 8E        	        R1 += V_DecodeCid;
00008E57 C1 9E              	        PC = [R1];
00008E58 C1 9E              	        PC = [R1];
                            	//-----------------------------------------------------------------------
                            	F_WaitCid:
                            	.ifdef   BoxDetDtmf
                            	        CALL    _F_EnableBoxDetDTMF;
                            	.else
00008E59 09 93 00 08        	        R1 = 0x0800;         //FSK reject power
00008E5B 0A 95 00 20        	        R2 = 0x2000;         //DTMF reject power
00008E5D 0B 97 FF FF        	        R3 = 0xFFFF;         //0: Not detect DTMF
                            	                             //Non Zero: detect DTMF
00008E5F 40 F0 64 87        	        CALL     _F_EnableCidDecoder
                            	.endif
00008E61 09 93 00 0C        	        R1 = 6*512;
00008E63 19 D3 BF 00        	        [RW_512HzTmr] = R1;
                            	
00008E65 41 92              	        R1 = S_ReceiveCid;
00008E66 19 D3 C0 00        	        [CidState] = R1;
00008E68 90 9A              	        RETF;
                            	
                            	//-----------------------------------------------------------------------
                            	F_ReceiveCid:
00008E69 C0 93              	        r1 = [CidFlag]
00008E6A 09 C3 00 01        	        test    r1,B_FskIsOver          //Check if Have FSK signal and it is over
00008E6C 02 5E              	        jz      CheckDtmf;
00008E6D 80 FE E8 8E        	        goto    ParseFskCid;            //Yes, parse FSK data
                            	
                            	CheckDtmf:
00008E6F 09 C3 00 02        	        test    r1,B_DtmfReady          //Check if sample data of DTMF is ready
00008E71 1C 5E              	        jz      CheckIfTimeOut          //No, check if CID time out
                            	
00008E72 40 F0 2A 88        	        call    _F_DtmfDecoder          //Call decode function to get DTMF data
                            	
00008E74 40 F1              	        int     off
00008E75 C0 95              	        r2 = [CidFlag]
00008E76 0A B5 FF FD        	        r2 &= ~B_DtmfReady              //clear flag of  DTMF sample data ready
00008E78 C0 D5              	        [CidFlag] = r2
00008E79 43 F1              	        int     fiq,irq
                            	
00008E7A 50 C2              	        test    r1,0x0010;              //Check if found DTMF Data
00008E7B 09 5E              	        jz      CheckIfFsk;
                            	
00008E7C C0 93              	        R1 = [CidFlag];
00008E7D 09 C3 00 40        	        TEST    R1,B_CidIsDtmf;
00008E7F 04 5E              	        JZ      DtmfFrameNotStart;
                            	.ifdef   BoxDetDtmf
                            	        R1 = 50*512/1000;
                            	.else
00008E80 09 93 99 00        	        R1 = 300*512/1000;
                            	.endif
00008E82 19 D3 BF 00        	        [RW_512HzTmr] = R1;
                            	DtmfFrameNotStart:
00008E84 90 9A              	        RETF;
                            	
                            	CheckIfFsk:
00008E85 C0 93              	        R1 = [CidFlag];
00008E86 09 C3 00 80        	        TEST    R1,B_CidIsFsk;
00008E88 45 5E              	        JZ      DtmfFrameNotStart;
00008E89 09 93 00 08        	        R1 = 4*512;
00008E8B 19 D3 BF 00        	        [RW_512HzTmr] = R1;
00008E8D 90 9A              	        RETF;
                            	
                            	//----------------------------------------------------------------------
                            	CheckIfTimeOut:
00008E8E 11 93 BF 00        	        r1 =    [RW_512HzTmr]
00008E90 4D 4E              	        jnz     DtmfFrameNotStart;
                            	
00008E91 40 F0 A4 87        	        call    _F_DisableCidDecoder;
                            	
00008E93 11 93 8D 00        	        R1 = [_TmpDtmfCidBufPtr];
00008E95 02 4E              	        JNZ     ReceivedSomeNumber;
00008E96 80 FE F5 8E        	        GoTo    WaitNextCid;
                            	
                            	ReceivedSomeNumber:
                            	.ifdef   BoxDetDtmf
                            	        R1 = [_TmpDtmfCidBuf];
                            	        R1 &= 0x000F;
                            	        BP = Digit13;
                            	        CALL    F_ShowDigit;
                            	        CALL    _F_ClrTmpCidBuf;
                            	        CALL    _F_EnableBoxDetDTMF;
                            	        RETF;
                            	.else
00008E98 11 93 8D 00        	        R1 = [_TmpDtmfCidBufPtr];
00008E9A 43 42              	        CMP     R1,3;
00008E9B 02 1E              	        JAE     ReceivedOneCall;
00008E9C 80 FE F5 8E        	        GoTo    WaitNextCid;
                            	
                            	ReceivedOneCall:
00008E9E 40 F0 4E 8C        	        call    F_ClrLcd                //clear LCD
                            	
00008EA0 11 93 C5 00        	        R1 = [CidNumber];
00008EA2 41 02              	        R1 += 1;
00008EA3 19 D3 C5 00        	        [CidNumber] = R1;
                            	
00008EA5 40 F0 D9 8B        	        CALL    F_ShowCidNumber;
                            	
00008EA7 11 93 8D 00        	        R1 = [_TmpDtmfCidBufPtr];
00008EA9 19 D3 C6 00        	        [RPtr_CidBuf] = R1;
                            	
00008EAB 0D 9B 8E 00        	        BP = _TmpDtmfCidBuf;
00008EAD 0C 99 C7 00        	        R4 = SW_CidBuf;
00008EAF D5 92              	        R1 = [BP++];
00008EB0 D4 D2              	        [R4++] = R1;
00008EB1 D5 92              	        R1 = [BP++];
00008EB2 D4 D2              	        [R4++] = R1;
00008EB3 D5 92              	        R1 = [BP++];
00008EB4 D4 D2              	        [R4++] = R1;
00008EB5 D5 92              	        R1 = [BP++];
00008EB6 D4 D2              	        [R4++] = R1;
00008EB7 D5 92              	        R1 = [BP++];
00008EB8 D4 D2              	        [R4++] = R1;
00008EB9 D5 92              	      

⌨️ 快捷键说明

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