4145|8

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

面试题(C语言版转过来的) [复制链接]

我妹妹的一个面试题,让写这个程序的详细功能,和对这个程序做出优化。

我妹理解的:本程序功能:检测信号,当检测时间超过25s时,表示有系统故障,将p2拉高,延时12*42s。当检测到上升沿到来时,LED灯显示,且读取p2口对应12个地址状态(数组中定义)。


对方嫌不满意,不详细, 各位高手,帮忙看看这个程序吧。


#include "reg52.H"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int

sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P1_5 = 0x95;
sbit P2_7 = 0xA7;
sbit IntSignal=0xB5;
sfr  WDT_CONTR=0xe1;
sbit CS=0xe9;
uchar Addr;
uint msCount;

uchar SignalTimeOut;
uchar SignalTime;
uint ProcLEDTime;
uchar State_p2;
bit erro=0;
bit StateTime=0;
bit RSState=0;
uint ClockMs,ClockS;
uint TempClockS;
uchar S_State,M_State,E_State;
uchar Move_State;
uchar State;
bit Erro_ri=0;
bit SignalState;
bit rise;
bit ProcStop;


uchar code StateTab[12]={0xbe,0xde,0xee,0xf6,
0xbd,0xdd,0xed,0xf5,
0xbb,0xdb,0xeb,0xf3,};

/*__________________________
读取P2口状态
----------------------------*/
void Statecode(uchar State_code)
{
switch (State_code)
{  case 0xbe: State_p2=0; break;
  case 0xde: State_p2=1; break;
  case 0xee: State_p2=2; break;
  case 0xf6: State_p2=3; break;
  case 0xbd: State_p2=4; break;
  case 0xdd: State_p2=5; break;
  case 0xed: State_p2=6; break;
  case 0xf5: State_p2=7; break;
  case 0xbb: State_p2=8; break;
  case 0xdb: State_p2=9; break;
  case 0xeb: State_p2=10; break;
  case 0xf3: State_p2=11; break;
  default: break;
  }
}

void mDelay(uint Dat)
{
uint j;
for (;Dat>0;Dat--)
{for (j=42;j>0;j--);WDT_CONTR=0x38;}
}

void Delay10m() //10分钟延时,600秒
{
ClockMs=0;
ClockS=0;
while(ClockS <600) ;
}

/*——————————————————————————————————
故障状态
------------------------------------*/
void Error()
{
ET0=0;
P2=0xff;
mDelay(12);
P0_0=1;
erro=1;
P0_4=1;
P0_5=0;
while(1)
{
P0_3=~P0_3;
mDelay(500);
}
}

/*______________________
P2_7
-----------------------*/
void SignalCheck()
{
if(SignalTimeOut>25) Error(); //20ms内监测
else erro=0;
rise=0;
if(SignalState!=P2_7)
{
SignalState=P2_7;
rise=SignalState;
SignalTimeOut=0;
}

if(rise) SignalTime+=1;
if(P0_4&&(SignalTime==100)){P0_4=0;SignalTime=0;}
if((!P0_4)&&(SignalTime==50)){P0_4=1;SignalTime=0;}
}

/*_________________________________
P0_3
---------------------------------*/
void ProcLED()
{
if(ProcStop) {P0_3=1;return;}
ProcLEDTime+=1;
if(ProcLEDTime==2000) {P0_3=~P0_3;ProcLEDTime=0;}
}

void Timer0() interrupt 1 using 0  
{

TL0=0x9a; //
TH0=0xfe;      //
SignalTimeOut+=1;
msCount+=1;
ClockMs+=1;
if(ClockMs==1000){ClockMs=0;ClockS+=1;}
SignalCheck();  //检测上升沿
  ProcLED();
WDT_CONTR=0x38;
}

/*________________________________

--------------------------------*/
void StateProc(uchar delay)  
{
uchar i;
if(delay)
{
for(i=5;i>0;i--) { msCount=0;while(msCount <60000);} //5分钟延时
}
else
{
msCount=0;
while(msCount <20000);  //20秒延时
}

while(!rise);//检上升沿到来
msCount=0;
while(msCount <1);//延1ms
P2=0xff;//置高
    msCount=0;
while(msCount <10);//2008-03-04修10ms

/*while(!rise);//检上升沿到*/

    P2=StateTab[State];//执行
}


void IntProc()
{
if(IntSignal)return;
E_State= P1>>5;
ProcStop=0;
while(!(IntSignal&&(State==M_State)))
{
if(IntSignal)
{
if(State {State+=1;StateProc(0);}
}
else
{
if(State==E_State) while(!IntSignal);
else {State-=1;StateProc(0);}
}
}
ProcStop=1;
}
/*-------------------------------------
等待延时
-------------------------------------*/
void mDelay0(register uchar n)
{
for(n;n>1;n--) WDT_CONTR=0x38;
}

/*-------------------------------
发送地址
------------------------------*/
void SendsAddr()
{
WDT_CONTR=0x38;
TB8=0;
CS=0;
mDelay0(10);
P0_1=0;
SBUF=Addr;
while(!TI);
TI=0;
mDelay0(15);
SM2=0;
CS=1;
mDelay0(5);
}

/*------------------------------
发送数据
-----------------------------*/
void SendsData()
{
uchar temp;
WDT_CONTR=0x38;
    TB8=0;
CS=0;
mDelay0(10);
temp=P2;
Statecode(temp);
    if(!erro) SBUF=State_p2;
else SBUF=13;
while(!TI);
TI=0;
mDelay0(15);
SM2=1;
CS=1;
mDelay0(5);
   
}
/*-------------------------------
执行P0口命令
--------------------------------*/
void D_Move()
{
mDelay(1000);
WDT_CONTR=0x38;
if(State>Move_State)
{  ProcStop=0;
Erro_ri=0;
do
{
State-=1;
StateProc(0);
}
while(State>Move_State);
        ProcStop=1;
}
else if(State     {
Erro_ri=0;
ProcStop=0;
do
{
State+=1;
StateProc(0);
}while(State ProcStop=1;
}
else { Erro_ri=0; StateProc(0); }
mDelay(1000);

}
/*--------------------------------
串口中断
---------------------------------*/
void Uart() interrupt 4 using 1
{

if(RI==1)
{  uchar temp;
    uchar temp0;
    uchar Sbuftemp;
    RI=0;
Sbuftemp=SBUF;
Erro_ri=1;
mDelay0(15);
if(SM2==0)
{   

temp=Sbuftemp&0x0f;
if(temp>11) { RSState=0; Move_State=11; }
else
{  Addr=P1&0xc0;
  temp0=Sbuftemp&0xc0;
  if((temp0==Addr)||(temp0==0x00)) {  RSState=1; Move_State=temp; }
   
}
SendsData();

}

else
{

Addr=P1&0xc0;
if(Sbuftemp==Addr) SendsAddr();
else
{
SM2=1;
P0_1=1;
CS=1;

}
    }
    }
  else TI=0;
}


void main()
{
P2=0xff;P0=0xff;P1=0xff;P3=0xff;
mDelay(1000); //启动延迟时间
    SCON=0x90;
    PCON=0x00;
SM2=1;
    TH0=0xfe; //
TL0=0xa2;    //晶振4.194304 MHz  1ms定时
TMOD=0x01;      //
TR0=1;
IP=0x10;
    EA=1;
    ES=1;
ET0=1;
  Addr=P1&0xc0;
SignalState=P2_7;
WDT_CONTR=0x38;

S_State=7; //启动端口
State=S_State;

while(!rise);
P0_0=0;
ProcStop=0;
P2=StateTab[State];
   
do
{
Erro_ri=0;
State+=1;
StateProc(0);
}
while(State <11);
ProcStop=1;
    Delay10m();  //10分钟
    /*mDelay(2000);*/
M_State=11-((P1>>3)&0x3);

ProcStop=0;
while(State>M_State)
{
Erro_ri=0;
State-=1;
StateProc(0);
}
ProcStop=1;
retu: mDelay(5000);
while(Erro_ri&RSState) D_Move();
ClockMs=0;
ClockS=0;
while(ClockS <14400)        //延时4小时,14400秒
{
  if(Erro_ri&RSState) goto retu;
if(!IntSignal)
{
mDelay(1000);
if(!IntSignal)
{
TempClockS=ClockS;
IntProc();  
ClockS=TempClockS;
}
}
}
Erro_ri=0;
S_State=P1&0x07;
if(State>S_State)
{
ProcStop=0;
do
{
if(Erro_ri&RSState) goto retu;
State-=1;
StateProc(1);
}
while(State>S_State);
        ProcStop=1;
}
else if(State     {

ProcStop=0;
do
{
    if(Erro_ri&RSState) goto retu;
State+=1;
StateProc(1);
}
while(State ProcStop=1;
}
else {  if(Erro_ri&RSState) goto retu; StateProc(1); }

while(1) if(Erro_ri&RSState) goto retu;  
}
此帖出自编程基础论坛

最新回复

嘿嘿,好像以前写程序都是乱写的,现在回去看看,真想抽自己耳光。  详情 回复 发表于 2009-8-11 11:19
点赞 关注
 

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
功能好说,关键是优化部分
此帖出自编程基础论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

  1. #include "reg52.H"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit P0_0 = 0x80;
  6. sbit P0_1 = 0x81;
  7. sbit P0_2 = 0x82;
  8. sbit P0_3 = 0x83;
  9. sbit P0_4 = 0x84;
  10. sbit P0_5 = 0x85;
  11. sbit P1_5 = 0x95;
  12. sbit P2_7 = 0xA7;
  13. sbit IntSignal=0xB5;
  14. sfr  WDT_CONTR=0xe1;
  15. sbit CS=0xe9;
  16. uchar Addr;
  17. uint msCount;

  18. uchar SignalTimeOut;
  19. uchar SignalTime;
  20. uint ProcLEDTime;
  21. uchar State_p2;
  22. bit erro=0;
  23. bit StateTime=0;
  24. bit RSState=0;
  25. uint ClockMs,ClockS;
  26. uint TempClockS;
  27. uchar S_State,M_State,E_State;
  28. uchar Move_State;
  29. uchar State;
  30. bit Erro_ri=0;
  31. bit SignalState;
  32. bit rise;
  33. bit ProcStop;


  34. uchar code StateTab[12]={0xbe,0xde,0xee,0xf6,0xbd,0xdd,0xed,0xf5,0xbb,0xdb,0xeb,0xf3,};

  35. /*__________________________
  36. 读取P2口状态
  37. ----------------------------*/
  38. void Statecode(uchar State_code)
  39. {
  40.         switch (State_code)
  41.         {
  42.                 case 0xbe: State_p2=0; break;
  43.                 case 0xde: State_p2=1; break;
  44.                 case 0xee: State_p2=2; break;
  45.                 case 0xf6: State_p2=3; break;
  46.                 case 0xbd: State_p2=4; break;
  47.                 case 0xdd: State_p2=5; break;
  48.                 case 0xed: State_p2=6; break;
  49.                 case 0xf5: State_p2=7; break;
  50.                 case 0xbb: State_p2=8; break;
  51.                 case 0xdb: State_p2=9; break;
  52.                 case 0xeb: State_p2=10; break;
  53.                 case 0xf3: State_p2=11; break;
  54.                 default: break;
  55.         }
  56. }

  57. void mDelay(uint Dat)
  58. {
  59.         uint j;
  60.         for(;Dat>0;Dat--)
  61.         {
  62.                 for(j=42;j>0;j--)
  63.                         ;
  64.                 WDT_CONTR=0x38;
  65.         }
  66. }

  67. void Delay10m() //10分钟延时,600秒
  68. {
  69.         ClockMs=0;
  70.         ClockS=0;
  71.         while(ClockS <600)
  72.                 ;
  73. }

  74. /*——————————————————————————————————
  75. 故障状态
  76. ------------------------------------*/
  77. void Error()
  78. {
  79.         ET0=0;
  80.         P2=0xff;
  81.         mDelay(12);
  82.         P0_0=1;
  83.         erro=1;
  84.         P0_4=1;
  85.         P0_5=0;
  86.         while(1)
  87.         {
  88.                 P0_3=~P0_3;
  89.                 mDelay(500);
  90.         }
  91. }

  92. /*______________________
  93. P2_7
  94. -----------------------*/
  95. void SignalCheck()
  96. {
  97.         if(SignalTimeOut>25)
  98.                 Error(); //20ms内监测
  99.         else
  100.                 erro=0;
  101.         rise=0;
  102.         if(SignalState!=P2_7)
  103.         {
  104.                 SignalState=P2_7;
  105.                 rise=SignalState;
  106.                 SignalTimeOut=0;
  107.         }

  108.         if(rise)
  109.                 SignalTime+=1;
  110.         if(P0_4&&(SignalTime==100))
  111.                 {
  112.                         P0_4=0;
  113.                         SignalTime=0;
  114.                 }
  115.         if((!P0_4)&&(SignalTime==50))
  116.         {
  117.                 P0_4=1;
  118.                 SignalTime=0;
  119.         }
  120. }

  121. /*_________________________________
  122. P0_3
  123. ---------------------------------*/
  124. void ProcLED()
  125. {
  126.         if(ProcStop)
  127.         {
  128.                 P0_3=1;
  129.                 return;
  130.         }
  131.         ProcLEDTime+=1;
  132.         if(ProcLEDTime==2000)
  133.         {
  134.                 P0_3=~P0_3;
  135.                 ProcLEDTime=0;
  136.         }
  137. }

  138. void Timer0() interrupt 1 using 0
  139. {
  140.         TL0=0x9a; //
  141.         TH0=0xfe;      //
  142.         SignalTimeOut+=1;
  143.         msCount+=1;
  144.         ClockMs+=1;
  145.         if(ClockMs==1000)
  146.         {
  147.                 ClockMs=0;
  148.                 ClockS+=1;
  149.         }
  150.         SignalCheck();  //检测上升沿
  151.         ProcLED();
  152.         WDT_CONTR=0x38;
  153. }

  154. /*________________________________

  155. --------------------------------*/
  156. void StateProc(uchar delay)
  157. {
  158.         uchar i;
  159.         if(delay)
  160.         {
  161.                 for(i=5;i>0;i--)
  162.                 {
  163.                         msCount=0;
  164.                         while(msCount <60000);
  165.                 } //5分钟延时
  166.         }
  167.         else
  168.         {
  169.                 msCount=0;
  170.                 while(msCount <20000)
  171.                         ;  //20秒延时
  172.         }

  173.         while(!rise)
  174.                 ;//检上升沿到来

  175.         msCount=0;
  176.         while(msCount <1)
  177.                 ;//延1ms

  178.         P2=0xff;//置高
  179.         msCount=0;
  180.         while(msCount <10)
  181.                 ;//2008-03-04修10ms

  182.         /*while(!rise);//检上升沿到*/
  183.         P2=StateTab[State];//执行
  184. }


  185. void IntProc()
  186. {
  187.         if(IntSignal)
  188.                 return;
  189.         E_State= P1>>5;
  190.         ProcStop=0;
  191.         while(!(IntSignal&&(State==M_State)))
  192.         {
  193.                 if(IntSignal)
  194.                 {
  195.                         if(State
  196.                         {
  197.                                 State+=1;
  198.                                 StateProc(0);
  199.                         }
  200.                 }
  201.                 else
  202.                 {
  203.                         if(State==E_State)
  204.                                 while(!IntSignal)
  205.                                         ;
  206.                         else
  207.                         {
  208.                                 State-=1;
  209.                                 StateProc(0);
  210.                         }
  211.                 }
  212.         }
  213.         ProcStop=1;
  214. }

  215. /*-------------------------------------
  216. 等待延时
  217. -------------------------------------*/
  218. void mDelay0(register uchar n)
  219. {
  220.         for(n;n>1;n--)
  221.                 WDT_CONTR=0x38;
  222. }

  223. /*-------------------------------
  224. 发送地址
  225. ------------------------------*/
  226. void SendsAddr()
  227. {
  228.         WDT_CONTR=0x38;
  229.         TB8=0;
  230.         CS=0;
  231.         mDelay0(10);
  232.         P0_1=0;
  233.         SBUF=Addr;
  234.         while(!TI);
  235.         TI=0;
  236.         mDelay0(15);
  237.         SM2=0;
  238.         CS=1;
  239.         mDelay0(5);
  240. }

  241. /*------------------------------
  242. 发送数据
  243. -----------------------------*/
  244. void SendsData()
  245. {
  246.         uchar temp;
  247.         WDT_CONTR=0x38;
  248.         TB8=0;
  249.         CS=0;
  250.         mDelay0(10);
  251.         temp=P2;
  252.         Statecode(temp);
  253.         if(!erro)
  254.                 SBUF=State_p2;
  255.         else
  256.                 SBUF=13;

  257.         while(!TI)
  258.                 ;
  259.         TI=0;
  260.         mDelay0(15);
  261.         SM2=1;
  262.         CS=1;
  263.         mDelay0(5);
  264. }

  265. /*-------------------------------
  266. 执行P0口命令
  267. --------------------------------*/
  268. void D_Move()
  269. {
  270.         mDelay(1000);
  271.         WDT_CONTR=0x38;
  272.         if(State>Move_State)
  273.         {
  274.                 ProcStop=0;
  275.                 Erro_ri=0;
  276.                 do
  277.                 {
  278.                         State-=1;
  279.                         StateProc(0);
  280.                 }
  281.                 while(State>Move_State);
  282.                 ProcStop=1;
  283.         }
  284.         else if(State
  285.         {
  286.                 Erro_ri=0;
  287.                 ProcStop=0;
  288.                 do
  289.                 {
  290.                         State+=1;
  291.                         StateProc(0);
  292.                 }while(State
  293.                 ProcStop=1;
  294.         }
  295.         else
  296.         {
  297.                 Erro_ri=0;
  298.                 StateProc(0);
  299.         }
  300.         mDelay(1000);
  301. }

  302. /*--------------------------------
  303. 串口中断
  304. ---------------------------------*/
  305. void Uart() interrupt 4 using 1
  306. {
  307.         if(RI==1)
  308.         {
  309.                 uchar temp;
  310.                 uchar temp0;
  311.                 uchar Sbuftemp;
  312.                 RI=0;
  313.                 Sbuftemp=SBUF;
  314.                 Erro_ri=1;
  315.                 mDelay0(15);
  316.                 if(SM2==0)
  317.                 {
  318.                         temp=Sbuftemp&0x0f;
  319.                         if(temp>11)
  320.                         {
  321.                                 RSState=0;
  322.                                 Move_State=11;
  323.                         }
  324.                         else
  325.                         {
  326.                                 Addr=P1&0xc0;
  327.                                 temp0=Sbuftemp&0xc0;
  328.                                 if((temp0==Addr)||(temp0==0x00))
  329.                                 {
  330.                                         RSState=1;
  331.                                         Move_State=temp;
  332.                                 }
  333.                         }
  334.                         SendsData();
  335.                 }
  336.                 else
  337.                 {
  338.                         Addr=P1&0xc0;
  339.                         if(Sbuftemp==Addr)
  340.                                 SendsAddr();
  341.                         else
  342.                         {
  343.                                 SM2=1;
  344.                                 P0_1=1;
  345.                                 CS=1;
  346.                         }
  347.                 }
  348.         }
  349.         else
  350.                 TI=0;
  351. }


  352. void main()
  353. {
  354.         P2=0xff;P0=0xff;P1=0xff;P3=0xff;
  355.         mDelay(1000); //启动延迟时间
  356.         SCON=0x90;
  357.         PCON=0x00;
  358.         SM2=1;
  359.         TH0=0xfe; //
  360.         TL0=0xa2;    //晶振4.194304 MHz  1ms定时
  361.         TMOD=0x01;      //
  362.         TR0=1;
  363.         IP=0x10;
  364.         EA=1;
  365.         ES=1;
  366.         ET0=1;
  367.         Addr=P1&0xc0;
  368.         SignalState=P2_7;
  369.         WDT_CONTR=0x38;
  370.         S_State=7; //启动端口
  371.         State=S_State;
  372.         while(!rise);
  373.         P0_0=0;
  374.         ProcStop=0;
  375.         P2=StateTab[State];
  376.         do
  377.         {
  378.                 Erro_ri=0;
  379.                 State+=1;
  380.                 StateProc(0);
  381.         }while(State <11);
  382.         ProcStop=1;
  383.         Delay10m();  //10分钟
  384.         /*mDelay(2000);*/
  385.         M_State=11-((P1>>3)&0x3);
  386.         ProcStop=0;
  387.         while(State>M_State)
  388.         {
  389.                 Erro_ri=0;
  390.                 State-=1;
  391.                 StateProc(0);
  392.         }
  393.         ProcStop=1;

  394. retu: mDelay(5000);
  395.         while(Erro_ri&RSState)
  396.                 D_Move();
  397.         ClockMs=0;
  398.         ClockS=0;
  399.         while(ClockS <14400)        //延时4小时,14400秒
  400.         {
  401.                 if(Erro_ri&RSState)
  402.                         goto retu;
  403.                 if(!IntSignal)
  404.                 {
  405.                         mDelay(1000);
  406.                         if(!IntSignal)
  407.                         {
  408.                                 TempClockS=ClockS;
  409.                                 IntProc();
  410.                                 ClockS=TempClockS;
  411.                         }
  412.                 }
  413.         }
  414.         Erro_ri=0;
  415.         S_State=P1&0x07;
  416.         if(State>S_State)
  417.         {
  418.                 ProcStop=0;
  419.                 do
  420.                 {
  421.                         if(Erro_ri&RSState) goto retu;
  422.                         State-=1;
  423.                         StateProc(1);
  424.                 }while(State>S_State);
  425.                 ProcStop=1;
  426.         }
  427.         else if(State
  428.         {
  429.                 ProcStop=0;
  430.                 do
  431.                 {
  432.                         if(Erro_ri&RSState)
  433.                                 goto retu;
  434.                         State+=1;
  435.                         StateProc(1);
  436.                 }
  437.                 while(State
  438.                 ProcStop=1;
  439.         }
  440.         else
  441.         {
  442.                 if(Erro_ri&RSState)
  443.                         goto retu;
  444.                 StateProc(1);
  445.         }
  446.         while(1)
  447.                 if(Erro_ri&RSState)
  448.                         goto retu;
  449. }
复制代码
此帖出自编程基础论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
至少也得把延迟优化一下吧?难道这么久的延迟就让CPU在那里光等着?放到定时中断里判断延迟吧。
此帖出自编程基础论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 
本程序功能:检测信号,当检测时间超过25s时,表示有系统故障,将p2拉高,延时12*42s。当检测到上升沿到来时,LED灯显示,且读取p2口对应12个地址状态(数组中定义)。

我读出来的结果是

把这两个信号想办法挂到两个中断上

用定时器处理时间,

主程跑状态

代码量不到LZ发的一半
此帖出自编程基础论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
学习。
此帖出自编程基础论坛
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

7
 
"对方嫌不满意,不详细".
太多的立即数(magic number)!
此帖出自编程基础论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
你妹很强大,,,
此帖出自编程基础论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
嘿嘿,好像以前写程序都是乱写的,现在回去看看,真想抽自己耳光。
此帖出自编程基础论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表