ram2p_q.c

来自「SDH光端机支路单元盘开发,都是作者工程实践的经验总结,具有很高的工程指导价值和」· C语言 代码 · 共 83 行

C
83
字号
/****************************************/
/* Copyright (c) 2004, 通信工程学院戴佳 */
/* All rights reserved.                 */
/* 作    者:戴佳                       */
/****************************************/

#include <other.h>
bit get_sem(uchar *sem_type);
struct instruction ProValue;
struct instruction AddrToStruct(uint excur_addr);
void ProvMap(struct instruction ProMapValue);
void ProvLoop(struct instruction ProLoopValue);
void ProvNoLoop(struct instruction ProNoLpVal);
void ProvPRBS(struct instruction ProValue);
void ProvRDI(struct instruction ProValue);
void ProvESVAL(struct instruction ProValue);
void ProvSESVAL(struct instruction ProValue);
void ProvUSVAL(struct instruction ProValue);
void ProvCLK(struct instruction ProValue);

//查询引起中断的双口ram内存储值并作配置
void Ram2p_q()
{
   if (get_sem(&PRO_SEM)==1)
   {
      Pro_Rd=*(AddrDPR+13);
      Pro_Wr=*(AddrDPR+14);
   }
   PRO_SEM=0xFF;
   while(Pro_Rd!=Pro_Wr)
   {
      WDI=1;
      WDI=0;
      ProValue=AddrToStruct(PROQ_ST_ADDR_H*256+PROQ_ST_ADDR_L+Pro_Rd*LEN_INSTRUC);
      switch (ProValue.oper_obj)
      {
        case PROMAP:
           ProvMap(ProValue); break;  //配置映射      
        case PROLOOP:     //环回配置
          if (ProValue.ObjVal[0]==0)
            ProvNoLoop(ProValue);
          else
            ProvLoop(ProValue);
          break;
        case PROPRBS:
          ProvPRBS(ProValue);
          break;
        case PRORDI:
          ProvRDI(ProValue);
          break;
        case PROCLKSEL:
          ProvCLK(ProValue);
          break;
        case PROESVAL:
          ProvESVAL(ProValue);
          break;
        case PROSESVAL:
          ProvSESVAL(ProValue);
          break;
        case PROUSVAL:
          ProvUSVAL(ProValue);
          break;
        case PRORESET:
          while (1)
          {
          };
          break;
        case PROPEREN:
          FgPEREn[ProValue.ObjVal[2]]=ProValue.ObjVal[1];
          break;
      }
      if (get_sem(&PRO_SEM)==1)
      {
        Pro_Wr=*(AddrDPR+14);
      }
      PRO_SEM=0xFF;
      Pro_Rd++;
   }
   if (get_sem(&PRO_SEM)==1)
      *(AddrDPR+13)=Pro_Rd;
   PRO_SEM=0xFF;
}

⌨️ 快捷键说明

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