问题 问答题 简答题

单板机数码为什么乱闪?

答案

参考答案:

以单板机作线切割操控系统已有20多年,目前正在服役的线切割机以单板机作控制的约占总量的85%,其主要原因是单板机的稳定可靠和操作简单,可以说单板机的控制系统技术成熟,久经考验,有极大的社会认同度。

目前我公司生产的线切割是以C51单板机做主控系统,外加E58承担操作及显示,功能得到扩展,操作习惯与以往无大差异,可靠性更高了。且显示系统采用16位全要素显示,使操作者可随时查到任何控制数据信息。

但偶尔会发现数码在无规律乱闪,这大多是电源系统发生故障,如交流供电严重不稳,出现较高频次的断续供电。也可能单板机自己的电源系统出了毛病,如5V三端稳压块开路,电源滤波电容容量太少或严重漏电。桥式整流的半臂断路等。极少出现主板原因。如果经证实是主板电路损坏或RAM存储丢失,本公司将立即招回单板机,并快速恢复用户的整机操控系统,只是这种情况是很难一遇的。

因各种非法或误操作,通常不会出现乱闪,仅是显示某种错误而已,用待命、上档、L4键一般可恢复单板机起始状态,最多关一次电源重开罢了。

填空题
填空题

阅读以下说明和C程序,填充函数中的空缺。
[说明]
N个游戏者围成一圈,从1~N顺序编号,游戏方式如下;从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。
下面的函数playing(Linklist head)模拟上述游戏过程并返回获胜者的编号。其中,N个人围成的圈用一个包含N个结点的单循环链表来表示,如图1所示,游戏者的编号放在结点的数据域中。


在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量c(初值为1)用于计数,指针变量p的初始值为head(如图1所示)。游戏时,从p所指向的结点开始计数,p沿链表中的指针方向遍历结点,c的值随p的移动相应地递增。当c计数到2时,就删除p所指结点的下一个结点(因下一个结点就表示报数到3的游戏者),如图2所示,然后将c设置为0后继续游戏过程。


结点类型定义如下:
typedef struct node
int code; /*游戏者的编号*/
struct node *next;
NODE, *LinkList;
[C函数]
int P1aying(LinkList head,int n)
/*head指向含有n个结点的循环单链表的第一个结点(即编号为1的游戏者)*/
LinkList p=head,q;
int thewinner,c=1;
while(n>______)
if(c==2) /*当c等于2时,p所指向结点的后继即为将被删除的结点*/
q=p->next;
p->next=______;
printf("%d\t",q->code); /*输出退出圈子的游戏者编号*/
free(q);
/*if*/
p=______;
/*while*/
theWinner=______;
free(p);
return theWinner; /*返回最后一个游戏者(即获胜者)的编号*/