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

📄 c_manage.lst

📁 这是电信语音聊天设备的源码
💻 LST
字号:
C51 COMPILER V3.96,  SN-83203013  C_MANAGE                                                 03/06/04  11:31:48  PAGE 1   


DOS C51 COMPILER V3.96, COMPILATION OF MODULE C_MANAGE
OBJECT MODULE PLACED IN C_MANAGE.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE C_MANAGE.C DB SYMBOLS LA

stmt level    source

   1          /************主要完成各种资源的管理和处理************/
   2          
   3          #pragma CODE DEBUG SYMBOLS OBJECTEXTEND
   4          #include <reg51.h>
   5          #include <absacc.h>
   6          #include "Const.h"
   7          #include "Extern.h"
   8          
   9          extern delay_time(unsigned int subtime);//延时子函数
  10          extern read_warn();//读取告警信息
  11          extern interface_init();//接口初始化
  12          extern sig_req(unsigned char para1, unsigned char para2);//发送线路信令
  13          
  14          void connect(unsigned char in_slot,unsigned char o_slot)//用于连接两个时隙
  15          {
  16   1      	unsigned char  i1;
  17   1      	XBYTE[CON_REG] = 0xb4;
  18   1      	i1 = o_slot >> 5;
  19   1      	o_slot = (o_slot & 0x1f);
  20   1      
  21   1      	XBYTE[CON_REG] = 0x0c;
  22   1      	XBYTE[WR_8980] = 0x18 + i1;
  23   1      	XBYTE[PORT_B] = 0;
  24   1      
  25   1      	XBYTE[CON_REG] = 0x0c;
  26   1      	XBYTE[WR_8980] = 1;
  27   1      	XBYTE[PORT_B] = 0x20 + o_slot;
  28   1      
  29   1      	XBYTE[CON_REG] = 0x0c;
  30   1      	XBYTE[WR_8980] = 0x10 + i1 ;
  31   1      	XBYTE[PORT_B] = 0x00;
  32   1      
  33   1      	XBYTE[CON_REG] = 0x0c;
  34   1      	XBYTE[WR_8980] = in_slot;
  35   1      	XBYTE[PORT_B] = 0x20 + o_slot;
  36   1      	XBYTE[CON_REG] = 0xb4;
  37   1      }
  38          
  39          no_sound(unsigned char o_slot)//无音处理
  40          {
  41   1      	unsigned char i1;
  42   1      	XBYTE[CON_REG] = 0xb4;
  43   1      	i1 = o_slot >> 5;
  44   1      	o_slot = o_slot & 0x1f;
  45   1      	XBYTE[CON_REG] = 0x0c;
  46   1      	XBYTE[WR_8980] = 0x10 + i1;
  47   1      	XBYTE[PORT_B] = 0;
  48   1      
  49   1      	XBYTE[CON_REG] = 0x0c;
  50   1      	XBYTE[WR_8980] = 0x55;
  51   1      	XBYTE[PORT_B] = 0x20 + o_slot;
  52   1      
  53   1      	XBYTE[CON_REG] = 0x0c;
  54   1      	XBYTE[WR_8980] = 0x18 + i1;
  55   1      	XBYTE[PORT_B] = 0;
C51 COMPILER V3.96,  SN-83203013  C_MANAGE                                                 03/06/04  11:31:48  PAGE 2   

  56   1      
  57   1      	XBYTE[CON_REG] = 0x0c;
  58   1      	XBYTE[WR_8980] = 0x05;
  59   1      	XBYTE[PORT_B] = 0x20 + o_slot;
  60   1      }
  61          
  62          i_net()//初始化为无音
  63          {
  64   1      	unsigned int i;
  65   1      	for(i = 0; i < 256;i++)
  66   1      	{
  67   2      		no_sound(i);
  68   2      	}
  69   1      }
  70          
  71          user_e1_init()//数字中继用户初始化
  72          {
  73   1      	unsigned char xdata temp,user_num;
  74   1      	user_monitor_num = IDLE;
  75   1      	user_test_num = IDLE;
  76   1      	for(user_num = 0;user_num < TRK_MAX;user_num++)
  77   1      	{
  78   2      		user_e1[user_num].type = CALL_CLOSE;
  79   2      		user_e1[user_num].mfc = IDLE;
  80   2      		user_e1[user_num].dtmf = IDLE;
  81   2      		user_e1[user_num].opp_num = IDLE;
  82   2      		user_e1[user_num].wait = 0;
  83   2      		user_e1[user_num].false = 0;
  84   2      		user_e1[user_num].backward_signal = RSD_IDLE;//闭塞、主叫挂机
  85   2      		user_e1[user_num].forward_signal = 0xbb;
  86   2      		user_e1[user_num].flag = LEISURE;
  87   2      		user_e1[user_num].back_flag = 0;
  88   2      		user_e1[user_num].user_age = IDLE;
  89   2      		user_e1[user_num].opp_age = IDLE;
  90   2      		user_e1[user_num].user_sex = MAN;
  91   2      		user_e1[user_num].opp_sex = WOMAN;
  92   2      		for(temp = 0;temp < 32;temp++)
  93   2      		{
  94   3      			user_e1[user_num].telephone[temp] = IDLE;
  95   3      		}
  96   2      		for(temp = 0;temp < 6;temp++)
  97   2      		{
  98   3      			user_e1[user_num].password[temp] = IDLE;
  99   3      			user_e1[user_num].number_chat[temp] = IDLE;
 100   3      		}
 101   2      		user_e1[user_num].first_select = IDLE;
 102   2      		user_e1[user_num].user_index = 0;
 103   2      		user_e1[user_num].a6_flag = 0;
 104   2      		user_e1[user_num].kd = 0;
 105   2      		user_e1[user_num].lc_state = 0;
 106   2      		user_e1[user_num].mfc_state = IDLE;
 107   2      		user_e1[user_num].user_state = IDLE;
 108   2      		user_e1[user_num].sub_status = IDLE;
 109   2      		user_e1[user_num].mfc_count = 0;
 110   2      		user_e1[user_num].delay = 0;
 111   2      		user_e1[user_num].chat_num = IDLE;
 112   2      		user_e1[user_num].chat_type = IDLE;
 113   2      		user_e1[user_num].user_mix = IDLE;
 114   2      		user_e1[user_num].user_num = IDLE;
 115   2      		user_e1[user_num].yukong_num = IDLE;
 116   2      	}
 117   1      }
C51 COMPILER V3.96,  SN-83203013  C_MANAGE                                                 03/06/04  11:31:48  PAGE 3   

 118          
 119          void init_back()//初始化回呼用户
 120          {
 121   1      	unsigned char xdata temp,i;
 122   1      	for(temp = 0;temp < 64;temp++)
 123   1      	{
 124   2      		chat_number[temp].user_num = IDLE;
 125   2      		chat_number[temp].user_sex = IDLE;
 126   2      		chat_number[temp].user_age = IDLE;
 127   2      		chat_number[temp].call_flag = 0;
 128   2      		for(i = 0;i < 6;i++)
 129   2      		{
 130   3      			chat_number[temp].telephone[i] = IDLE;
 131   3      		}
 132   2      	}
 133   1      	for(temp = 0;temp < 128;temp++)
 134   1      	{
 135   2      		user_back[temp].user_num = IDLE;
 136   2      		user_back[temp].user_sex = IDLE;
 137   2      		user_back[temp].user_age = IDLE;
 138   2      		user_back[temp].opp_sex = IDLE;
 139   2      		user_back[temp].opp_age = IDLE;
 140   2      		user_back[temp].chat_type = IDLE;
 141   2      		for(i = 0;i < 6;i++)
 142   2      		{
 143   3      			user_back[temp].telephone[i] = IDLE;
 144   3      			user_back[temp].password[i] = IDLE;
 145   3      		}
 146   2      		user_back[temp].call_flag = 0;
 147   2      	}
 148   1      }
 149          
 150          void command(unsigned char x,unsigned char y,unsigned char z,unsigned char i,unsigned char j,unsigned char
             - k,unsigned char l,unsigned char m,
 151          			unsigned char n,unsigned char o,unsigned char p,unsigned char q,unsigned char r,unsigned char s,unsigne
             -d char t,unsigned char u)
 152          {	//往后台发的命令字
 153   1      	unsigned int xdata word_tmp;
 154   1      	EA=0;
 155   1      	word_tmp = sdbt;
 156   1      	sdbuf[word_tmp] = x;
 157   1      	word_tmp++;
 158   1      	sdbuf[word_tmp] = y;
 159   1      	word_tmp++;
 160   1      	sdbuf[word_tmp] = z;
 161   1      	word_tmp++;
 162   1      	sdbuf[word_tmp] = i;
 163   1      	word_tmp++;
 164   1      	sdbuf[word_tmp] = j;
 165   1      	word_tmp++;
 166   1      	sdbuf[word_tmp] = k;
 167   1      	word_tmp++;
 168   1      	sdbuf[word_tmp] = l;
 169   1      	word_tmp++;
 170   1      	sdbuf[word_tmp] = m;
 171   1      	word_tmp++;
 172   1      	sdbuf[word_tmp] = n;
 173   1      	word_tmp++;
 174   1      	sdbuf[word_tmp] = o;
 175   1      	word_tmp++;
 176   1      	sdbuf[word_tmp] = p;
 177   1      	word_tmp++;
C51 COMPILER V3.96,  SN-83203013  C_MANAGE                                                 03/06/04  11:31:48  PAGE 4   

 178   1      	sdbuf[word_tmp] = q;
 179   1      	word_tmp++;
 180   1      	sdbuf[word_tmp] = r;
 181   1      	word_tmp++;
 182   1      	sdbuf[word_tmp] = s;
 183   1      	word_tmp++;
 184   1      	sdbuf[word_tmp] = t;
 185   1      	word_tmp++;
 186   1      	sdbuf[word_tmp] = u;
 187   1      	word_tmp++;
 188   1      	sdbt = (sdbt + 16) & 0x7f8;
 189   1      	EA = 1;
 190   1      }
 191          
 192          void yukong_init()//语控资源初始化
 193          {
 194   1      	unsigned char xdata temp;
 195   1      	yukong_count = 0;
 196   1      	for(temp = 0;temp < AUDIO_MAX;temp++)
 197   1      	{
 198   2      		yukong_resource[temp].flag = IDLE;
 199   2      		yukong_resource[temp].slot = IDLE;
 200   2      		yukong_resource[temp].addr = IDLE;
 201   2      		yukong_resource[temp].user = IDLE;
 202   2      		yukong_resource[temp].count = 0;
 203   2      		yukong_resource[temp].state = AUDIO_NO;
 204   2      	}
 205   1      }
 206          
 207          unsigned char yukong_req(unsigned char user_num)//语控资源申请
 208          {
 209   1      	unsigned char xdata temp;
 210   1      	if(yukong_count == 0)
 211   1      	{
 212   2      		return(IDLE);
 213   2      	}
 214   1      	else
 215   1      	{
 216   2      		for(temp = 0;temp < AUDIO_MAX;temp++)
 217   2      		{
 218   3      			if(yukong_resource[temp].flag == LEISURE)
 219   3      			{
 220   4      				yukong_count--;
 221   4      				command(8,2,yukong_count,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
 222   4      				user_e1[user_num].yukong_num = temp;
 223   4      				yukong_resource[temp].flag = OCCUPY;
 224   4      				yukong_resource[temp].user = user_num;
 225   4      				yukong_resource[temp].count = 0;
 226   4      				yukong_resource[temp].state = AUDIO_NO;
 227   4      				connect(user_num,yukong_resource[temp].slot);
 228   4      				return(temp); 
 229   4      			}
 230   3      		}
 231   2      	}
 232   1      }
 233          
 234          void yukong_release(unsigned char yukong_num)//语控资源释放
 235          {
 236   1      	if((yukong_num != IDLE) && (yukong_resource[yukong_num].flag == OCCUPY))
 237   1      	{
 238   2      		yukong_count++;
 239   2      		command(8,2,yukong_count,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
C51 COMPILER V3.96,  SN-83203013  C_MANAGE                                                 03/06/04  11:31:48  PAGE 5   

 240   2      		user_e1[yukong_resource[yukong_num].user].yukong_num = IDLE;
 241   2      		yukong_resource[yukong_num].flag = LEISURE;
 242   2      		yukong_resource[yukong_num].user = IDLE;
 243   2      		yukong_resource[yukong_num].count = 0;
 244   2      		yukong_resource[yukong_num].state = AUDIO_NO;
 245   2      		no_sound(yukong_resource[yukong_num].slot);
 246   2      	}
 247   1      }
 248          
 249          void chat_common_init()//公共聊天室初始化
 250          {
 251   1      	unsigned char xdata i,temp;
 252   1      	chat_common_count = 8;
 253   1      	for(i = 0;i < GRP_MAX;i++)
 254   1      	{
 255   2      		chat_common_resource[i].flag = LEISURE;
 256   2      		chat_common_resource[i].user_count = 0;
 257   2      		chat_common_resource[i].type = IDLE;
 258   2      		for(temp = 0;temp < 4;temp++)
 259   2      		{
 260   3      			chat_common_resource[i].mt8924_slot[temp] = 0xe0 + i * 4 + temp;
 261   3      			chat_common_resource[i].mt8924_user[temp] = IDLE;
 262   3      			XBYTE[M_NET1] = 0x10 | (i + 1);
 263   3      			XBYTE[M_NET1] = i * 4 + temp;
 264   3      			XBYTE[M_NET2] = tone_set;
 265   3      		}
 266   2      		for(temp = 0;temp < 16;temp++)
 267   2      		{
 268   3      			chat_common_resource[i].user_num[temp] = IDLE;
 269   3      		}
 270   2      		for(temp = 0;temp < 6;temp++)
 271   2      		{
 272   3      			chat_common_resource[i].password[temp] = IDLE;
 273   3      		}
 274   2      	}
 275   1      }
 276          
 277          unsigned char chat_common_req(unsigned char user_num,unsigned char password[6],unsigned char chat_type)//

⌨️ 快捷键说明

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