📄 cid.lst
字号:
Sunplus u'nSP Assembler - Ver. 1.14.4
Listing File Has Been Relocated
//.define BoxDetDtmf 1
.public ShareArea1
.public ShareArea2
//----------------------------------------------------------------------------------------
00000000 .OSRAM
StartOfSram:
StartOfCidSram:
00000000 00 00 CidFlag: .DW 0;
// fedc ba98 7654 3210
// |||| |||| |||| ||||
// CID is FSK --+||| |||| |||| |||+-- x
// CID is DTMF ---+|| |||| |||| ||+--- x
// Enable DTMF decoder ----+| |||| |||| |+---- x
// Enable DTMF encoder -----+ |||| |||| +----- set if it is receiving CAS
// 2 DTMF frames are rx'ed -------+||| |||+------- FSK modulation
// 1 DTMF frame is rx'ed --------+|| ||+-------- x
// It's time to check DTMF ---------+| |+--------- Bias of AGC is stable
// All FSK data are rx'ed ----------+ +---------- The rx'ed checksum is wrong
//.const B_CASDetect = 0x0008;// b3=1, set if it is receiving CAS
.const B_AgcIsStable = 0x0040 // b6=1, the bias voltage of AGC is stable
.const B_ChksumErr = 0x0080 // b7=1, checksum is erroreous, error correction is a must
.const B_FskIsOver = 0x0100 // b8=1, all FSK data are rx'ed
.const B_DtmfReady = 0x0200 // set if it is time to check DTMF
.const B_1stDtmfFrame = 0x0400 // set if a DTMF is found in the previous
// checking time
.const B_MoreDtmfFrame = 0x0800 // the current DTMF has been received, don't
// care its residue. Hunt for the next DTMF
.const B_EncodeDtmf = 0x1000 // set if it is necessary to send DTMF
.const B_DecodeDtmfFsk = 0x2000 // set if it is necessary to receive DTMF
// * b14,b15 should be reserved for CID Type
// because it's frequently checked by 8KHz
// interrupt. b15 is used to reduce cycles.
.const B_CidIsDtmf = 0x4000 // * b14=0 - CID is not identified yet
// * 1 - CID is DTMF type
.const B_CidIsFsk = 0x8000 // * b15=0 - CID is not identified yet
// * 1 - CID is FSK type
//----------------------------------------------------------------------------------------
DtmfSampleCount:
00000001 00 00 FskCidState: .DW 0;
00000002 00 00 DtmfGainPower: .DW 0;
00000003 00 00 00 00 ShareArea1: .DW 61 DUP(0)
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00
//----------------------------------------------------------------------------------------
00000040 .ORAM
//ShareArea2: .DW 343 DUP(0); //for SPT6605_Decode_V05J_20040723.lib
//ShareArea2: .DW 403 DUP(0); //for SPT6605_Decode_050517.lib
//ShareArea2: .DW 93 DUP(0); //for GPTC6606 Europe
00000040 00 00 00 00 ShareArea2: .DW (93+32+1) DUP(0); //for GPTC6606 USA
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
.define GPTC6606
.ifndef GPTC6606
.const FskCidBuf = ShareArea2+34;
.else
.const FskCidBuf = ShareArea2+33;
.endif
.const FskData = ShareArea2+84;
.const B_FskDataReceived = 0x0100; // b8=1, set if it received FSK Byte
000000BE 00 00 EndOfCidSram: .DW 0;
.if 0
.public TmpDtmfCidBufPtr;
.public TmpDtmfCidBuf;
.public TmpRxedDtmf;
.public TmpLastDtmf;
.public _TmpDtmfCidBufPtr;
.public _TmpDtmfCidBuf;
.public _TmpRxedDtmf;
.public _TmpLastDtmf;
TmpDtmfCidBufPtr: .DW 0;
TmpDtmfCidBuf: .DW 8 DUP(0);
TmpRxedDtmf: .DW 0;
TmpLastDtmf: .DW 0;
.const _TmpDtmfCidBufPtr = TmpDtmfCidBufPtr;
.const _TmpDtmfCidBuf = TmpDtmfCidBuf;
.const _TmpRxedDtmf = TmpRxedDtmf;
.const _TmpLastDtmf = TmpLastDtmf;
.endif
//============== DTMF Generator External Function ========================//
.external _F_EnableDtmfEncoder_SW;
.external _F_StopDtmf_SW;
//============== CID Decoder External Function ===========================//
.external _F_EnableCidDecoder;
.external _F_EnableBoxDetDTMF;
.external _F_DisableCidDecoder
.external _F_ClrTmpCidBuf;
.external _F_DtmfDecoder;
.if 1
.external _TmpDtmfCidBufPtr;
.external _TmpDtmfCidBuf;
.external DtmfFlag;
.endif
//----------------------------------------------------------------------------*/
.external _IRQ4;
.public _FIQ;
.public _IRQ0;
.public _IRQ1;
.public _IRQ2;
.public _IRQ3;
.public _IRQ5;
.public _IRQ6;
.public _IRQ7;
.public _BREAK;
.public _main;
//----------------------------------------------------------------------
.const RW_FskTotalByteCnt = ShareArea1;
.const RW_FskByteCnt = ShareArea1+1;
//----------------------------------------------------------------------
.const StackSize = 40
.const StackBottom = 0x03FF
.const StackTop = StackBottom - StackSize + 1
//----------------------------------------------------------------------
000000BF .RAM
000000BF 00 00 RW_512HzTmr: .DW 0;
000000C0 00 00 CidState: .DW 0;
000000C1 00 00 RPtr_LcdDigit: .DW 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -