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

📄 c_trkout.lst

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


DOS C51 COMPILER V3.96, COMPILATION OF MODULE C_TRKOUT
OBJECT MODULE PLACED IN C_TRKOUT.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE C_TRKOUT.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          extern unsigned char mfc_req(unsigned char trk_num,unsigned char send_type);//请求MFC通道
   9          extern mfc_release(unsigned char mfc_num);//释放MFC通道
  10          
  11          extern dtmf_release(unsigned char dtmf_num);//释放DTMF通道
  12          extern unsigned char dtmf_req(unsigned char trk_num,unsigned char type);//请求DTMF通道
  13          
  14          extern command(unsigned char x,unsigned char y,unsigned char z,unsigned char i,unsigned char j,unsigned ch
             -ar k,unsigned char l,unsigned char m,
  15          			   unsigned char n,unsigned char o,unsigned char p,unsigned char q,unsigned char r,unsigned char s,unsi
             -gned char t,unsigned char u);
  16          
  17          extern connect(unsigned char i_slot,unsigned char o_slot);//用于连接两个时隙
  18          extern no_sound(unsigned char para1);//无音处理
  19          extern sig_req(unsigned char para1, unsigned char para2);//发送线路信令
  20          
  21          extern user_release(unsigned char user_num);//释放呼出资源
  22          
  23          extern audio_play(unsigned char audio_num,unsigned char duan_num);//放音程序
  24          extern audio_stop(unsigned char audio_num);//停止目前操作
  25          
  26          send_mfc_out(unsigned char mfc_num,unsigned char mfc_data)//出中继MFC发送
  27          {
  28   1      	unsigned char xdata temp;
  29   1      	temp = 1;
  30   1      	while(temp)
  31   1      	{
  32   2          	if(((MFC_W_R >> (2 * mfc_num + 4)) & 0x01) != 0x01)//判断此通道是否可写
  33   2          	{
  34   3                  XBYTE[chat_mfc_resource[mfc_num].addr] = 0x3d;//设置为发前项,收后项
  35   3                  temp = 0;
  36   3              }
  37   2          }   
  38   1          temp = 1;
  39   1          mfc_data = (mfc_data & 0x0f);
  40   1      	while(temp)
  41   1      	{
  42   2          	if(((MFC_W_R >> (2 * mfc_num + 4)) & 0x01) != 0x01)//判断此通道是否可写
  43   2          	{
  44   3                  XBYTE[chat_mfc_resource[mfc_num].addr] = 0x80 + mfc_data;//发送要发的数据
  45   3                  temp = 0;
  46   3              }
  47   2          }
  48   1      }
  49          
  50          false_p(unsigned char user_num)//呼叫失败处理子程序
  51          {
  52   1      	user_e1[user_num].false++;
  53   1      	dtmf_release(user_e1[user_num].dtmf);//释放DTMF资源
C51 COMPILER V3.96,  SN-83203013  C_TRKOUT                                                 03/06/04  11:31:47  PAGE 2   

  54   1      	if((user_e1[user_num].false > 2) || (user_test_num == IDLE))
  55   1      	{
  56   2      		user_release(user_num);
  57   2      	}
  58   1      	user_e1[user_num].user_index = 0;
  59   1      	user_e1[user_num].mfc_state = IDLE;
  60   1      }
  61          
  62          out_mfc_line(unsigned char user_num)// 出中继MFC互控处理
  63          {
  64   1      	unsigned char xdata trk_j,trk_k,temp[8];
  65   1      	switch(user_e1[user_num].mfc_state)//MFC状态			
  66   1      	{
  67   2      		case MFC_START ://开始MFC互控
  68   2      		{
  69   3      			if(user_e1[user_num].telephone[0] == 0x0a)//如果第一位为0
  70   3      			{
  71   4      				user_e1[user_num].kd = 2;//长途自动呼叫
  72   4      			}
  73   3      			else
  74   3      			{
  75   4      				if(user_e1[user_num].telephone[1] == 1)//如果第二位为1
  76   4      				{
  77   5      					if((user_e1[user_num].telephone[2] == 0x0a) || (user_e1[user_num].telephone[2] == 7))
  78   5      					{//在第二位为1时,如果第三位为0或7
  79   6      						user_e1[user_num].kd = 2;//长途自动呼叫
  80   6      					}
  81   5      					else
  82   5      					{
  83   6      						user_e1[user_num].kd = 3;//市话业务
  84   6      					}
  85   5      				}
  86   4      				else
  87   4      				{
  88   5      					user_e1[user_num].kd = 3;//市话业务
  89   5      				}
  90   4      			}
  91   3      			if(user_e1[user_num].telephone[user_e1[user_num].user_index] != IDLE)//第一位号码为正常
  92   3      			{
  93   4      				send_mfc_out(user_e1[user_num].mfc,user_e1[user_num].telephone[user_e1[user_num].user_index]);//发送第
             -一位号码
  94   4      				if((user_monitor_num == user_num) || (user_test_num == user_num))//判断此端口是否为呼出测试端口或监视

⌨️ 快捷键说明

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