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

📄 ram2p_q.c

📁 SDH光端机支路单元盘开发,都是作者工程实践的经验总结,具有很高的工程指导价值和现实推广前景
💻 C
字号:
/****************************************/
/* 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -