📄 teloperate.lst
字号:
C51 COMPILER V7.06 TELOPERATE 11/15/2007 09:02:22 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TELOPERATE
OBJECT MODULE PLACED IN TelOperate.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TelOperate.c OPTIMIZE(2,SIZE) BROWSE NOAREGS DEBUG OBJECTEXTEND
stmt level source
1 /***************************************************************************
2 //Actpro International (SZ) Ltd
3 //Project :
4 //File :TelOperate.c Compiler:Keil
5 //Editor: LIUYI
6 //Data: 25-12-28 Ver:
7 //General Function
8 1、void ExtTelRing(UCHAR RingTel); //分机振铃
9 2、void ExtTelStopRing(UCHAR StopRingTel); //停止分机振铃
10 */
11 #include <switch.h>
12
13 void TelOperateInit();
14 void TelOperateLoop();
15 void ExtTelCheck();
16 char ExtTelRing(UCHAR RingTel);
17 void RingTimeTick();
18 char ExtTelStopRing(UCHAR StopRingTel);
19 //void ResourceWatch();
20 void OutsideTelRingCheck();
21 void TakeOutsideLine(UCHAR OutsideLineNum);
22 void HoldOutsideLine(UCHAR OutsideLineNum);
23 void ReleaseOutsideTelRingCheckRes(UCHAR linenum);
24
25
26 bit State_Flag;
27 bit Store_Flag;
28
29 idata int ExtTelHoldState;
30 idata int ExtTelHoldStateStore;
31
32 idata UCHAR OutsideTelRingState;
33 idata UCHAR OutsideTelRingStateStore;
34 idata UCHAR OutsideTelRingNum[OUTSIDETELNUM][3];//记忆存储外部振铃次数
35 //2: step(2) num(1)
36 idata UCHAR OutsideTelLineState;
37
38 idata int ExtTelRingState;
39 idata UCHAR RingGroup[MaxNumAtRing][6];//振铃控制资源,MaxNumAtRing为可同时振铃数
40 //6:state(1) telphonenummber(1) ringtime(2) quiettime(2)
41
42 void TelOperateInit()
43 {
44 1 idata UCHAR i,j;
45 1
46 1 State_Flag=1;
47 1 Store_Flag=1;
48 1 ExtTelHoldState =0xff;
49 1 ExtTelHoldStateStore=0xff;
50 1
51 1 ExtTelRingState=0x0;
52 1 for(i=0;i<MaxNumAtRing;i++)
53 1 {
54 2 for(j=0;j<6;j++)
55 2 {RingGroup[i][j]=0;}
C51 COMPILER V7.06 TELOPERATE 11/15/2007 09:02:22 PAGE 2
56 2 }
57 1
58 1 OutsideTelRingState=0xff;
59 1 OutsideTelRingStateStore=0xff;
60 1 for(i=0;i<OUTSIDETELNUM;i++)
61 1 {
62 2 for(j=0;j<3;j++)
63 2 {OutsideTelRingNum[i][j]=0;}
64 2 }
65 1 OutsideTelLineState=0;
66 1 ReleaseOutsideTelRingCheckRes(0);
67 1 ReleaseOutsideTelRingCheckRes(2);
68 1 }
69
70 void TelOperateLoop()
71 {
72 1 ExtTelCheck(); //分机摘机检测
73 1 RingTimeTick(); //振铃控制过程
74 1 OutsideTelRingCheck(); //外线振铃检测
75 1 DTMFSend();
76 1 }
77
78 void ExtTelCheck()
79 {
80 1 idata UCHAR i;
81 1
82 1 EnDetectHold=0; //扩展选择
83 1 PORT=0xff;
84 1 ExtTelHoldState=PORT;
85 1 EnDetectHold=1;
86 1
87 1 if(ExtTelHoldStateStore!=ExtTelHoldState)
88 1 {
89 2 for(i=0;i<3;i++)//延时去抖动
90 2 {
91 3 EnDetectHold=0; //扩展选择
92 3 PORT=0xff;
93 3 ExtTelHoldState=PORT;
94 3 EnDetectHold=1;
95 3
96 3 if(ExtTelHoldStateStore==ExtTelHoldState){return;}
97 3 }
98 2 for(i=0;i<ExtTelNum;i++)
99 2 {
100 3 State_Flag=(bit)((ExtTelHoldState>>i)&0x01);
101 3 Store_Flag=(bit)((ExtTelHoldStateStore>>i)&0x01);
102 3
103 3 if(State_Flag)
104 3 {
105 4 if(Store_Flag)
106 4 {//正常状态
107 5 //rs232write(0x );
108 5 }
109 4 else
110 4 {//挂机动作****************
111 5 SendHoldMessage(i);
112 5 //发送挂机消息
113 5 //rs232write(0xAA);rs232write(0x02);rs232write(i+1);rs232write(0xBB);
114 5 }
115 4 }
116 3 else
117 3 {
C51 COMPILER V7.06 TELOPERATE 11/15/2007 09:02:22 PAGE 3
118 4 if(Store_Flag)
119 4 {//摘机动作****************
120 5 SendUnholdMessage(i);//发送摘机消息
121 5 //rs232write(0xAA);rs232write(0x01);rs232write(i+1);rs232write(0xBB);
122 5 }
123 4 else
124 4 {//摘机状态
125 5 //rs232write(0x );
126 5 }
127 4 }
128 3 }
129 2 ExtTelHoldStateStore=ExtTelHoldState; //更新寄存值
130 2 }
131 1 }
132
133 char ExtTelRing(UCHAR RingTel)
134 {
135 1 idata UCHAR i;
136 1 idata WORD temp;
137 1 if(RingTel>=ExtTelNum)
138 1 {
139 2 return 0xff; //超出分机范围出错
140 2 }
141 1 //检查该分机是否已经处于振铃状态
142 1
143 1 for(i=0;i<MaxNumAtRing;i++)
144 1 {
145 2 if(RingGroup[i][0]==0) //查询资源
146 2 {//首次配置资源
147 3
148 3 RingGroup[i][0]=0x01; //可以振铃
149 3 RingGroup[i][1]=RingTel; //设置振铃分机号
150 3 temp=RINGTIMELENGTH;
151 3 RingGroup[i][2]=temp>>8;
152 3 RingGroup[i][3]=temp; //设置振铃时间
153 3 temp=RINGQUIETTIMELENGTH;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -