📄 soundintel.lst
字号:
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SOUNDINTEL
OBJECT MODULE PLACED IN SoundInTel.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SoundInTel.c OPTIMIZE(2,SIZE) BROWSE NOAREGS DEBUG OBJECTEXTEND
stmt level source
1 /***************************************************************************
2 //Actpro International (SZ) Ltd
3 //Project :
4 //File :SoundInTel.c Compiler:Keil
5 //Editor: LIUYI
6 //Data: 25-12-29 Ver:
7 //General Function
8
9
10 */
11 #include <switch.h>
12
13 #define CD_1 0
14 #define CD_0 1
15
16 void SoundInTelInit();
17 void ConnectTowPoint(UCHAR point_x,UCHAR point_y);
18 void CutTowPoint(UCHAR point_x,UCHAR point_y);
19 void DecordDTMF();
20 void StarDecordDTMF(UCHAR SingleAddress);
21 void ReleaseDTMFRes(UCHAR originresID);
22 UCHAR GetDTMFResNum(UCHAR originresID);
23 void ConnectTowPoint_CD22100(UCHAR x,UCHAR y);
24 void CutTowPoint_CD22100(UCHAR x,UCHAR y);
25 void DTMFSend();
26 void WriteHintSound(UCHAR tel,UCHAR state,UCHAR num);
27 UCHAR ReadHintSound(UCHAR tel,UCHAR state);
28 void DealHintSound();
29 void SetExtTelQuietSound(UCHAR telnum);
30 void SetExtTelErrorSound(UCHAR telnum);
31 void SetExtTelWaitSound(UCHAR telnum);
32 UCHAR ReadHintSound(UCHAR tel,UCHAR item);
33 void WriteHintSound(UCHAR tel,UCHAR item,UCHAR num);
34
35 xdata UCHAR EXTTelHintSound[ExtTelNum][4] _at_ 0x200;//存储提示音的类型 typ、state、timeh、timel
36 xdata UCHAR DTMF_Decord[DTMF_DecordResouceNum][15] _at_ 0x220;//DTMF解码资源
37 //DTMF_DecordResouceNum=2; 5:State(1) SoundInput(1) length(1) data(12)
38 xdata UCHAR soundway[16][8] _at_ 0x240;//8816语音通路状态
39 //x(16) y(8)
40 UCHAR ReadDTMF_Decord(UCHAR res,UCHAR item);
41 void WriteDTMF_Decord(UCHAR res,UCHAR item,UCHAR num);
42 UCHAR Readsoundway(UCHAR x,UCHAR y);
43 void Writesoundway(UCHAR x,UCHAR y,UCHAR num);
44 void SoundWayLoop(void);
45
46 idata UCHAR DTMFSendStep;
47 idata UCHAR DTMFData;
48 idata UCHAR DTMFStandingTime;
49
50 void SoundInTelInit()
51 {
52 1 idata UCHAR i,j;
53 1
54 1 //cut all connection
55 1 for(i=0;i<16;i++)
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 2
56 1 {
57 2 for(j=0;j<8;j++)
58 2 {
59 3 Readsoundway(i,j);
60 3 Writesoundway(i,j,0);
61 3 }
62 2 }
63 1
64 1 //cut all connection in CD22100
65 1 for(i=1;i<5;i++)
66 1 {
67 2 for(j=1;j<5;j++)
68 2 {
69 3 CutTowPoint_CD22100(i,j);
70 3 }
71 2 }
72 1
73 1 //data init
74 1 for(i=0;i<DTMF_DecordResouceNum;i++)
75 1 {
76 2 for(j=0;j<15;j++)
77 2 {
78 3 ReadDTMF_Decord(i,j);
79 3 WriteDTMF_Decord(i,j,0);
80 3 }
81 2 }
82 1
83 1 DTMFSendStep=0;
84 1 DTMFData=0;
85 1 DTMFStandingTime=0;
86 1 }
87
88 void Writesoundway(UCHAR x,UCHAR y,UCHAR num)
89 {
90 1 PORT_STORE=PORT;
91 1 RCON=RCON_Bank2;
92 1
93 1 soundway[x][y]=num;
94 1
95 1 RCON=RCON_Bank0;
96 1 PORT=PORT_STORE;
97 1 return;
98 1 }
99 UCHAR Readsoundway(UCHAR x,UCHAR y)
100 {
101 1 idata UCHAR temp;
102 1
103 1 PORT_STORE=PORT;
104 1 RCON=RCON_Bank2;
105 1
106 1 temp=soundway[x][y];
107 1
108 1 RCON=RCON_Bank0;
109 1 PORT=PORT_STORE;
110 1
111 1 return(temp);
112 1 }
113
114 void WriteDTMF_Decord(UCHAR res,UCHAR item,UCHAR num)
115 {
116 1 PORT_STORE=PORT;
117 1 RCON=RCON_Bank2;
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 3
118 1
119 1 DTMF_Decord[res][item]=num;
120 1
121 1 RCON=RCON_Bank0;
122 1 PORT=PORT_STORE;
123 1 return;
124 1 }
125 UCHAR ReadDTMF_Decord(UCHAR res,UCHAR item)
126 {
127 1 idata UCHAR temp;
128 1
129 1 PORT_STORE=PORT;
130 1 RCON=RCON_Bank2;
131 1
132 1 temp=DTMF_Decord[res][item];
133 1
134 1 RCON=RCON_Bank0;
135 1 PORT=PORT_STORE;
136 1
137 1 return(temp);
138 1 }
139
140
141 void WriteHintSound(UCHAR tel,UCHAR item,UCHAR num)
142 {
143 1 PORT_STORE=PORT;
144 1 RCON=RCON_Bank2;
145 1
146 1 EXTTelHintSound[tel][item]=num;
147 1
148 1 RCON=RCON_Bank0;
149 1 PORT=PORT_STORE;
150 1 return;
151 1 }
152 UCHAR ReadHintSound(UCHAR tel,UCHAR item)
153 {
154 1 idata UCHAR temp;
155 1
156 1 PORT_STORE=PORT;
157 1 RCON=RCON_Bank2;
158 1
159 1 temp=EXTTelHintSound[tel][item];
160 1
161 1 RCON=RCON_Bank0;
162 1 PORT=PORT_STORE;
163 1
164 1 return(temp);
165 1 }
166
167 void SetExtTelWaitSound(UCHAR telnum)
168 {
169 1 WriteHintSound(telnum,TYPE,HintSoundType_wait);
170 1 WriteHintSound(telnum,STATE,STATE_ON); //450提示音接通状态
171 1 WriteHintSound(telnum,TIMEH,0); //时间设置
172 1 WriteHintSound(telnum,TIMEL,0);
173 1 Writesoundway(telnum,HINTSOUND,ON); //接通通道
174 1 //将分机设置为等待提示音状态
175 1 }
176
177 void SetExtTelErrorSound(UCHAR telnum)
178 {
179 1 WriteHintSound(telnum,TYPE,HintSoundType_error);
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 4
180 1 WriteHintSound(telnum,STATE,STATE_ON); //450提示音接通状态
181 1 WriteHintSound(telnum,TIMEH,0); //时间设置
182 1 WriteHintSound(telnum,TIMEL,0);
183 1 Writesoundway(telnum,HINTSOUND,ON); //接通通道
184 1 //将分机设置为错误提示音状态
185 1 }
186
187 void SetExtTelQuietSound(UCHAR telnum)
188 {
189 1 WriteHintSound(telnum,TYPE,HintSoundType_quiet);
190 1 WriteHintSound(telnum,STATE,STATE_OFF); //450提示音关闭状态
191 1 WriteHintSound(telnum,TIMEH,0);
192 1 WriteHintSound(telnum,TIMEL,0);
193 1 Writesoundway(telnum,HINTSOUND,OFF);
194 1 //将分机设置为正常状态,无提示音
195 1 }
196
197 void DealHintSound() //每2MS调用一次
198 {
199 1 idata UCHAR i;
200 1 idata WORD temp;
201 1
202 1 for(i=0;i<ExtTelNum;i++)
203 1 {
204 2 if(ReadHintSound(i,TYPE)==HintSoundType_error)
205 2 {//错误提示音
206 3 temp=ReadHintSound(i,TIMEH);
207 3 temp=(temp<<8)+ReadHintSound(i,TIMEL);
208 3 if(temp<HintSound_350MS)
209 3 {//时间还没有达到
210 4 temp++;
211 4 WriteHintSound(i,TIMEH,(temp>>8));
212 4 WriteHintSound(i,TIMEL,(temp));
213 4 }
214 3 else
215 3 {//时间已经达到
216 4 WriteHintSound(i,TIMEH,0);
217 4 WriteHintSound(i,TIMEL,0);
218 4 if(ReadHintSound(i,STATE)==STATE_ON) //状态翻转
219 4 {//断开状态
220 5 WriteHintSound(i,STATE,STATE_OFF);
221 5 Writesoundway(i,HINTSOUND,ON);
222 5 }
223 4 else
224 4 {//接通状态
225 5 WriteHintSound(i,STATE,STATE_ON);
226 5 Writesoundway(i,HINTSOUND,OFF);
227 5 }
228 4 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -