📄 ram2p_q.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 + -