辽宁科技大学本科生毕业设计 第27 页
在采样子程序中,当采样到某一请求信号后,启动中断,进行相应的处理操作。包括挂机处理、摘机处理、分机处理。
2. 挂机处理
当查询到SAMPING.2为1时,表示电话机已挂机,此时CPU应完成以下几点任务: (1) 挂机后,数码管不再显示通话和呼叫的床号,应切换到当前时间的显示; (2) 复位电话拨号个数计数器,保证下次摘机;
(3) 置挂机状态,接通喇叭继电器,断开接通继电器,断开齐呼继电器,停止
拨号音,停止忙音;
(4) 向分机发送挂机标志“#”。 3. 摘机处理
当查询到SAMPINGT.3为1时,表示电话机摘机,此时有两种可能的情况:一是主机呼叫分机;二是分机呼叫主机。针对这两种不同的情况,摘机处理应完成以下任务:
(1) 置振铃结束标志,断开铃流继电器;
(2) 如果是主机呼叫分机,摘机到拨号超过8秒,产生忙音,禁止拨号; (3) 置摘机标志,电话拨号计数器复位,产生拨号音,禁止忙音,断开喇叭继 电器;
(4) 如果是分机呼叫主机,在启动定时器T2后,置已发标志。 通话标志有效时,接通继电器,整备分机与主机通话。 4. 电话机处理
电话机处理主要完成对电话机使用情况的实时处理,电话机处理程序如图4.13所示。从图可以看出,电话机处理首先要完成电话机号码的接收与存储,接着进行号码的判断;如果接收的号码为“00”,则启动广播齐呼;如果接收的号码为“#+级别号+分机号”或“*+级别号+分机号”则进行护理级别的设置与删除;除此之外,则启动主机呼叫分机程序。
辽宁科技大学本科生毕业设计 第28 页
入口 存摘机计数
超过3S 产生忙音 停止拨号音接受拨号
否 1码吗? 是 是 存1号码 2码吗?
否 3码吗? 是 1码#? 否
20H.6=1,存存床号高位 是
2码 否 4码吗? 1码*? 20H.6=0,存存床号低位
是 2码 级别处理 1码0?
2码0? 1码9?
2码0? 是本次设置最大 床位有效 报警 启动齐呼
返回 发号 图4.13 电话机处理流程图
辽宁科技大学本科生毕业设计 第29 页
4.3.3 分机处理
当查询到分机请求标志SAMPINT.0为1时,表示有分机向主机呼叫。分处理要完成以下几部分工作:收分机号码、进行呼叫指示、启动语音播报、电话机振铃。
1. 收分机号码
对于接收的不同号码,应有不同的处理。当第一个号码为“B”时,接下来收到的两个号码就是输液完毕的床号,且高位在前,低位在后。为了判断接收的分机号码是第几个号码,定义CRN_C为呼叫号码个数计数器,其初值为3,每接收1次分机号码,CRN_C的值减1,这样通过CRN_C的值就可以判断接收的是第几分机号码,以及床号的高位与低位。这里还有个技术要求,接收的号码间隔要<200ms,否则拒收。为了实现收号号码间隔限时,定义RBN_C为收号限时计数器,每当收完第一个号码后,置收号限时标志28H.2为1,RBN_C为0,在定时器1中,每5ms使RBN_C加1,当第2个号码到来时,查看RBN_C中的值是否超过40,超过40应拒绝接收。
2. 呼叫指示
系统设计的最大床号为90,每一个床号又有一级护理,二级护理之分,加上呼叫指示,一个床号对应有3个指示灯进行相应的指示,因此一个床号需要3个标志位进行标记,如何才能根据呼叫的床号,正确的找到所对应的呼叫指示灯所在单元中的标志位呢?一个内存单元有8位,而一个床号只需要3个标志位,因此一个单元可以存储两个床位的状态标号,其中奇数的床号状态放在低3位,偶数的床号状态放在高4位的低3位。这样90个床号状态需要分配45个单元。见表4.1:
D7 D6 D5 D4 D3 D2 D1 D0 偶数床呼偶数床二偶数床一 奇数床呼奇数床二奇数床一 叫位 级护理位 级护理位 叫位 级护理位 级护理位 表4.1 呼叫指示
3.启动语音播报
启动语音播报流程图见4.14 和表4.2:语音播报时应考虑到以下两点: (1)语音播报时,要区分是床号,同时还应区分是呼叫还是输液完毕。 (2)如果有两个或多个分机同时呼叫时,应进行交叉语音播报。
辽宁科技大学本科生毕业设计 第30 页
S1—S4输入的控制码
0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 1 1 1 1 0 0 0
0 0 1 1 0 0 1 1 0 0 1
表4.2 语音分组表
0 1 0 1 0 1 0 1 0 1 0
输出语音
1 2 3 4 5 6 7 8 9 10 床呼叫
在播音前要根据呼叫的床号,先将语音控制码存储到指定的内存单元。在存储语音控制码时,根据语音播报情况,可分几类进行存储:如果是单号床,直接存储床号控制码;如果是“十”先存储床号的高位语音控制码,接着存储“十”的语音控制码;如果以上两种情况都不是,接着存储“十”的语音控制码,再存储床号的低位的语音控制码,接下来存储“床呼叫”或是“床输液完毕”,具体判断工作已在分机号码的接收部分完成,如果是床呼叫,控制码为“10”,是输液完毕,控制码为“11”,最后存储播音次数、呼叫的床号,以及播音结尾符“0FFH”。为了保证两个或多个分机同时呼叫时,能进行交叉语音播报,再存储语音控制码时,应从第一个播音缓冲区进行查询,如非语音结束符,就一直向下一个单元进行查询,直到查询到语音结束符“0FFH”,才将此次的语音码从下一个单元开始进行存储,播音是从语音缓冲区的首单元开始一直到语音结束符单元依次播报,这样就完成了语音交叉播报。将播音次数也存储到播音换成区中,是为了实现再没有摘机信号到来时能连续播报3次。当语音播报结束后,再播音缓冲区首单元存播音结尾符“FFH”停止语音的播报。
4.电话机振铃
语音呼叫的同时,还要使电话机响铃,以便通知相关人员接听电话。 4.3.4 语音播报
该子程序是利用单片机内部定时器产生的中断来完成的,它主要完成语音的播报及将呼叫的床号和时间存入缓冲区。将AP8821设置为CPU触发模式,该模式语音信号的输出选择是由AP8821的S1—S4引脚输入的地址决定,语音播报时由SBT引脚的高
辽宁科技大学本科生毕业设计 第31 页
脉冲触发,语音信号从VOUT1与VOUT2引脚输出。OUT2引脚被设置为语音播报指示,在进行语音播报时OUT2引脚设置为低电平,语音播报结束后OUT2引脚上升为高电平。一次完整的语音播报是通过OUT2引脚产生的中断来完成的,在启动第一个语音播报之后,OUT2引脚输出为低电平,在第一个语音播报词结束后,OUT2引脚上升为高电平,将这个上升沿信号作为外部中断INT1的中断信号,程序又进入中断处理。在中断程序中,如果查询到播音未完,就启动下一个语音播报,这样直到一次完整的语音播报结束[10]。